ideawave 0.0.77 → 0.0.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +14 -14
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
function J8(){let X=globalThis.performance?.now?.()??Date.now();return Math.round(X*10)/10}function G(X,W={}){if(typeof process<"u"&&process.env.IDEAWAVE_AGENT_RUNTIME_TRACE==="0")return;let Z=Object.fromEntries(Object.entries(W).filter(([,K])=>K!==void 0));console.info("[agent-runtime-trace]",JSON.stringify({event:X,epochMs:Date.now(),monotonicMs:J8(),...typeof document>"u"?{}:{visibility:document.visibilityState},...Z}))}var Y8=600000,V8=60000,d2=200,z8=2,S=new Map,B0=null;function j8(X){X.then((W)=>W.dispose()).catch(()=>{return})}function h1(X){for(let W of X.idleWaiters)W();X.idleWaiters.clear()}function b0(X,W){if(S.get(X)!==W)return;S.delete(X),h1(W),j8(W.sessionPromise)}function H8(){if(B0!==null)return;B0=setInterval(()=>{let X=Date.now();for(let[W,Z]of S){if(Z.inUse)continue;if(X-Z.lastUsed<Y8)continue;b0(W,Z)}if(S.size===0&&B0!==null)clearInterval(B0),B0=null},V8),B0.unref?.()}function w8(){if(S.size<d2)return;let X=null,W=1/0;for(let[K,J]of S){if(J.inUse)continue;if(J.lastUsed>=W)continue;X=K,W=J.lastUsed}if(!X)return;let Z=S.get(X);if(!Z)return;b0(X,Z)}function U8(){let X=0;while(S.size>d2){let W=null,Z=null;for(let[K,J]of S){if(J.inUse)continue;if(Z&&J.lastUsed>=Z.lastUsed)continue;W=K,Z=J}if(!W||!Z)break;b0(W,Z),X+=1}if(X>0)G("session_pool.global_idle_trimmed",{evictedSessions:X,poolEntries:S.size})}function F8(X){let W=Array.from(S.entries()).filter(([,K])=>K.frontendSessionId===X&&!K.inUse).sort(([,K],[,J])=>K.lastUsed-J.lastUsed),Z=W.length-z8;if(Z<=0)return;for(let[K,J]of W.slice(0,Z))b0(K,J);G("session_pool.frontend_idle_trimmed",{frontendSessionId:X,evictedSessions:Z,poolEntries:S.size})}function CX(X,W,Z){return`${X}:${W}:${Z}`}async function N1(X){let W=S.get(X.key);if(W){if(W.inUse)return G("session_pool.wait_for_idle",{frontendSessionId:W.frontendSessionId,poolEntries:S.size}),await new Promise((K)=>W.idleWaiters.add(K)),N1(X);if(W.fingerprint===X.fingerprint){W.inUse=!0,W.lastUsed=Date.now();try{let K=await W.sessionPromise;if(K.isAlive()){if(W.frontendSessionId)G("session_pool.reuse",{frontendSessionId:W.frontendSessionId,poolEntries:S.size});return K}}catch{}b0(X.key,W)}else b0(X.key,W)}let Z=X.open();if(w8(),S.set(X.key,{key:X.key,frontendSessionId:X.frontendSessionId??null,fingerprint:X.fingerprint,sessionPromise:Z,lastUsed:Date.now(),inUse:!0,idleWaiters:new Set}),H8(),X.frontendSessionId)G("session_pool.open",{frontendSessionId:X.frontendSessionId,poolEntries:S.size});try{return await Z}catch(K){let J=S.get(X.key);if(J?.sessionPromise===Z)b0(X.key,J);throw K}}function hX(X,W=!1){let Z=S.get(X);if(!Z)return;if(W){b0(X,Z);return}if(Z.inUse=!1,Z.lastUsed=Date.now(),Z.frontendSessionId)F8(Z.frontendSessionId),G("session_pool.release",{frontendSessionId:Z.frontendSessionId,poolEntries:S.size});if(U8(),S.get(X)===Z)h1(Z)}async function p2(X){let W=Array.from(S.entries()).filter(([,Z])=>Z.frontendSessionId===X);for(let[Z,K]of W)S.delete(Z),h1(K);return await Promise.all(W.map(([,Z])=>Z.sessionPromise.then((K)=>K.dispose()).catch(()=>{return}))),G("session_pool.frontend_evicted",{frontendSessionId:X,evictedSessions:W.length,poolEntries:S.size}),W.length}async function q8(){let X=Array.from(S.values());S.clear();for(let W of X)h1(W);if(B0!==null)clearInterval(B0),B0=null;await Promise.all(X.map((W)=>W.sessionPromise.then((Z)=>Z.dispose()).catch(()=>{return})))}function NX(X){let W=Object.entries(X.configValues??{}),Z=W.length>0?JSON.stringify(Object.fromEntries(W.sort(([K],[J])=>K.localeCompare(J)))):"";return[X.adapterId,X.configId??"",X.modelId??"",Z,X.mcpUrl??"",X.runFolder??"",X.toolSurface??"full"].join(" ")}var i2=!1;function B8(){if(i2)return;i2=!0;let X=()=>{q8()};process.once("beforeExit",X),process.once("SIGTERM",X),process.once("SIGINT",X)}B8();import{readFileSync as x8}from"node:fs";import{homedir as L8}from"node:os";import{join as M1}from"node:path";function P8(){let X=L8();switch(process.platform){case"win32":return process.env.APPDATA??M1(X,"AppData","Roaming");case"darwin":return M1(X,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??M1(X,".config")}}function r2(){let X=process.env.IDEAWAVE_MCP_JSON_PATH;if(X&&X.trim().length>0)return X;return M1(P8(),"ideawave","mcp.json")}var o2=null;function n2(X){o2=X}var b8=86400000;function v8(){let X;try{X=x8(r2(),"utf8")}catch{return null}let W;try{W=JSON.parse(X)}catch{return null}if(typeof W.url!=="string")return null;if(typeof W.startedAt==="string"){let Z=Date.parse(W.startedAt);if(!Number.isNaN(Z)){if(Date.now()-Z>b8)return null}}if(typeof W.pid==="number"&&W.pid>0)try{process.kill(W.pid,0)}catch(Z){if(Z?.code!=="EPERM")return null}return{url:W.url}}function s2(X,W={}){let Z=[];if(W.userId&&W.userId.trim().length>0)Z.push({name:"X-Ideawave-User-Id",value:W.userId.trim()});if(W.frontendSessionId&&W.frontendSessionId.trim().length>0)Z.push({name:"X-Ideawave-Frontend-Session-Id",value:W.frontendSessionId.trim()});if(W.toolSurface==="read")Z.push({name:"X-Ideawave-Tool-Surface",value:"read"});if(W.imagesSupported)Z.push({name:"X-Ideawave-Images-Supported",value:"1"});if(W.cardId&&W.cardId.trim().length>0)Z.push({name:"X-Ideawave-Card-Id",value:W.cardId.trim()});if(W.boardId&&W.boardId.trim().length>0)Z.push({name:"X-Ideawave-Board-Id",value:W.boardId.trim()});if(W.runFolder&&W.runFolder.trim().length>0)Z.push({name:"X-Ideawave-Run-Folder",value:W.runFolder.trim()});return{type:"http",name:"ideawave-board",url:X,headers:Z}}function MX(X={}){let W=o2;if(W)return s2(W.url,X);let Z=v8();if(!Z)return null;return s2(Z.url,X)}var t2="browser-proxy-v5",e2="browser-proxy-v6";var X6="browser-dom-snapshot-v1",y8=new Set(["hello","frontend_hello","cli_status","browser_status","bridge_probe","bridge_probe_ack","bridge_ping","bridge_pong","tool_metadata","run_turn","cancel_run","tool_result","request_tool_metadata","tool_call","partial_text","tool_activity","run_settled","runtime_rpc","runtime_rpc_result","browser_rpc","browser_rpc_result","warmup_run","warmup_result"]);function g1(X){try{let W=JSON.parse(X);if(W&&typeof W==="object"&&typeof W.type==="string"&&y8.has(W.type))return W}catch{}return null}function D1(X){return JSON.stringify(X)}import t0 from"node:fs/promises";import h8 from"node:path";import{z as D}from"zod";var W6=D.object({id:D.string(),name:D.string().nullable().default(null),description:D.string().nullable().default(null)}),K6=D.union([D.string(),D.boolean()]),O8=D.object({value:D.string(),name:D.string(),description:D.string().nullable().default(null),group:D.string().nullable().default(null),groupName:D.string().nullable().default(null)}),Z6=D.object({id:D.string(),name:D.string(),category:D.string().nullable().default(null),description:D.string().nullable().default(null),type:D.enum(["select","boolean"]),currentValue:K6.nullable().default(null),options:D.array(O8).default([])}),gX=D.record(D.string(),K6).default({}),R8=D.discriminatedUnion("kind",[D.object({id:D.string(),kind:D.literal("registered"),adapterId:D.enum(["claude-code","opencode","codex","copilot"]),displayName:D.string(),runFolder:D.string().nullable(),defaultModelId:D.string().nullable().default(null),defaultConfigValues:gX,discoveredModels:D.array(W6).default([]),discoveredConfigOptions:D.array(Z6).default([]),discoveredAt:D.string().nullable().default(null)}),D.object({id:D.string(),kind:D.literal("custom"),displayName:D.string(),command:D.string(),args:D.array(D.string()),env:D.record(D.string(),D.string()),runFolder:D.string().nullable(),defaultModelId:D.string().nullable().default(null),defaultConfigValues:gX,discoveredModels:D.array(W6).default([]),discoveredConfigOptions:D.array(Z6).default([]),discoveredAt:D.string().nullable().default(null)})]),Q6=D.object({runtimeConfigId:D.string(),runFolder:D.string().nullable(),modelId:D.string().nullable().default(null),configValues:gX}),m1=D.object({version:D.literal(1),globalDefaultConfigId:D.string().nullable(),runtimes:D.array(R8),boardOverrides:D.record(D.string(),Q6).default({}),cardOverrides:D.record(D.string(),Q6).default({})});import f8 from"node:os";import $1 from"node:path";function C8(){let X=f8.homedir();switch(process.platform){case"win32":return process.env.APPDATA??$1.join(X,"AppData","Roaming");case"darwin":return $1.join(X,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??$1.join(X,".config")}}function G1(){let X=process.env.IDEAWAVE_RUNTIME_CONFIG_PATH;if(X)return X;return $1.join(C8(),"ideawave","runtimes.json")}var N8={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},J6=new Map;function M8(X){return J6.get(X)??Promise.resolve()}function g8(X,W){J6.set(X,W)}async function Q0(X){let W=X??G1(),Z;try{Z=await t0.readFile(W,"utf-8")}catch(J){if(J.code==="ENOENT")return structuredClone(N8);throw J}return m1.parse(JSON.parse(Z))}async function V0(X,W){let Z=W??G1(),K=M8(Z).then(async()=>{let J=await Q0(Z),V=structuredClone(J),H=await X(V);return await D8(V,Z),H});return g8(Z,K.catch(()=>{return})),K}async function D8(X,W){let Z=W??G1(),K=h8.dirname(Z);await t0.mkdir(K,{recursive:!0});let J=`${Z}.tmp.${process.pid}.${Math.random().toString(36).slice(2)}`,V=JSON.stringify(X,null,2);await t0.writeFile(J,V,"utf-8");try{await t0.rename(J,Z)}catch(H){throw await t0.unlink(J).catch(()=>{return}),H}}import{spawn as l8}from"node:child_process";import{closeSync as T8,existsSync as H6,mkdirSync as w6,openSync as A8,readFileSync as c8,renameSync as a8,rmSync as U6,statSync as i8,unlinkSync as d8,writeFileSync as p8}from"node:fs";import z6 from"node:os";import m0 from"node:path";var m8=/\.(?:cmd|bat)$/i;function $8(X){return process.platform==="win32"&&m8.test(X)}function E1(X){return $8(X)?{shell:!0,windowsHide:!0}:{}}import{execFile as I8}from"node:child_process";import{promisify as S8}from"node:util";import{execFile as G8}from"node:child_process";import{promisify as E8}from"node:util";var _8=E8(G8),DX=new Map,Y6=5000,k8=/\.(?:cmd|bat|com|exe)$/i;function u8(X){let W=X.split(/\r?\n/).map((Z)=>Z.trim()).filter((Z)=>Z.length>0);if(W.length===0)return null;if(process.platform!=="win32")return W[0]??null;return W.find((Z)=>k8.test(Z))??W[0]??null}async function V6(X,W=_8){let Z=DX.get(X);if(Z&&Z.expiresAt>Date.now())return Z.value;let K=process.platform==="win32"?"where":"which";try{let{stdout:J}=await W(K,[X],{timeout:2000}),V=u8(J);return DX.set(X,{value:V,expiresAt:Date.now()+Y6}),V}catch{return DX.set(X,{value:null,expiresAt:Date.now()+Y6}),null}}class e0 extends Error{code;constructor(X,W){super(X);this.name="AcpError",this.code=W}}class D0 extends e0{constructor(X="No ACP runtime configured"){super(X,"RUNTIME_NOT_CONFIGURED");this.name="RuntimeNotConfiguredError"}}class I extends e0{constructor(X){super(X,"RUNTIME_UNREACHABLE");this.name="RuntimeUnreachableError"}}class l0 extends e0{authMethods;constructor(X,W){super(X,"AUTH_REQUIRED");this.name="AuthRequiredError",this.authMethods=W}}class H0 extends e0{constructor(X="ACP session timed out"){super(X,"SESSION_TIMEOUT");this.name="SessionTimeoutError"}}var kQ=S8(I8);function a(X,...W){return V6(X,...W)}function Z0(X){let W={};for(let[Z,K]of Object.entries(process.env))if(typeof K==="string")W[Z]=K;return{...W,...X??{}}}var $X=[{adapterId:"claude-code",runtimeBinary:"claude",packageName:"@agentclientprotocol/claude-agent-acp",version:"0.61.0",warmupArgs:["--cli","--help"]},{adapterId:"codex",runtimeBinary:"codex",packageName:"@agentclientprotocol/codex-acp",version:"1.1.7",warmupArgs:["--version"]}],r8=1800000,_1=new Map;function GX(){if(process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR)return process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR;if(process.platform==="win32"){let X=process.env.LOCALAPPDATA??m0.join(z6.homedir(),"AppData","Local");return m0.join(X,"ideawave","acp-bridges")}return m0.join(process.env.XDG_CACHE_HOME??m0.join(z6.homedir(),".cache"),"ideawave","acp-bridges")}function s8(X){return X.replace(/^@/,"").replace(/[/\\]/g,"-")}function k1(){return m0.join(GX(),"install-state.json")}function EX(X){return m0.join(GX(),`${s8(X.packageName)}@${X.version}.install.lock`)}function _X(){return process.platform==="win32"?"npx.cmd":"npx"}function kX(X){return`${X.packageName}@${X.version}`}function F6(){let X=k1();if(!H6(X))return{};try{return JSON.parse(c8(X,"utf8"))}catch{return{}}}function mX(X,W){let Z=GX();w6(Z,{recursive:!0});let K=F6();K.bridges={...K.bridges??{},[X.adapterId]:W},p8(`${k1()}.tmp`,`${JSON.stringify(K,null,2)}
|
|
3
|
-
`),a8(`${k1()}.tmp`,k1())}function q6(X){return $X.find((W)=>W.packageName===X)??null}function K0(X,W,Z){return{adapterId:X.adapterId,packageName:X.packageName,version:X.version,status:W,...Z?{error:Z}:{}}}function j6(X,W){return W?.packageName===X.packageName&&W.version===X.version}function B6(X){try{return Date.now()-i8(X).mtimeMs>r8}catch{return!1}}function o8(X){let W=EX(X);if(!H6(W))return!1;if(B6(W))return U6(W,{force:!0}),!1;return!0}function n8(X){let W=EX(X);if(w6(m0.dirname(W),{recursive:!0}),B6(W))U6(W,{force:!0});try{let Z=A8(W,"wx");return T8(Z),!0}catch{return!1}}function t8(X){d8(EX(X))}function uX(X){let W=F6().bridges?.[X.adapterId];if(j6(X,W)&&W.status==="ready")return K0(X,"ready");if(_1.has(X.adapterId)||o8(X))return K0(X,"installing");if(j6(X,W)&&W.status==="failed")return K0(X,"failed",W.error);return K0(X,"missing")}function X1(X,W){X?.onStatusChange?.(W)}function e8(X,W){let Z=uX(X);if(Z.status==="ready")return X1(W,Z),Z;if(Z.status==="installing"){let w=_1.get(X.adapterId);if(w&&W?.onStatusChange)w.then((B)=>X1(W,B));return X1(W,Z),Z}if(!n8(X))return K0(X,"installing");let K=K0(X,"installing");mX(X,K),X1(W,K);let J=()=>{},V=new Promise((w)=>{J=w});_1.set(X.adapterId,V);let H=!1,U=(w)=>{if(H)return;H=!0;try{t8(X)}catch{}mX(X,w),X1(W,w),_1.delete(X.adapterId),J(w)},F;try{let w=_X();F=l8(w,["-y",kX(X),...X.warmupArgs],{stdio:"ignore",windowsHide:!0,...E1(w)})}catch(w){let B=K0(X,"failed",w instanceof Error?w.message:String(w));return U(B),B}return F.on("error",(w)=>{U(K0(X,"failed",w.message))}),F.on("close",(w)=>{if(w===0){U(K0(X,"ready"));return}U(K0(X,"failed",`npx warmup exited ${w??"null"}`))}),F.unref(),K}function T0(X){let W=q6(X);return W?uX(W):null}async function L6(X){let W=[];for(let Z of $X){if(!await a(Z.runtimeBinary)){W.push(K0(Z,"not_needed"));continue}W.push(e8(Z,X))}return W.filter((Z)=>Z.status!=="not_needed")}function u1(X){let W=q6(X);if(!W)return null;if(uX(W).status!=="ready")return null;return{command:_X(),args:["-y",kX(W)],env:{}}}function IX(X,W){if(X.command!==_X())return!1;let Z=$X.find((K)=>X.args.includes(kX(K)));if(!Z)return!1;return mX(Z,K0(Z,"failed",W)),!0}var P6="claude",SX="@agentclientprotocol/claude-agent-acp",x6=["claude-agent-acp","claude-code-acp"],b6="Install Claude Code from https://github.com/anthropics/claude-code",v6={id:"claude-code",displayName:"Claude Code",kind:"registered",supportsImages:!0,resolveSpawnConfig:async()=>{if(!await a(P6))throw new I(`Claude Code CLI not found. ${b6}`);let W=u1(SX);if(W)return{command:W.command,args:W.args,env:Z0(W.env)};let Z=T0(SX),K=Z?.status==="installing";for(let V of x6){let H=await a(V);if(H&&!K&&Z?.status!=="failed")return{command:H,args:[],env:Z0()}}let J=Z?.status==="failed"?`Claude Code ACP bridge install failed. ${Z.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Claude Code ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new I(J)},checkReadiness:async()=>{if(!await a(P6))return{status:"not_installed",detail:b6};let W=T0(SX);if(W?.status==="ready")return{status:"ready"};if(W?.status==="installing")return{status:"not_running",detail:"Installing Claude Code ACP bridge..."};if(W?.status==="failed")return{status:"not_running",detail:W.error??"Claude Code ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};for(let Z of x6)if(await a(Z))return{status:"ready"};return{status:"not_running",detail:"Installing Claude Code ACP bridge..."}},authHint:"Run `claude login` (or set ANTHROPIC_API_KEY)."};var y6="codex",lX="@agentclientprotocol/codex-acp",O6="codex-acp",R6="Install Codex CLI from https://developers.openai.com/codex/cli",f6={id:"codex",displayName:"Codex",kind:"registered",resolveSpawnConfig:async()=>{if(!await a(y6))throw new I(`Codex CLI not found. ${R6}`);let W=u1(lX);if(W)return{command:W.command,args:W.args,env:Z0(W.env)};let Z=T0(lX),K=Z?.status==="installing",J=await a(O6);if(J&&!K&&Z?.status!=="failed")return{command:J,args:[],env:Z0()};let V=Z?.status==="failed"?`Codex ACP bridge install failed. ${Z.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Codex ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new I(V)},checkReadiness:async()=>{if(!await a(y6))return{status:"not_installed",detail:R6};let W=T0(lX);if(W?.status==="ready")return{status:"ready"};if(W?.status==="installing")return{status:"not_running",detail:"Installing Codex ACP bridge..."};if(W?.status==="failed")return{status:"not_running",detail:W.error??"Codex ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};if(await a(O6))return{status:"ready"};return{status:"not_running",detail:"Installing Codex ACP bridge..."}},authHint:"Run `codex login` (or set OPENAI_API_KEY)."};var C6="copilot",h6="copilot-acp",N6="npm i -g @github/copilot",M6={id:"copilot",displayName:"GitHub Copilot",kind:"registered",resolveSpawnConfig:async()=>{let X=await a(C6);if(X)return{command:X,args:["--acp"],env:Z0()};let W=await a(h6);if(W)return{command:W,args:[],env:Z0()};throw new I(`Copilot not installed. Run: ${N6}`)},checkReadiness:async()=>{if(await a(C6))return{status:"ready"};if(await a(h6))return{status:"ready"};return{status:"not_installed",detail:N6}},authHint:"Run `gh auth login` (or `copilot login`)."};import X9 from"node:fs/promises";function W9(X){return X.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(X)}async function g6(X){if(W9(X))try{return await X9.access(X),!0}catch{return!1}return await a(X)!==null}var D6={id:"custom",displayName:"Custom ACP",kind:"custom",resolveSpawnConfig:async(X)=>{if(X.kind!=="custom")throw new I("customAdapter received non-custom entry");if(!await g6(X.command))throw new I(`custom: command "${X.command}" not found`);return{command:X.command,args:X.args,env:Z0(X.env)}},checkReadiness:async(X)=>{if(X.kind!=="custom")return{status:"unknown"};return await g6(X.command)?{status:"ready"}:{status:"not_installed"}}};var m6="opencode",$6="Install OpenCode from https://opencode.ai",G6={id:"opencode",displayName:"OpenCode",kind:"registered",resolveSpawnConfig:async()=>{let X=await a(m6);if(!X)throw new I(`OpenCode not installed. ${$6}`);return{command:X,args:["acp"],env:Z0()}},checkReadiness:async()=>{if(!await a(m6))return{status:"not_installed",detail:$6};return{status:"ready"}},authHint:"Run `opencode auth login <provider>` (or set the provider's API-key env var)."};var E6={"claude-code":v6,opencode:G6,codex:f6,copilot:M6};function w0(X){if(X.kind==="custom")return D6;let W=E6[X.adapterId];if(!W)throw Error(`Unknown registered adapter: ${X.adapterId}`);return W}function A0(){return Object.values(E6)}var TX=new Map,I1=new Map,Z9=30000;function S1(X,W){let Z=TX.get(X);if(Z&&Z.expiresAt>Date.now())return Promise.resolve(Z.value);let K=I1.get(X);if(K)return K;let J=W().then((V)=>{return TX.set(X,{value:V,expiresAt:Date.now()+Z9}),V}).finally(()=>{I1.delete(X)});return I1.set(X,J),J}async function _6(X){let W=await Promise.all(A0().map((V)=>S1(V.id,async()=>({adapterId:V.id,...await V.checkReadiness({id:"__probe__",kind:"registered",adapterId:V.id,displayName:V.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})})))),K=(await Q0(X)).runtimes.filter((V)=>V.kind==="custom"),J=await Promise.all(K.map((V)=>S1(`custom:${V.id}`,async()=>({adapterId:V.id,...await w0(V).checkReadiness(V)}))));return[...W,...J]}async function k6(X,W){let Z=A0().find((V)=>V.id===X);if(Z)return S1(Z.id,async()=>({adapterId:Z.id,...await Z.checkReadiness({id:"__probe__",kind:"registered",adapterId:Z.id,displayName:Z.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})}));let J=(await Q0(W)).runtimes.find((V)=>V.id===X);if(!J||J.kind!=="custom")return null;return S1(`custom:${J.id}`,async()=>({adapterId:J.id,...await w0(J).checkReadiness(J)}))}function u6(){TX.clear(),I1.clear()}import{createHash as _Z,randomBytes as kZ,randomUUID as l4}from"node:crypto";import*as E0 from"css-tree";var Q9=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]),l="�",Y;(function(X){X[X.EOF=-1]="EOF",X[X.NULL=0]="NULL",X[X.TABULATION=9]="TABULATION",X[X.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",X[X.LINE_FEED=10]="LINE_FEED",X[X.FORM_FEED=12]="FORM_FEED",X[X.SPACE=32]="SPACE",X[X.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",X[X.QUOTATION_MARK=34]="QUOTATION_MARK",X[X.AMPERSAND=38]="AMPERSAND",X[X.APOSTROPHE=39]="APOSTROPHE",X[X.HYPHEN_MINUS=45]="HYPHEN_MINUS",X[X.SOLIDUS=47]="SOLIDUS",X[X.DIGIT_0=48]="DIGIT_0",X[X.DIGIT_9=57]="DIGIT_9",X[X.SEMICOLON=59]="SEMICOLON",X[X.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",X[X.EQUALS_SIGN=61]="EQUALS_SIGN",X[X.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",X[X.QUESTION_MARK=63]="QUESTION_MARK",X[X.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",X[X.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",X[X.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",X[X.GRAVE_ACCENT=96]="GRAVE_ACCENT",X[X.LATIN_SMALL_A=97]="LATIN_SMALL_A",X[X.LATIN_SMALL_Z=122]="LATIN_SMALL_Z"})(Y||(Y={}));var t={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function l1(X){return X>=55296&&X<=57343}function I6(X){return X>=56320&&X<=57343}function S6(X,W){return(X-55296)*1024+9216+W}function T1(X){return X!==32&&X!==10&&X!==13&&X!==9&&X!==12&&X>=1&&X<=31||X>=127&&X<=159}function A1(X){return X>=64976&&X<=65007||Q9.has(X)}var L;(function(X){X.controlCharacterInInputStream="control-character-in-input-stream",X.noncharacterInInputStream="noncharacter-in-input-stream",X.surrogateInInputStream="surrogate-in-input-stream",X.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",X.endTagWithAttributes="end-tag-with-attributes",X.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",X.unexpectedSolidusInTag="unexpected-solidus-in-tag",X.unexpectedNullCharacter="unexpected-null-character",X.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",X.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",X.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",X.missingEndTagName="missing-end-tag-name",X.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",X.unknownNamedCharacterReference="unknown-named-character-reference",X.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",X.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",X.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",X.eofBeforeTagName="eof-before-tag-name",X.eofInTag="eof-in-tag",X.missingAttributeValue="missing-attribute-value",X.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",X.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",X.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",X.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",X.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",X.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",X.missingDoctypePublicIdentifier="missing-doctype-public-identifier",X.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",X.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",X.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",X.cdataInHtmlContent="cdata-in-html-content",X.incorrectlyOpenedComment="incorrectly-opened-comment",X.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",X.eofInDoctype="eof-in-doctype",X.nestedComment="nested-comment",X.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",X.eofInComment="eof-in-comment",X.incorrectlyClosedComment="incorrectly-closed-comment",X.eofInCdata="eof-in-cdata",X.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",X.nullCharacterReference="null-character-reference",X.surrogateCharacterReference="surrogate-character-reference",X.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",X.controlCharacterReference="control-character-reference",X.noncharacterCharacterReference="noncharacter-character-reference",X.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",X.missingDoctypeName="missing-doctype-name",X.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",X.duplicateAttribute="duplicate-attribute",X.nonConformingDoctype="non-conforming-doctype",X.missingDoctype="missing-doctype",X.misplacedDoctype="misplaced-doctype",X.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",X.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",X.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",X.openElementsLeftAfterEof="open-elements-left-after-eof",X.abandonedHeadElementChild="abandoned-head-element-child",X.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",X.nestedNoscriptInHead="nested-noscript-in-head",X.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(L||(L={}));var J9=65536;class AX{constructor(X){this.handler=X,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=J9,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+Number(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(X,W){let{line:Z,col:K,offset:J}=this,V=K+W,H=J+W;return{code:X,startLine:Z,endLine:Z,startCol:V,endCol:V,startOffset:H,endOffset:H}}_err(X){if(this.handler.onParseError&&this.lastErrOffset!==this.offset)this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(X,0))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(X){if(this.pos!==this.html.length-1){let W=this.html.charCodeAt(this.pos+1);if(I6(W))return this.pos++,this._addGap(),S6(X,W)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,Y.EOF;return this._err(L.surrogateInInputStream),X}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){if(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(X,W){if(this.html.length>0)this.html+=X;else this.html=X;this.endOfChunkHit=!1,this.lastChunkWritten=W}insertHtmlAtCurrentPos(X){this.html=this.html.substring(0,this.pos+1)+X+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(X,W){if(this.pos+X.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(W)return this.html.startsWith(X,this.pos);for(let Z=0;Z<X.length;Z++)if((this.html.charCodeAt(this.pos+Z)|32)!==X.charCodeAt(Z))return!1;return!0}peek(X){let W=this.pos+X;if(W>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,Y.EOF;let Z=this.html.charCodeAt(W);return Z===Y.CARRIAGE_RETURN?Y.LINE_FEED:Z}advance(){if(this.pos++,this.isEol)this.isEol=!1,this.line++,this.lineStartPos=this.pos;if(this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,Y.EOF;let X=this.html.charCodeAt(this.pos);if(X===Y.CARRIAGE_RETURN)return this.isEol=!0,this.skipNextNewLine=!0,Y.LINE_FEED;if(X===Y.LINE_FEED){if(this.isEol=!0,this.skipNextNewLine)return this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()}if(this.skipNextNewLine=!1,l1(X))X=this._processSurrogate(X);if(!(this.handler.onParseError===null||X>31&&X<127||X===Y.LINE_FEED||X===Y.CARRIAGE_RETURN||X>159&&X<64976))this._checkForProblematicCharacters(X);return X}_checkForProblematicCharacters(X){if(T1(X))this._err(L.controlCharacterInInputStream);else if(A1(X))this._err(L.noncharacterInInputStream)}retreat(X){this.pos-=X;while(this.pos<this.lastGapPos)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=!1}}var _;(function(X){X[X.CHARACTER=0]="CHARACTER",X[X.NULL_CHARACTER=1]="NULL_CHARACTER",X[X.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",X[X.START_TAG=3]="START_TAG",X[X.END_TAG=4]="END_TAG",X[X.COMMENT=5]="COMMENT",X[X.DOCTYPE=6]="DOCTYPE",X[X.EOF=7]="EOF",X[X.HIBERNATION=8]="HIBERNATION"})(_||(_={}));function c1(X,W){for(let Z=X.attrs.length-1;Z>=0;Z--)if(X.attrs[Z].name===W)return X.attrs[Z].value;return null}var V9=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 l6(X){if(X>=55296&&X<=57343||X>1114111)return 65533;return V9.get(X)??X}function T6(X){let W=atob(X),Z=W.length&-2,K=new Uint16Array(Z/2);for(let J=0,V=0;J<Z;J+=2){let H=W.charCodeAt(J),U=W.charCodeAt(J+1);K[V++]=H|U<<8}return K}var cX=T6("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/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 s;(function(X){X[X.VALUE_LENGTH=49152]="VALUE_LENGTH",X[X.FLAG13=8192]="FLAG13",X[X.BRANCH_LENGTH=8064]="BRANCH_LENGTH",X[X.JUMP_TABLE=127]="JUMP_TABLE"})(s||(s={}));var c;(function(X){X[X.NUM=35]="NUM",X[X.SEMI=59]="SEMI",X[X.EQUALS=61]="EQUALS",X[X.ZERO=48]="ZERO",X[X.NINE=57]="NINE",X[X.LOWER_A=97]="LOWER_A",X[X.LOWER_F=102]="LOWER_F",X[X.LOWER_X=120]="LOWER_X",X[X.LOWER_Z=122]="LOWER_Z",X[X.UPPER_A=65]="UPPER_A",X[X.UPPER_F=70]="UPPER_F",X[X.UPPER_Z=90]="UPPER_Z"})(c||(c={}));var A6=32;function aX(X){return X>=c.ZERO&&X<=c.NINE}function z9(X){return X>=c.UPPER_A&&X<=c.UPPER_F||X>=c.LOWER_A&&X<=c.LOWER_F}function j9(X){return X>=c.UPPER_A&&X<=c.UPPER_Z||X>=c.LOWER_A&&X<=c.LOWER_Z||aX(X)}function H9(X){return X===c.EQUALS||j9(X)}var p;(function(X){X[X.EntityStart=0]="EntityStart",X[X.NumericStart=1]="NumericStart",X[X.NumericDecimal=2]="NumericDecimal",X[X.NumericHex=3]="NumericHex",X[X.NamedEntity=4]="NamedEntity"})(p||(p={}));var U0;(function(X){X[X.Legacy=0]="Legacy",X[X.Strict=1]="Strict",X[X.Attribute=2]="Attribute"})(U0||(U0={}));class iX{decodeTree;emitCodePoint;errors;constructor(X,W,Z){this.decodeTree=X,this.emitCodePoint=W,this.errors=Z}state=p.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=U0.Strict;runConsumed=0;startEntity(X){this.decodeMode=X,this.state=p.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(X,W){switch(this.state){case p.EntityStart:{if(X.charCodeAt(W)===c.NUM)return this.state=p.NumericStart,this.consumed+=1,this.stateNumericStart(X,W+1);return this.state=p.NamedEntity,this.stateNamedEntity(X,W)}case p.NumericStart:return this.stateNumericStart(X,W);case p.NumericDecimal:return this.stateNumericDecimal(X,W);case p.NumericHex:return this.stateNumericHex(X,W);case p.NamedEntity:return this.stateNamedEntity(X,W)}}stateNumericStart(X,W){if(W>=X.length)return-1;if((X.charCodeAt(W)|A6)===c.LOWER_X)return this.state=p.NumericHex,this.consumed+=1,this.stateNumericHex(X,W+1);return this.state=p.NumericDecimal,this.stateNumericDecimal(X,W)}stateNumericHex(X,W){while(W<X.length){let Z=X.charCodeAt(W);if(aX(Z)||z9(Z)){let K=Z<=c.NINE?Z-c.ZERO:(Z|A6)-c.LOWER_A+10;this.result=this.result*16+K,this.consumed++,W++}else return this.emitNumericEntity(Z,3)}return-1}stateNumericDecimal(X,W){while(W<X.length){let Z=X.charCodeAt(W);if(aX(Z))this.result=this.result*10+(Z-c.ZERO),this.consumed++,W++;else return this.emitNumericEntity(Z,2)}return-1}emitNumericEntity(X,W){if(this.consumed<=W)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(X===c.SEMI)this.consumed+=1;else if(this.decodeMode===U0.Strict)return 0;if(this.emitCodePoint(l6(this.result),this.consumed),this.errors){if(X!==c.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(X,W){let{decodeTree:Z}=this,K=Z[this.treeIndex],J=(K&s.VALUE_LENGTH)>>14;while(W<X.length){if(J===0&&(K&s.FLAG13)!==0){let H=(K&s.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let U=K&s.JUMP_TABLE;if(X.charCodeAt(W)!==U)return this.result===0?0:this.emitNotTerminatedNamedEntity();W++,this.excess++,this.runConsumed++}while(this.runConsumed<H){if(W>=X.length)return-1;let U=this.runConsumed-1,F=Z[this.treeIndex+1+(U>>1)],w=U%2===0?F&255:F>>8&255;if(X.charCodeAt(W)!==w)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();W++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(H>>1),K=Z[this.treeIndex],J=(K&s.VALUE_LENGTH)>>14}if(W>=X.length)break;let V=X.charCodeAt(W);if(V===c.SEMI&&J!==0&&(K&s.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,J,this.consumed+this.excess);if(this.treeIndex=w9(Z,K,this.treeIndex+Math.max(1,J),V),this.treeIndex<0)return this.result===0||this.decodeMode===U0.Attribute&&(J===0||H9(V))?0:this.emitNotTerminatedNamedEntity();if(K=Z[this.treeIndex],J=(K&s.VALUE_LENGTH)>>14,J!==0){if(V===c.SEMI)return this.emitNamedEntityData(this.treeIndex,J,this.consumed+this.excess);if(this.decodeMode!==U0.Strict&&(K&s.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}W++,this.excess++}return-1}emitNotTerminatedNamedEntity(){let{result:X,decodeTree:W}=this,Z=(W[X]&s.VALUE_LENGTH)>>14;return this.emitNamedEntityData(X,Z,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(X,W,Z){let{decodeTree:K}=this;if(this.emitCodePoint(W===1?K[X]&~(s.VALUE_LENGTH|s.FLAG13):K[X+1],Z),W===3)this.emitCodePoint(K[X+2],Z);return Z}end(){switch(this.state){case p.NamedEntity:return this.result!==0&&(this.decodeMode!==U0.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case p.NumericDecimal:return this.emitNumericEntity(0,2);case p.NumericHex:return this.emitNumericEntity(0,3);case p.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case p.EntityStart:return 0}}}function w9(X,W,Z,K){let J=(W&s.BRANCH_LENGTH)>>7,V=W&s.JUMP_TABLE;if(J===0)return V!==0&&K===V?Z:-1;if(V){let w=K-V;return w<0||w>=J?-1:X[Z+w]-1}let H=J+1>>1,U=0,F=J-1;while(U<=F){let w=U+F>>>1,B=w>>1,R=X[Z+B]>>(w&1)*8&255;if(R<K)U=w+1;else if(R>K)F=w-1;else return X[Z+H+w]}return-1}var x;(function(X){X.HTML="http://www.w3.org/1999/xhtml",X.MATHML="http://www.w3.org/1998/Math/MathML",X.SVG="http://www.w3.org/2000/svg",X.XLINK="http://www.w3.org/1999/xlink",X.XML="http://www.w3.org/XML/1998/namespace",X.XMLNS="http://www.w3.org/2000/xmlns/"})(x||(x={}));var L0;(function(X){X.TYPE="type",X.ACTION="action",X.ENCODING="encoding",X.PROMPT="prompt",X.NAME="name",X.COLOR="color",X.FACE="face",X.SIZE="size"})(L0||(L0={}));var e;(function(X){X.NO_QUIRKS="no-quirks",X.QUIRKS="quirks",X.LIMITED_QUIRKS="limited-quirks"})(e||(e={}));var q;(function(X){X.A="a",X.ADDRESS="address",X.ANNOTATION_XML="annotation-xml",X.APPLET="applet",X.AREA="area",X.ARTICLE="article",X.ASIDE="aside",X.B="b",X.BASE="base",X.BASEFONT="basefont",X.BGSOUND="bgsound",X.BIG="big",X.BLOCKQUOTE="blockquote",X.BODY="body",X.BR="br",X.BUTTON="button",X.CAPTION="caption",X.CENTER="center",X.CODE="code",X.COL="col",X.COLGROUP="colgroup",X.DD="dd",X.DESC="desc",X.DETAILS="details",X.DIALOG="dialog",X.DIR="dir",X.DIV="div",X.DL="dl",X.DT="dt",X.EM="em",X.EMBED="embed",X.FIELDSET="fieldset",X.FIGCAPTION="figcaption",X.FIGURE="figure",X.FONT="font",X.FOOTER="footer",X.FOREIGN_OBJECT="foreignObject",X.FORM="form",X.FRAME="frame",X.FRAMESET="frameset",X.H1="h1",X.H2="h2",X.H3="h3",X.H4="h4",X.H5="h5",X.H6="h6",X.HEAD="head",X.HEADER="header",X.HGROUP="hgroup",X.HR="hr",X.HTML="html",X.I="i",X.IMG="img",X.IMAGE="image",X.INPUT="input",X.IFRAME="iframe",X.KEYGEN="keygen",X.LABEL="label",X.LI="li",X.LINK="link",X.LISTING="listing",X.MAIN="main",X.MALIGNMARK="malignmark",X.MARQUEE="marquee",X.MATH="math",X.MENU="menu",X.META="meta",X.MGLYPH="mglyph",X.MI="mi",X.MO="mo",X.MN="mn",X.MS="ms",X.MTEXT="mtext",X.NAV="nav",X.NOBR="nobr",X.NOFRAMES="noframes",X.NOEMBED="noembed",X.NOSCRIPT="noscript",X.OBJECT="object",X.OL="ol",X.OPTGROUP="optgroup",X.OPTION="option",X.P="p",X.PARAM="param",X.PLAINTEXT="plaintext",X.PRE="pre",X.RB="rb",X.RP="rp",X.RT="rt",X.RTC="rtc",X.RUBY="ruby",X.S="s",X.SCRIPT="script",X.SEARCH="search",X.SECTION="section",X.SELECT="select",X.SOURCE="source",X.SMALL="small",X.SPAN="span",X.STRIKE="strike",X.STRONG="strong",X.STYLE="style",X.SUB="sub",X.SUMMARY="summary",X.SUP="sup",X.TABLE="table",X.TBODY="tbody",X.TEMPLATE="template",X.TEXTAREA="textarea",X.TFOOT="tfoot",X.TD="td",X.TH="th",X.THEAD="thead",X.TITLE="title",X.TR="tr",X.TRACK="track",X.TT="tt",X.U="u",X.UL="ul",X.SVG="svg",X.VAR="var",X.WBR="wbr",X.XMP="xmp"})(q||(q={}));var Q;(function(X){X[X.UNKNOWN=0]="UNKNOWN",X[X.A=1]="A",X[X.ADDRESS=2]="ADDRESS",X[X.ANNOTATION_XML=3]="ANNOTATION_XML",X[X.APPLET=4]="APPLET",X[X.AREA=5]="AREA",X[X.ARTICLE=6]="ARTICLE",X[X.ASIDE=7]="ASIDE",X[X.B=8]="B",X[X.BASE=9]="BASE",X[X.BASEFONT=10]="BASEFONT",X[X.BGSOUND=11]="BGSOUND",X[X.BIG=12]="BIG",X[X.BLOCKQUOTE=13]="BLOCKQUOTE",X[X.BODY=14]="BODY",X[X.BR=15]="BR",X[X.BUTTON=16]="BUTTON",X[X.CAPTION=17]="CAPTION",X[X.CENTER=18]="CENTER",X[X.CODE=19]="CODE",X[X.COL=20]="COL",X[X.COLGROUP=21]="COLGROUP",X[X.DD=22]="DD",X[X.DESC=23]="DESC",X[X.DETAILS=24]="DETAILS",X[X.DIALOG=25]="DIALOG",X[X.DIR=26]="DIR",X[X.DIV=27]="DIV",X[X.DL=28]="DL",X[X.DT=29]="DT",X[X.EM=30]="EM",X[X.EMBED=31]="EMBED",X[X.FIELDSET=32]="FIELDSET",X[X.FIGCAPTION=33]="FIGCAPTION",X[X.FIGURE=34]="FIGURE",X[X.FONT=35]="FONT",X[X.FOOTER=36]="FOOTER",X[X.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",X[X.FORM=38]="FORM",X[X.FRAME=39]="FRAME",X[X.FRAMESET=40]="FRAMESET",X[X.H1=41]="H1",X[X.H2=42]="H2",X[X.H3=43]="H3",X[X.H4=44]="H4",X[X.H5=45]="H5",X[X.H6=46]="H6",X[X.HEAD=47]="HEAD",X[X.HEADER=48]="HEADER",X[X.HGROUP=49]="HGROUP",X[X.HR=50]="HR",X[X.HTML=51]="HTML",X[X.I=52]="I",X[X.IMG=53]="IMG",X[X.IMAGE=54]="IMAGE",X[X.INPUT=55]="INPUT",X[X.IFRAME=56]="IFRAME",X[X.KEYGEN=57]="KEYGEN",X[X.LABEL=58]="LABEL",X[X.LI=59]="LI",X[X.LINK=60]="LINK",X[X.LISTING=61]="LISTING",X[X.MAIN=62]="MAIN",X[X.MALIGNMARK=63]="MALIGNMARK",X[X.MARQUEE=64]="MARQUEE",X[X.MATH=65]="MATH",X[X.MENU=66]="MENU",X[X.META=67]="META",X[X.MGLYPH=68]="MGLYPH",X[X.MI=69]="MI",X[X.MO=70]="MO",X[X.MN=71]="MN",X[X.MS=72]="MS",X[X.MTEXT=73]="MTEXT",X[X.NAV=74]="NAV",X[X.NOBR=75]="NOBR",X[X.NOFRAMES=76]="NOFRAMES",X[X.NOEMBED=77]="NOEMBED",X[X.NOSCRIPT=78]="NOSCRIPT",X[X.OBJECT=79]="OBJECT",X[X.OL=80]="OL",X[X.OPTGROUP=81]="OPTGROUP",X[X.OPTION=82]="OPTION",X[X.P=83]="P",X[X.PARAM=84]="PARAM",X[X.PLAINTEXT=85]="PLAINTEXT",X[X.PRE=86]="PRE",X[X.RB=87]="RB",X[X.RP=88]="RP",X[X.RT=89]="RT",X[X.RTC=90]="RTC",X[X.RUBY=91]="RUBY",X[X.S=92]="S",X[X.SCRIPT=93]="SCRIPT",X[X.SEARCH=94]="SEARCH",X[X.SECTION=95]="SECTION",X[X.SELECT=96]="SELECT",X[X.SOURCE=97]="SOURCE",X[X.SMALL=98]="SMALL",X[X.SPAN=99]="SPAN",X[X.STRIKE=100]="STRIKE",X[X.STRONG=101]="STRONG",X[X.STYLE=102]="STYLE",X[X.SUB=103]="SUB",X[X.SUMMARY=104]="SUMMARY",X[X.SUP=105]="SUP",X[X.TABLE=106]="TABLE",X[X.TBODY=107]="TBODY",X[X.TEMPLATE=108]="TEMPLATE",X[X.TEXTAREA=109]="TEXTAREA",X[X.TFOOT=110]="TFOOT",X[X.TD=111]="TD",X[X.TH=112]="TH",X[X.THEAD=113]="THEAD",X[X.TITLE=114]="TITLE",X[X.TR=115]="TR",X[X.TRACK=116]="TRACK",X[X.TT=117]="TT",X[X.U=118]="U",X[X.UL=119]="UL",X[X.SVG=120]="SVG",X[X.VAR=121]="VAR",X[X.WBR=122]="WBR",X[X.XMP=123]="XMP"})(Q||(Q={}));var U9=new Map([[q.A,Q.A],[q.ADDRESS,Q.ADDRESS],[q.ANNOTATION_XML,Q.ANNOTATION_XML],[q.APPLET,Q.APPLET],[q.AREA,Q.AREA],[q.ARTICLE,Q.ARTICLE],[q.ASIDE,Q.ASIDE],[q.B,Q.B],[q.BASE,Q.BASE],[q.BASEFONT,Q.BASEFONT],[q.BGSOUND,Q.BGSOUND],[q.BIG,Q.BIG],[q.BLOCKQUOTE,Q.BLOCKQUOTE],[q.BODY,Q.BODY],[q.BR,Q.BR],[q.BUTTON,Q.BUTTON],[q.CAPTION,Q.CAPTION],[q.CENTER,Q.CENTER],[q.CODE,Q.CODE],[q.COL,Q.COL],[q.COLGROUP,Q.COLGROUP],[q.DD,Q.DD],[q.DESC,Q.DESC],[q.DETAILS,Q.DETAILS],[q.DIALOG,Q.DIALOG],[q.DIR,Q.DIR],[q.DIV,Q.DIV],[q.DL,Q.DL],[q.DT,Q.DT],[q.EM,Q.EM],[q.EMBED,Q.EMBED],[q.FIELDSET,Q.FIELDSET],[q.FIGCAPTION,Q.FIGCAPTION],[q.FIGURE,Q.FIGURE],[q.FONT,Q.FONT],[q.FOOTER,Q.FOOTER],[q.FOREIGN_OBJECT,Q.FOREIGN_OBJECT],[q.FORM,Q.FORM],[q.FRAME,Q.FRAME],[q.FRAMESET,Q.FRAMESET],[q.H1,Q.H1],[q.H2,Q.H2],[q.H3,Q.H3],[q.H4,Q.H4],[q.H5,Q.H5],[q.H6,Q.H6],[q.HEAD,Q.HEAD],[q.HEADER,Q.HEADER],[q.HGROUP,Q.HGROUP],[q.HR,Q.HR],[q.HTML,Q.HTML],[q.I,Q.I],[q.IMG,Q.IMG],[q.IMAGE,Q.IMAGE],[q.INPUT,Q.INPUT],[q.IFRAME,Q.IFRAME],[q.KEYGEN,Q.KEYGEN],[q.LABEL,Q.LABEL],[q.LI,Q.LI],[q.LINK,Q.LINK],[q.LISTING,Q.LISTING],[q.MAIN,Q.MAIN],[q.MALIGNMARK,Q.MALIGNMARK],[q.MARQUEE,Q.MARQUEE],[q.MATH,Q.MATH],[q.MENU,Q.MENU],[q.META,Q.META],[q.MGLYPH,Q.MGLYPH],[q.MI,Q.MI],[q.MO,Q.MO],[q.MN,Q.MN],[q.MS,Q.MS],[q.MTEXT,Q.MTEXT],[q.NAV,Q.NAV],[q.NOBR,Q.NOBR],[q.NOFRAMES,Q.NOFRAMES],[q.NOEMBED,Q.NOEMBED],[q.NOSCRIPT,Q.NOSCRIPT],[q.OBJECT,Q.OBJECT],[q.OL,Q.OL],[q.OPTGROUP,Q.OPTGROUP],[q.OPTION,Q.OPTION],[q.P,Q.P],[q.PARAM,Q.PARAM],[q.PLAINTEXT,Q.PLAINTEXT],[q.PRE,Q.PRE],[q.RB,Q.RB],[q.RP,Q.RP],[q.RT,Q.RT],[q.RTC,Q.RTC],[q.RUBY,Q.RUBY],[q.S,Q.S],[q.SCRIPT,Q.SCRIPT],[q.SEARCH,Q.SEARCH],[q.SECTION,Q.SECTION],[q.SELECT,Q.SELECT],[q.SOURCE,Q.SOURCE],[q.SMALL,Q.SMALL],[q.SPAN,Q.SPAN],[q.STRIKE,Q.STRIKE],[q.STRONG,Q.STRONG],[q.STYLE,Q.STYLE],[q.SUB,Q.SUB],[q.SUMMARY,Q.SUMMARY],[q.SUP,Q.SUP],[q.TABLE,Q.TABLE],[q.TBODY,Q.TBODY],[q.TEMPLATE,Q.TEMPLATE],[q.TEXTAREA,Q.TEXTAREA],[q.TFOOT,Q.TFOOT],[q.TD,Q.TD],[q.TH,Q.TH],[q.THEAD,Q.THEAD],[q.TITLE,Q.TITLE],[q.TR,Q.TR],[q.TRACK,Q.TRACK],[q.TT,Q.TT],[q.U,Q.U],[q.UL,Q.UL],[q.SVG,Q.SVG],[q.VAR,Q.VAR],[q.WBR,Q.WBR],[q.XMP,Q.XMP]]);function $0(X){var W;return(W=U9.get(X))!==null&&W!==void 0?W:Q.UNKNOWN}var y=Q,c6={[x.HTML]:new Set([y.ADDRESS,y.APPLET,y.AREA,y.ARTICLE,y.ASIDE,y.BASE,y.BASEFONT,y.BGSOUND,y.BLOCKQUOTE,y.BODY,y.BR,y.BUTTON,y.CAPTION,y.CENTER,y.COL,y.COLGROUP,y.DD,y.DETAILS,y.DIR,y.DIV,y.DL,y.DT,y.EMBED,y.FIELDSET,y.FIGCAPTION,y.FIGURE,y.FOOTER,y.FORM,y.FRAME,y.FRAMESET,y.H1,y.H2,y.H3,y.H4,y.H5,y.H6,y.HEAD,y.HEADER,y.HGROUP,y.HR,y.HTML,y.IFRAME,y.IMG,y.INPUT,y.LI,y.LINK,y.LISTING,y.MAIN,y.MARQUEE,y.MENU,y.META,y.NAV,y.NOEMBED,y.NOFRAMES,y.NOSCRIPT,y.OBJECT,y.OL,y.P,y.PARAM,y.PLAINTEXT,y.PRE,y.SCRIPT,y.SECTION,y.SELECT,y.SOURCE,y.STYLE,y.SUMMARY,y.TABLE,y.TBODY,y.TD,y.TEMPLATE,y.TEXTAREA,y.TFOOT,y.TH,y.THEAD,y.TITLE,y.TR,y.TRACK,y.UL,y.WBR,y.XMP]),[x.MATHML]:new Set([y.MI,y.MO,y.MN,y.MS,y.MTEXT,y.ANNOTATION_XML]),[x.SVG]:new Set([y.TITLE,y.FOREIGN_OBJECT,y.DESC]),[x.XLINK]:new Set,[x.XML]:new Set,[x.XMLNS]:new Set},W1=new Set([y.H1,y.H2,y.H3,y.H4,y.H5,y.H6]),F9=new Set([q.STYLE,q.SCRIPT,q.XMP,q.IFRAME,q.NOEMBED,q.NOFRAMES,q.PLAINTEXT]);function a6(X,W){return F9.has(X)||W&&X===q.NOSCRIPT}var z;(function(X){X[X.DATA=0]="DATA",X[X.RCDATA=1]="RCDATA",X[X.RAWTEXT=2]="RAWTEXT",X[X.SCRIPT_DATA=3]="SCRIPT_DATA",X[X.PLAINTEXT=4]="PLAINTEXT",X[X.TAG_OPEN=5]="TAG_OPEN",X[X.END_TAG_OPEN=6]="END_TAG_OPEN",X[X.TAG_NAME=7]="TAG_NAME",X[X.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",X[X.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",X[X.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",X[X.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",X[X.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",X[X.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",X[X.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",X[X.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",X[X.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",X[X.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",X[X.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",X[X.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",X[X.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",X[X.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",X[X.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",X[X.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",X[X.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",X[X.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",X[X.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",X[X.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",X[X.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",X[X.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",X[X.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",X[X.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",X[X.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",X[X.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",X[X.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",X[X.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",X[X.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",X[X.BOGUS_COMMENT=40]="BOGUS_COMMENT",X[X.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",X[X.COMMENT_START=42]="COMMENT_START",X[X.COMMENT_START_DASH=43]="COMMENT_START_DASH",X[X.COMMENT=44]="COMMENT",X[X.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",X[X.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",X[X.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",X[X.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",X[X.COMMENT_END_DASH=49]="COMMENT_END_DASH",X[X.COMMENT_END=50]="COMMENT_END",X[X.COMMENT_END_BANG=51]="COMMENT_END_BANG",X[X.DOCTYPE=52]="DOCTYPE",X[X.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",X[X.DOCTYPE_NAME=54]="DOCTYPE_NAME",X[X.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",X[X.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",X[X.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",X[X.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",X[X.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",X[X.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",X[X.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",X[X.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",X[X.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",X[X.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",X[X.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",X[X.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",X[X.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",X[X.CDATA_SECTION=68]="CDATA_SECTION",X[X.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",X[X.CDATA_SECTION_END=70]="CDATA_SECTION_END",X[X.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",X[X.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(z||(z={}));var o={DATA:z.DATA,RCDATA:z.RCDATA,RAWTEXT:z.RAWTEXT,SCRIPT_DATA:z.SCRIPT_DATA,PLAINTEXT:z.PLAINTEXT,CDATA_SECTION:z.CDATA_SECTION};function B9(X){return X>=Y.DIGIT_0&&X<=Y.DIGIT_9}function Z1(X){return X>=Y.LATIN_CAPITAL_A&&X<=Y.LATIN_CAPITAL_Z}function L9(X){return X>=Y.LATIN_SMALL_A&&X<=Y.LATIN_SMALL_Z}function v0(X){return L9(X)||Z1(X)}function i6(X){return v0(X)||B9(X)}function a1(X){return X+32}function p6(X){return X===Y.SPACE||X===Y.LINE_FEED||X===Y.TABULATION||X===Y.FORM_FEED}function d6(X){return p6(X)||X===Y.SOLIDUS||X===Y.GREATER_THAN_SIGN}function P9(X){if(X===Y.NULL)return L.nullCharacterReference;else if(X>1114111)return L.characterReferenceOutsideUnicodeRange;else if(l1(X))return L.surrogateCharacterReference;else if(A1(X))return L.noncharacterCharacterReference;else if(T1(X)||X===Y.CARRIAGE_RETURN)return L.controlCharacterReference;return null}class i1{constructor(X,W){this.options=X,this.handler=W,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=z.DATA,this.returnState=z.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new AX(W),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new iX(cX,(Z,K)=>{this.preprocessor.pos=this.entityStartPos+K-1,this._flushCodePointConsumedAsCharacterReference(Z)},W.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(L.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:(Z)=>{this._err(L.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+Z)},validateNumericCharacterReference:(Z)=>{let K=P9(Z);if(K)this._err(K,1)}}:void 0)}_err(X,W=0){var Z,K;(K=(Z=this.handler).onParseError)===null||K===void 0||K.call(Z,this.preprocessor.getError(X,W))}getCurrentLocation(X){if(!this.options.sourceCodeLocationInfo)return null;return{startLine:this.preprocessor.line,startCol:this.preprocessor.col-X,startOffset:this.preprocessor.offset-X,endLine:-1,endCol:-1,endOffset:-1}}_runParsingLoop(){if(this.inLoop)return;this.inLoop=!0;while(this.active&&!this.paused){this.consumedAfterSnapshot=0;let X=this._consume();if(!this._ensureHibernation())this._callState(X)}this.inLoop=!1}pause(){this.paused=!0}resume(X){if(!this.paused)throw Error("Parser was already resumed");if(this.paused=!1,this.inLoop)return;if(this._runParsingLoop(),!this.paused)X===null||X===void 0||X()}write(X,W,Z){if(this.active=!0,this.preprocessor.write(X,W),this._runParsingLoop(),!this.paused)Z===null||Z===void 0||Z()}insertHtmlAtCurrentPos(X){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(X),this._runParsingLoop()}_ensureHibernation(){if(this.preprocessor.endOfChunkHit)return this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0;return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(X){this.consumedAfterSnapshot+=X;for(let W=0;W<X;W++)this.preprocessor.advance()}_consumeSequenceIfMatch(X,W){if(this.preprocessor.startsWith(X,W))return this._advanceBy(X.length-1),!0;return!1}_createStartTagToken(){this.currentToken={type:_.START_TAG,tagName:"",tagID:Q.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(1)}}_createEndTagToken(){this.currentToken={type:_.END_TAG,tagName:"",tagID:Q.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(2)}}_createCommentToken(X){this.currentToken={type:_.COMMENT,data:"",location:this.getCurrentLocation(X)}}_createDoctypeToken(X){this.currentToken={type:_.DOCTYPE,name:X,forceQuirks:!1,publicId:null,systemId:null,location:this.currentLocation}}_createCharacterToken(X,W){this.currentCharacterToken={type:X,chars:W,location:this.currentLocation}}_createAttr(X){this.currentAttr={name:X,value:""},this.currentLocation=this.getCurrentLocation(0)}_leaveAttrName(){var X,W;let Z=this.currentToken;if(c1(Z,this.currentAttr.name)===null){if(Z.attrs.push(this.currentAttr),Z.location&&this.currentLocation){let K=(X=(W=Z.location).attrs)!==null&&X!==void 0?X:W.attrs=Object.create(null);K[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue()}}else this._err(L.duplicateAttribute)}_leaveAttrValue(){if(this.currentLocation)this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset}prepareToken(X){if(this._emitCurrentCharacterToken(X.location),this.currentToken=null,X.location)X.location.endLine=this.preprocessor.line,X.location.endCol=this.preprocessor.col+1,X.location.endOffset=this.preprocessor.offset+1;this.currentLocation=this.getCurrentLocation(-1)}emitCurrentTagToken(){let X=this.currentToken;if(this.prepareToken(X),X.tagID=$0(X.tagName),X.type===_.START_TAG)this.lastStartTagName=X.tagName,this.handler.onStartTag(X);else{if(X.attrs.length>0)this._err(L.endTagWithAttributes);if(X.selfClosing)this._err(L.endTagWithTrailingSolidus);this.handler.onEndTag(X)}this.preprocessor.dropParsedChunk()}emitCurrentComment(X){this.prepareToken(X),this.handler.onComment(X),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(X){this.prepareToken(X),this.handler.onDoctype(X),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(X){if(this.currentCharacterToken){if(X&&this.currentCharacterToken.location)this.currentCharacterToken.location.endLine=X.startLine,this.currentCharacterToken.location.endCol=X.startCol,this.currentCharacterToken.location.endOffset=X.startOffset;switch(this.currentCharacterToken.type){case _.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case _.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case _.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){let X=this.getCurrentLocation(0);if(X)X.endLine=X.startLine,X.endCol=X.startCol,X.endOffset=X.startOffset;this._emitCurrentCharacterToken(X),this.handler.onEof({type:_.EOF,location:X}),this.active=!1}_appendCharToCurrentCharacterToken(X,W){if(this.currentCharacterToken)if(this.currentCharacterToken.type===X){this.currentCharacterToken.chars+=W;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(X,W)}_emitCodePoint(X){let W=p6(X)?_.WHITESPACE_CHARACTER:X===Y.NULL?_.NULL_CHARACTER:_.CHARACTER;this._appendCharToCurrentCharacterToken(W,X<65536?String.fromCharCode(X):String.fromCodePoint(X))}_emitChars(X){this._appendCharToCurrentCharacterToken(_.CHARACTER,X)}_startCharacterReference(){this.returnState=this.state,this.state=z.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?U0.Attribute:U0.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===z.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===z.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===z.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(X){if(this._isCharacterReferenceInAttribute())this.currentAttr.value+=String.fromCodePoint(X);else this._emitCodePoint(X)}_callState(X){switch(this.state){case z.DATA:{this._stateData(X);break}case z.RCDATA:{this._stateRcdata(X);break}case z.RAWTEXT:{this._stateRawtext(X);break}case z.SCRIPT_DATA:{this._stateScriptData(X);break}case z.PLAINTEXT:{this._statePlaintext(X);break}case z.TAG_OPEN:{this._stateTagOpen(X);break}case z.END_TAG_OPEN:{this._stateEndTagOpen(X);break}case z.TAG_NAME:{this._stateTagName(X);break}case z.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(X);break}case z.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(X);break}case z.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(X);break}case z.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(X);break}case z.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(X);break}case z.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(X);break}case z.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(X);break}case z.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(X);break}case z.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(X);break}case z.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(X);break}case z.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(X);break}case z.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(X);break}case z.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(X);break}case z.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(X);break}case z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(X);break}case z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(X);break}case z.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(X);break}case z.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(X);break}case z.ATTRIBUTE_NAME:{this._stateAttributeName(X);break}case z.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(X);break}case z.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(X);break}case z.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(X);break}case z.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(X);break}case z.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(X);break}case z.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(X);break}case z.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(X);break}case z.BOGUS_COMMENT:{this._stateBogusComment(X);break}case z.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(X);break}case z.COMMENT_START:{this._stateCommentStart(X);break}case z.COMMENT_START_DASH:{this._stateCommentStartDash(X);break}case z.COMMENT:{this._stateComment(X);break}case z.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(X);break}case z.COMMENT_END_DASH:{this._stateCommentEndDash(X);break}case z.COMMENT_END:{this._stateCommentEnd(X);break}case z.COMMENT_END_BANG:{this._stateCommentEndBang(X);break}case z.DOCTYPE:{this._stateDoctype(X);break}case z.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(X);break}case z.DOCTYPE_NAME:{this._stateDoctypeName(X);break}case z.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(X);break}case z.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(X);break}case z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(X);break}case z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(X);break}case z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(X);break}case z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(X);break}case z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(X);break}case z.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(X);break}case z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(X);break}case z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(X);break}case z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(X);break}case z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(X);break}case z.BOGUS_DOCTYPE:{this._stateBogusDoctype(X);break}case z.CDATA_SECTION:{this._stateCdataSection(X);break}case z.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(X);break}case z.CDATA_SECTION_END:{this._stateCdataSectionEnd(X);break}case z.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case z.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(X);break}default:throw Error("Unknown state")}}_stateData(X){switch(X){case Y.LESS_THAN_SIGN:{this.state=z.TAG_OPEN;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitCodePoint(X);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRcdata(X){switch(X){case Y.AMPERSAND:{this._startCharacterReference();break}case Y.LESS_THAN_SIGN:{this.state=z.RCDATA_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRawtext(X){switch(X){case Y.LESS_THAN_SIGN:{this.state=z.RAWTEXT_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptData(X){switch(X){case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_statePlaintext(X){switch(X){case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateTagOpen(X){if(v0(X))this._createStartTagToken(),this.state=z.TAG_NAME,this._stateTagName(X);else switch(X){case Y.EXCLAMATION_MARK:{this.state=z.MARKUP_DECLARATION_OPEN;break}case Y.SOLIDUS:{this.state=z.END_TAG_OPEN;break}case Y.QUESTION_MARK:{this._err(L.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X);break}case Y.EOF:{this._err(L.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(L.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=z.DATA,this._stateData(X)}}_stateEndTagOpen(X){if(v0(X))this._createEndTagToken(),this.state=z.TAG_NAME,this._stateTagName(X);else switch(X){case Y.GREATER_THAN_SIGN:{this._err(L.missingEndTagName),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(L.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X)}}_stateTagName(X){let W=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_ATTRIBUTE_NAME;break}case Y.SOLIDUS:{this.state=z.SELF_CLOSING_START_TAG;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentTagToken();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),W.tagName+=l;break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:W.tagName+=String.fromCodePoint(Z1(X)?a1(X):X)}}_stateRcdataLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.RCDATA_END_TAG_OPEN;else this._emitChars("<"),this.state=z.RCDATA,this._stateRcdata(X)}_stateRcdataEndTagOpen(X){if(v0(X))this.state=z.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(X);else this._emitChars("</"),this.state=z.RCDATA,this._stateRcdata(X)}handleSpecialEndTag(X){if(!this.preprocessor.startsWith(this.lastStartTagName,!1))return!this._ensureHibernation();this._createEndTagToken();let W=this.currentToken;switch(W.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=z.BEFORE_ATTRIBUTE_NAME,!1;case Y.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=z.SELF_CLOSING_START_TAG,!1;case Y.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=z.DATA,!1;default:return!this._ensureHibernation()}}_stateRcdataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.RCDATA,this._stateRcdata(X)}_stateRawtextLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.RAWTEXT_END_TAG_OPEN;else this._emitChars("<"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagOpen(X){if(v0(X))this.state=z.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(X);else this._emitChars("</"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateScriptDataLessThanSign(X){switch(X){case Y.SOLIDUS:{this.state=z.SCRIPT_DATA_END_TAG_OPEN;break}case Y.EXCLAMATION_MARK:{this.state=z.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}}_stateScriptDataEndTagOpen(X){if(v0(X))this.state=z.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(X);else this._emitChars("</"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStart(X){if(X===Y.HYPHEN_MINUS)this.state=z.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-");else this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStartDash(X){if(X===Y.HYPHEN_MINUS)this.state=z.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");else this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscaped(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataEscapedDash(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_ESCAPED,this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedDashDash(X){switch(X){case Y.HYPHEN_MINUS:{this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case Y.GREATER_THAN_SIGN:{this.state=z.SCRIPT_DATA,this._emitChars(">");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_ESCAPED,this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;else if(v0(X))this._emitChars("<"),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(X);else this._emitChars("<"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagOpen(X){if(v0(X))this.state=z.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(X);else this._emitChars("</"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscapeStart(X){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&d6(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(X);for(let W=0;W<t.SCRIPT.length;W++)this._emitCodePoint(this._consume());this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED}else if(!this._ensureHibernation())this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscaped(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDash(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDashDash(X){switch(X){case Y.HYPHEN_MINUS:{this._emitChars("-");break}case Y.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case Y.GREATER_THAN_SIGN:{this.state=z.SCRIPT_DATA,this._emitChars(">");break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(l);break}case Y.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedLessThanSign(X){if(X===Y.SOLIDUS)this.state=z.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/");else this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateScriptDataDoubleEscapeEnd(X){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&d6(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(X);for(let W=0;W<t.SCRIPT.length;W++)this._emitCodePoint(this._consume());this.state=z.SCRIPT_DATA_ESCAPED}else if(!this._ensureHibernation())this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateBeforeAttributeName(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.SOLIDUS:case Y.GREATER_THAN_SIGN:case Y.EOF:{this.state=z.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case Y.EQUALS_SIGN:{this._err(L.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=z.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=z.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateAttributeName(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:case Y.SOLIDUS:case Y.GREATER_THAN_SIGN:case Y.EOF:{this._leaveAttrName(),this.state=z.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case Y.EQUALS_SIGN:{this._leaveAttrName(),this.state=z.BEFORE_ATTRIBUTE_VALUE;break}case Y.QUOTATION_MARK:case Y.APOSTROPHE:case Y.LESS_THAN_SIGN:{this._err(L.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(X);break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.name+=l;break}default:this.currentAttr.name+=String.fromCodePoint(Z1(X)?a1(X):X)}}_stateAfterAttributeName(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.SOLIDUS:{this.state=z.SELF_CLOSING_START_TAG;break}case Y.EQUALS_SIGN:{this.state=z.BEFORE_ATTRIBUTE_VALUE;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentTagToken();break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=z.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateBeforeAttributeValue(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.QUOTATION_MARK:{this.state=z.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this.state=z.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingAttributeValue),this.state=z.DATA,this.emitCurrentTagToken();break}default:this.state=z.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(X)}}_stateAttributeValueDoubleQuoted(X){switch(X){case Y.QUOTATION_MARK:{this.state=z.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=l;break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueSingleQuoted(X){switch(X){case Y.APOSTROPHE:{this.state=z.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=l;break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueUnquoted(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this._leaveAttrValue(),this.state=z.BEFORE_ATTRIBUTE_NAME;break}case Y.AMPERSAND:{this._startCharacterReference();break}case Y.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=z.DATA,this.emitCurrentTagToken();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=l;break}case Y.QUOTATION_MARK:case Y.APOSTROPHE:case Y.LESS_THAN_SIGN:case Y.EQUALS_SIGN:case Y.GRAVE_ACCENT:{this._err(L.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(X);break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAfterAttributeValueQuoted(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this._leaveAttrValue(),this.state=z.BEFORE_ATTRIBUTE_NAME;break}case Y.SOLIDUS:{this._leaveAttrValue(),this.state=z.SELF_CLOSING_START_TAG;break}case Y.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=z.DATA,this.emitCurrentTagToken();break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._err(L.missingWhitespaceBetweenAttributes),this.state=z.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateSelfClosingStartTag(X){switch(X){case Y.GREATER_THAN_SIGN:{let W=this.currentToken;W.selfClosing=!0,this.state=z.DATA,this.emitCurrentTagToken();break}case Y.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._err(L.unexpectedSolidusInTag),this.state=z.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateBogusComment(X){let W=this.currentToken;switch(X){case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentComment(W);break}case Y.EOF:{this.emitCurrentComment(W),this._emitEOFToken();break}case Y.NULL:{this._err(L.unexpectedNullCharacter),W.data+=l;break}default:W.data+=String.fromCodePoint(X)}}_stateMarkupDeclarationOpen(X){if(this._consumeSequenceIfMatch(t.DASH_DASH,!0))this._createCommentToken(t.DASH_DASH.length+1),this.state=z.COMMENT_START;else if(this._consumeSequenceIfMatch(t.DOCTYPE,!1))this.currentLocation=this.getCurrentLocation(t.DOCTYPE.length+1),this.state=z.DOCTYPE;else if(this._consumeSequenceIfMatch(t.CDATA_START,!0))if(this.inForeignNode)this.state=z.CDATA_SECTION;else this._err(L.cdataInHtmlContent),this._createCommentToken(t.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=z.BOGUS_COMMENT;else if(!this._ensureHibernation())this._err(L.incorrectlyOpenedComment),this._createCommentToken(2),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X)}_stateCommentStart(X){switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_START_DASH;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptClosingOfEmptyComment),this.state=z.DATA;let W=this.currentToken;this.emitCurrentComment(W);break}default:this.state=z.COMMENT,this._stateComment(X)}}_stateCommentStartDash(X){let W=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_END;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptClosingOfEmptyComment),this.state=z.DATA,this.emitCurrentComment(W);break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(W),this._emitEOFToken();break}default:W.data+="-",this.state=z.COMMENT,this._stateComment(X)}}_stateComment(X){let W=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_END_DASH;break}case Y.LESS_THAN_SIGN:{W.data+="<",this.state=z.COMMENT_LESS_THAN_SIGN;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),W.data+=l;break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(W),this._emitEOFToken();break}default:W.data+=String.fromCodePoint(X)}}_stateCommentLessThanSign(X){let W=this.currentToken;switch(X){case Y.EXCLAMATION_MARK:{W.data+="!",this.state=z.COMMENT_LESS_THAN_SIGN_BANG;break}case Y.LESS_THAN_SIGN:{W.data+="<";break}default:this.state=z.COMMENT,this._stateComment(X)}}_stateCommentLessThanSignBang(X){if(X===Y.HYPHEN_MINUS)this.state=z.COMMENT_LESS_THAN_SIGN_BANG_DASH;else this.state=z.COMMENT,this._stateComment(X)}_stateCommentLessThanSignBangDash(X){if(X===Y.HYPHEN_MINUS)this.state=z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;else this.state=z.COMMENT_END_DASH,this._stateCommentEndDash(X)}_stateCommentLessThanSignBangDashDash(X){if(X!==Y.GREATER_THAN_SIGN&&X!==Y.EOF)this._err(L.nestedComment);this.state=z.COMMENT_END,this._stateCommentEnd(X)}_stateCommentEndDash(X){let W=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{this.state=z.COMMENT_END;break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(W),this._emitEOFToken();break}default:W.data+="-",this.state=z.COMMENT,this._stateComment(X)}}_stateCommentEnd(X){let W=this.currentToken;switch(X){case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentComment(W);break}case Y.EXCLAMATION_MARK:{this.state=z.COMMENT_END_BANG;break}case Y.HYPHEN_MINUS:{W.data+="-";break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(W),this._emitEOFToken();break}default:W.data+="--",this.state=z.COMMENT,this._stateComment(X)}}_stateCommentEndBang(X){let W=this.currentToken;switch(X){case Y.HYPHEN_MINUS:{W.data+="--!",this.state=z.COMMENT_END_DASH;break}case Y.GREATER_THAN_SIGN:{this._err(L.incorrectlyClosedComment),this.state=z.DATA,this.emitCurrentComment(W);break}case Y.EOF:{this._err(L.eofInComment),this.emitCurrentComment(W),this._emitEOFToken();break}default:W.data+="--!",this.state=z.COMMENT,this._stateComment(X)}}_stateDoctype(X){switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_NAME;break}case Y.GREATER_THAN_SIGN:{this.state=z.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X);break}case Y.EOF:{this._err(L.eofInDoctype),this._createDoctypeToken(null);let W=this.currentToken;W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingWhitespaceBeforeDoctypeName),this.state=z.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X)}}_stateBeforeDoctypeName(X){if(Z1(X))this._createDoctypeToken(String.fromCharCode(a1(X))),this.state=z.DOCTYPE_NAME;else switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.NULL:{this._err(L.unexpectedNullCharacter),this._createDoctypeToken(l),this.state=z.DOCTYPE_NAME;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypeName),this._createDoctypeToken(null);let W=this.currentToken;W.forceQuirks=!0,this.emitCurrentDoctype(W),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),this._createDoctypeToken(null);let W=this.currentToken;W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(X)),this.state=z.DOCTYPE_NAME}}_stateDoctypeName(X){let W=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.AFTER_DOCTYPE_NAME;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(W);break}case Y.NULL:{this._err(L.unexpectedNullCharacter),W.name+=l;break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:W.name+=String.fromCodePoint(Z1(X)?a1(X):X)}}_stateAfterDoctypeName(X){let W=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(W);break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:if(this._consumeSequenceIfMatch(t.PUBLIC,!1))this.state=z.AFTER_DOCTYPE_PUBLIC_KEYWORD;else if(this._consumeSequenceIfMatch(t.SYSTEM,!1))this.state=z.AFTER_DOCTYPE_SYSTEM_KEYWORD;else if(!this._ensureHibernation())this._err(L.invalidCharacterSequenceAfterDoctypeName),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypePublicKeyword(X){let W=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case Y.QUOTATION_MARK:{this._err(L.missingWhitespaceAfterDoctypePublicKeyword),W.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this._err(L.missingWhitespaceAfterDoctypePublicKeyword),W.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypePublicIdentifier),W.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(W);break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypePublicIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypePublicIdentifier(X){let W=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.QUOTATION_MARK:{W.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{W.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypePublicIdentifier),W.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(W);break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypePublicIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypePublicIdentifierDoubleQuoted(X){let W=this.currentToken;switch(X){case Y.QUOTATION_MARK:{this.state=z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),W.publicId+=l;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypePublicIdentifier),W.forceQuirks=!0,this.emitCurrentDoctype(W),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:W.publicId+=String.fromCodePoint(X)}}_stateDoctypePublicIdentifierSingleQuoted(X){let W=this.currentToken;switch(X){case Y.APOSTROPHE:{this.state=z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),W.publicId+=l;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypePublicIdentifier),W.forceQuirks=!0,this.emitCurrentDoctype(W),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:W.publicId+=String.fromCodePoint(X)}}_stateAfterDoctypePublicIdentifier(X){let W=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case Y.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(W);break}case Y.QUOTATION_MARK:{this._err(L.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this._err(L.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBetweenDoctypePublicAndSystemIdentifiers(X){let W=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.GREATER_THAN_SIGN:{this.emitCurrentDoctype(W),this.state=z.DATA;break}case Y.QUOTATION_MARK:{W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypeSystemKeyword(X){let W=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case Y.QUOTATION_MARK:{this._err(L.missingWhitespaceAfterDoctypeSystemKeyword),W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{this._err(L.missingWhitespaceAfterDoctypeSystemKeyword),W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(W);break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypeSystemIdentifier(X){let W=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.QUOTATION_MARK:{W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case Y.APOSTROPHE:{W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case Y.GREATER_THAN_SIGN:{this._err(L.missingDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(W);break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypeSystemIdentifierDoubleQuoted(X){let W=this.currentToken;switch(X){case Y.QUOTATION_MARK:{this.state=z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),W.systemId+=l;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypeSystemIdentifier),W.forceQuirks=!0,this.emitCurrentDoctype(W),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:W.systemId+=String.fromCodePoint(X)}}_stateDoctypeSystemIdentifierSingleQuoted(X){let W=this.currentToken;switch(X){case Y.APOSTROPHE:{this.state=z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case Y.NULL:{this._err(L.unexpectedNullCharacter),W.systemId+=l;break}case Y.GREATER_THAN_SIGN:{this._err(L.abruptDoctypeSystemIdentifier),W.forceQuirks=!0,this.emitCurrentDoctype(W),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:W.systemId+=String.fromCodePoint(X)}}_stateAfterDoctypeSystemIdentifier(X){let W=this.currentToken;switch(X){case Y.SPACE:case Y.LINE_FEED:case Y.TABULATION:case Y.FORM_FEED:break;case Y.GREATER_THAN_SIGN:{this.emitCurrentDoctype(W),this.state=z.DATA;break}case Y.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBogusDoctype(X){let W=this.currentToken;switch(X){case Y.GREATER_THAN_SIGN:{this.emitCurrentDoctype(W),this.state=z.DATA;break}case Y.NULL:{this._err(L.unexpectedNullCharacter);break}case Y.EOF:{this.emitCurrentDoctype(W),this._emitEOFToken();break}default:}}_stateCdataSection(X){switch(X){case Y.RIGHT_SQUARE_BRACKET:{this.state=z.CDATA_SECTION_BRACKET;break}case Y.EOF:{this._err(L.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateCdataSectionBracket(X){if(X===Y.RIGHT_SQUARE_BRACKET)this.state=z.CDATA_SECTION_END;else this._emitChars("]"),this.state=z.CDATA_SECTION,this._stateCdataSection(X)}_stateCdataSectionEnd(X){switch(X){case Y.GREATER_THAN_SIGN:{this.state=z.DATA;break}case Y.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=z.CDATA_SECTION,this._stateCdataSection(X)}}_stateCharacterReference(){let X=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(X<0)if(this.preprocessor.lastChunkWritten)X=this.entityDecoder.end();else{this.active=!1,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=!0;return}if(X===0)this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(Y.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&i6(this.preprocessor.peek(1))?z.AMBIGUOUS_AMPERSAND:this.returnState;else this.state=this.returnState}_stateAmbiguousAmpersand(X){if(i6(X))this._flushCodePointConsumedAsCharacterReference(X);else{if(X===Y.SEMICOLON)this._err(L.unknownNamedCharacterReference);this.state=this.returnState,this._callState(X)}}}var n6=new Set([Q.DD,Q.DT,Q.LI,Q.OPTGROUP,Q.OPTION,Q.P,Q.RB,Q.RP,Q.RT,Q.RTC]),r6=new Set([...n6,Q.CAPTION,Q.COLGROUP,Q.TBODY,Q.TD,Q.TFOOT,Q.TH,Q.THEAD,Q.TR]),d1=new Set([Q.APPLET,Q.CAPTION,Q.HTML,Q.MARQUEE,Q.OBJECT,Q.TABLE,Q.TD,Q.TEMPLATE,Q.TH]),x9=new Set([...d1,Q.OL,Q.UL]),b9=new Set([...d1,Q.BUTTON]),s6=new Set([Q.ANNOTATION_XML,Q.MI,Q.MN,Q.MO,Q.MS,Q.MTEXT]),o6=new Set([Q.DESC,Q.FOREIGN_OBJECT,Q.TITLE]),v9=new Set([Q.TR,Q.TEMPLATE,Q.HTML]),y9=new Set([Q.TBODY,Q.TFOOT,Q.THEAD,Q.TEMPLATE,Q.HTML]),O9=new Set([Q.TABLE,Q.TEMPLATE,Q.HTML]),R9=new Set([Q.TD,Q.TH]);class dX{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(X,W,Z){this.treeAdapter=W,this.handler=Z,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=Q.UNKNOWN,this.current=X}_indexOf(X){return this.items.lastIndexOf(X,this.stackTop)}_isInTemplate(){return this.currentTagId===Q.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===x.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop]}push(X,W){if(this.stackTop++,this.items[this.stackTop]=X,this.current=X,this.tagIDs[this.stackTop]=W,this.currentTagId=W,this._isInTemplate())this.tmplCount++;this.handler.onItemPush(X,W,!0)}pop(){let X=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount--;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(X,!0)}replace(X,W){let Z=this._indexOf(X);if(this.items[Z]=W,Z===this.stackTop)this.current=W}insertAfter(X,W,Z){let K=this._indexOf(X)+1;if(this.items.splice(K,0,W),this.tagIDs.splice(K,0,Z),this.stackTop++,K===this.stackTop)this._updateCurrentElement();if(this.current&&this.currentTagId!==void 0)this.handler.onItemPush(this.current,this.currentTagId,K===this.stackTop)}popUntilTagNamePopped(X){let W=this.stackTop+1;do W=this.tagIDs.lastIndexOf(X,W-1);while(W>0&&this.treeAdapter.getNamespaceURI(this.items[W])!==x.HTML);this.shortenToLength(Math.max(W,0))}shortenToLength(X){while(this.stackTop>=X){let W=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount-=1;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(W,this.stackTop<X)}}popUntilElementPopped(X){let W=this._indexOf(X);this.shortenToLength(Math.max(W,0))}popUntilPopped(X,W){let Z=this._indexOfTagNames(X,W);this.shortenToLength(Math.max(Z,0))}popUntilNumberedHeaderPopped(){this.popUntilPopped(W1,x.HTML)}popUntilTableCellPopped(){this.popUntilPopped(R9,x.HTML)}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1)}_indexOfTagNames(X,W){for(let Z=this.stackTop;Z>=0;Z--)if(X.has(this.tagIDs[Z])&&this.treeAdapter.getNamespaceURI(this.items[Z])===W)return Z;return-1}clearBackTo(X,W){let Z=this._indexOfTagNames(X,W);this.shortenToLength(Z+1)}clearBackToTableContext(){this.clearBackTo(O9,x.HTML)}clearBackToTableBodyContext(){this.clearBackTo(y9,x.HTML)}clearBackToTableRowContext(){this.clearBackTo(v9,x.HTML)}remove(X){let W=this._indexOf(X);if(W>=0)if(W===this.stackTop)this.pop();else this.items.splice(W,1),this.tagIDs.splice(W,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(X,!1)}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===Q.BODY?this.items[1]:null}contains(X){return this._indexOf(X)>-1}getCommonAncestor(X){let W=this._indexOf(X)-1;return W>=0?this.items[W]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===Q.HTML}hasInDynamicScope(X,W){for(let Z=this.stackTop;Z>=0;Z--){let K=this.tagIDs[Z];switch(this.treeAdapter.getNamespaceURI(this.items[Z])){case x.HTML:{if(K===X)return!0;if(W.has(K))return!1;break}case x.SVG:{if(o6.has(K))return!1;break}case x.MATHML:{if(s6.has(K))return!1;break}}}return!0}hasInScope(X){return this.hasInDynamicScope(X,d1)}hasInListItemScope(X){return this.hasInDynamicScope(X,x9)}hasInButtonScope(X){return this.hasInDynamicScope(X,b9)}hasNumberedHeaderInScope(){for(let X=this.stackTop;X>=0;X--){let W=this.tagIDs[X];switch(this.treeAdapter.getNamespaceURI(this.items[X])){case x.HTML:{if(W1.has(W))return!0;if(d1.has(W))return!1;break}case x.SVG:{if(o6.has(W))return!1;break}case x.MATHML:{if(s6.has(W))return!1;break}}}return!0}hasInTableScope(X){for(let W=this.stackTop;W>=0;W--){if(this.treeAdapter.getNamespaceURI(this.items[W])!==x.HTML)continue;switch(this.tagIDs[W]){case X:return!0;case Q.TABLE:case Q.HTML:return!1}}return!0}hasTableBodyContextInTableScope(){for(let X=this.stackTop;X>=0;X--){if(this.treeAdapter.getNamespaceURI(this.items[X])!==x.HTML)continue;switch(this.tagIDs[X]){case Q.TBODY:case Q.THEAD:case Q.TFOOT:return!0;case Q.TABLE:case Q.HTML:return!1}}return!0}hasInSelectScope(X){for(let W=this.stackTop;W>=0;W--){if(this.treeAdapter.getNamespaceURI(this.items[W])!==x.HTML)continue;switch(this.tagIDs[W]){case X:return!0;case Q.OPTION:case Q.OPTGROUP:break;default:return!1}}return!0}generateImpliedEndTags(){while(this.currentTagId!==void 0&&n6.has(this.currentTagId))this.pop()}generateImpliedEndTagsThoroughly(){while(this.currentTagId!==void 0&&r6.has(this.currentTagId))this.pop()}generateImpliedEndTagsWithExclusion(X){while(this.currentTagId!==void 0&&this.currentTagId!==X&&r6.has(this.currentTagId))this.pop()}}var z0;(function(X){X[X.Marker=0]="Marker",X[X.Element=1]="Element"})(z0||(z0={}));var t6={type:z0.Marker};class pX{constructor(X){this.treeAdapter=X,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(X,W){let Z=[],K=W.length,J=this.treeAdapter.getTagName(X),V=this.treeAdapter.getNamespaceURI(X);for(let H=0;H<this.entries.length;H++){let U=this.entries[H];if(U.type===z0.Marker)break;let{element:F}=U;if(this.treeAdapter.getTagName(F)===J&&this.treeAdapter.getNamespaceURI(F)===V){let w=this.treeAdapter.getAttrList(F);if(w.length===K)Z.push({idx:H,attrs:w})}}return Z}_ensureNoahArkCondition(X){if(this.entries.length<3)return;let W=this.treeAdapter.getAttrList(X),Z=this._getNoahArkConditionCandidates(X,W);if(Z.length<3)return;let K=new Map(W.map((V)=>[V.name,V.value])),J=0;for(let V=0;V<Z.length;V++){let H=Z[V];if(H.attrs.every((U)=>K.get(U.name)===U.value)){if(J+=1,J>=3)this.entries.splice(H.idx,1)}}}insertMarker(){this.entries.unshift(t6)}pushElement(X,W){this._ensureNoahArkCondition(X),this.entries.unshift({type:z0.Element,element:X,token:W})}insertElementAfterBookmark(X,W){let Z=this.entries.indexOf(this.bookmark);this.entries.splice(Z,0,{type:z0.Element,element:X,token:W})}removeEntry(X){let W=this.entries.indexOf(X);if(W!==-1)this.entries.splice(W,1)}clearToLastMarker(){let X=this.entries.indexOf(t6);if(X===-1)this.entries.length=0;else this.entries.splice(0,X+1)}getElementEntryInScopeWithTagName(X){let W=this.entries.find((Z)=>Z.type===z0.Marker||this.treeAdapter.getTagName(Z.element)===X);return W&&W.type===z0.Element?W:null}getElementEntry(X){return this.entries.find((W)=>W.type===z0.Element&&W.element===X)}}var J0={createDocument(){return{nodeName:"#document",mode:e.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(X,W,Z){return{nodeName:X,tagName:X,attrs:Z,namespaceURI:W,childNodes:[],parentNode:null}},createCommentNode(X){return{nodeName:"#comment",data:X,parentNode:null}},createTextNode(X){return{nodeName:"#text",value:X,parentNode:null}},appendChild(X,W){X.childNodes.push(W),W.parentNode=X},insertBefore(X,W,Z){let K=X.childNodes.indexOf(Z);X.childNodes.splice(K,0,W),W.parentNode=X},setTemplateContent(X,W){X.content=W},getTemplateContent(X){return X.content},setDocumentType(X,W,Z,K){let J=X.childNodes.find((V)=>V.nodeName==="#documentType");if(J)J.name=W,J.publicId=Z,J.systemId=K;else{let V={nodeName:"#documentType",name:W,publicId:Z,systemId:K,parentNode:null};J0.appendChild(X,V)}},setDocumentMode(X,W){X.mode=W},getDocumentMode(X){return X.mode},detachNode(X){if(X.parentNode){let W=X.parentNode.childNodes.indexOf(X);X.parentNode.childNodes.splice(W,1),X.parentNode=null}},insertText(X,W){if(X.childNodes.length>0){let Z=X.childNodes[X.childNodes.length-1];if(J0.isTextNode(Z)){Z.value+=W;return}}J0.appendChild(X,J0.createTextNode(W))},insertTextBefore(X,W,Z){let K=X.childNodes[X.childNodes.indexOf(Z)-1];if(K&&J0.isTextNode(K))K.value+=W;else J0.insertBefore(X,J0.createTextNode(W),Z)},adoptAttributes(X,W){let Z=new Set(X.attrs.map((K)=>K.name));for(let K=0;K<W.length;K++)if(!Z.has(W[K].name))X.attrs.push(W[K])},getFirstChild(X){return X.childNodes[0]},getChildNodes(X){return X.childNodes},getParentNode(X){return X.parentNode},getAttrList(X){return X.attrs},getTagName(X){return X.tagName},getNamespaceURI(X){return X.namespaceURI},getTextNodeContent(X){return X.value},getCommentNodeContent(X){return X.data},getDocumentTypeNodeName(X){return X.name},getDocumentTypeNodePublicId(X){return X.publicId},getDocumentTypeNodeSystemId(X){return X.systemId},isTextNode(X){return X.nodeName==="#text"},isCommentNode(X){return X.nodeName==="#comment"},isDocumentTypeNode(X){return X.nodeName==="#documentType"},isElementNode(X){return Object.prototype.hasOwnProperty.call(X,"tagName")},setNodeSourceCodeLocation(X,W){X.sourceCodeLocation=W},getNodeSourceCodeLocation(X){return X.sourceCodeLocation},updateNodeSourceCodeLocation(X,W){X.sourceCodeLocation={...X.sourceCodeLocation,...W}}};var X4="html",f9="about:legacy-compat",C9="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",W4=["+//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//"],h9=[...W4,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],N9=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),Z4=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],M9=[...Z4,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function e6(X,W){return W.some((Z)=>X.startsWith(Z))}function Q4(X){return X.name===X4&&X.publicId===null&&(X.systemId===null||X.systemId===f9)}function K4(X){if(X.name!==X4)return e.QUIRKS;let{systemId:W}=X;if(W&&W.toLowerCase()===C9)return e.QUIRKS;let{publicId:Z}=X;if(Z!==null){if(Z=Z.toLowerCase(),N9.has(Z))return e.QUIRKS;let K=W===null?h9:W4;if(e6(Z,K))return e.QUIRKS;if(K=W===null?Z4:M9,e6(Z,K))return e.LIMITED_QUIRKS}return e.NO_QUIRKS}var J4={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},D9="definitionurl",m9="definitionURL",$9=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((X)=>[X.toLowerCase(),X])),G9=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:x.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:x.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:x.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:x.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:x.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:x.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:x.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:x.XML}],["xml:space",{prefix:"xml",name:"space",namespace:x.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:x.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:x.XMLNS}]]),E9=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((X)=>[X.toLowerCase(),X])),_9=new Set([Q.B,Q.BIG,Q.BLOCKQUOTE,Q.BODY,Q.BR,Q.CENTER,Q.CODE,Q.DD,Q.DIV,Q.DL,Q.DT,Q.EM,Q.EMBED,Q.H1,Q.H2,Q.H3,Q.H4,Q.H5,Q.H6,Q.HEAD,Q.HR,Q.I,Q.IMG,Q.LI,Q.LISTING,Q.MENU,Q.META,Q.NOBR,Q.OL,Q.P,Q.PRE,Q.RUBY,Q.S,Q.SMALL,Q.SPAN,Q.STRONG,Q.STRIKE,Q.SUB,Q.SUP,Q.TABLE,Q.TT,Q.U,Q.UL,Q.VAR]);function Y4(X){let W=X.tagID;return W===Q.FONT&&X.attrs.some(({name:K})=>K===L0.COLOR||K===L0.SIZE||K===L0.FACE)||_9.has(W)}function rX(X){for(let W=0;W<X.attrs.length;W++)if(X.attrs[W].name===D9){X.attrs[W].name=m9;break}}function sX(X){for(let W=0;W<X.attrs.length;W++){let Z=$9.get(X.attrs[W].name);if(Z!=null)X.attrs[W].name=Z}}function p1(X){for(let W=0;W<X.attrs.length;W++){let Z=G9.get(X.attrs[W].name);if(Z)X.attrs[W].prefix=Z.prefix,X.attrs[W].name=Z.name,X.attrs[W].namespace=Z.namespace}}function V4(X){let W=E9.get(X.tagName);if(W!=null)X.tagName=W,X.tagID=$0(X.tagName)}function k9(X,W){return W===x.MATHML&&(X===Q.MI||X===Q.MO||X===Q.MN||X===Q.MS||X===Q.MTEXT)}function u9(X,W,Z){if(W===x.MATHML&&X===Q.ANNOTATION_XML){for(let K=0;K<Z.length;K++)if(Z[K].name===L0.ENCODING){let J=Z[K].value.toLowerCase();return J===J4.TEXT_HTML||J===J4.APPLICATION_XML}}return W===x.SVG&&(X===Q.FOREIGN_OBJECT||X===Q.DESC||X===Q.TITLE)}function z4(X,W,Z,K){return(!K||K===x.HTML)&&u9(X,W,Z)||(!K||K===x.MATHML)&&k9(X,W)}var I9="hidden",S9=8,l9=3,j;(function(X){X[X.INITIAL=0]="INITIAL",X[X.BEFORE_HTML=1]="BEFORE_HTML",X[X.BEFORE_HEAD=2]="BEFORE_HEAD",X[X.IN_HEAD=3]="IN_HEAD",X[X.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",X[X.AFTER_HEAD=5]="AFTER_HEAD",X[X.IN_BODY=6]="IN_BODY",X[X.TEXT=7]="TEXT",X[X.IN_TABLE=8]="IN_TABLE",X[X.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",X[X.IN_CAPTION=10]="IN_CAPTION",X[X.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",X[X.IN_TABLE_BODY=12]="IN_TABLE_BODY",X[X.IN_ROW=13]="IN_ROW",X[X.IN_CELL=14]="IN_CELL",X[X.IN_SELECT=15]="IN_SELECT",X[X.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",X[X.IN_TEMPLATE=17]="IN_TEMPLATE",X[X.AFTER_BODY=18]="AFTER_BODY",X[X.IN_FRAMESET=19]="IN_FRAMESET",X[X.AFTER_FRAMESET=20]="AFTER_FRAMESET",X[X.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",X[X.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET"})(j||(j={}));var T9={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},F4=new Set([Q.TABLE,Q.TBODY,Q.TFOOT,Q.THEAD,Q.TR]),H4={scriptingEnabled:!0,sourceCodeLocationInfo:!1,treeAdapter:J0,onParseError:null};class n1{constructor(X,W,Z=null,K=null){if(this.fragmentContext=Z,this.scriptHandler=K,this.currentToken=null,this.stopped=!1,this.insertionMode=j.INITIAL,this.originalInsertionMode=j.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=!1,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1,this.options={...H4,...X},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError)this.options.sourceCodeLocationInfo=!0;this.document=W!==null&&W!==void 0?W:this.treeAdapter.createDocument(),this.tokenizer=new i1(this.options,this),this.activeFormattingElements=new pX(this.treeAdapter),this.fragmentContextID=Z?$0(this.treeAdapter.getTagName(Z)):Q.UNKNOWN,this._setContextModes(Z!==null&&Z!==void 0?Z:this.document,this.fragmentContextID),this.openElements=new dX(this.document,this.treeAdapter,this)}static parse(X,W){let Z=new this(W);return Z.tokenizer.write(X,!0),Z.document}static getFragmentParser(X,W){let Z={...H4,...W};X!==null&&X!==void 0||(X=Z.treeAdapter.createElement(q.TEMPLATE,x.HTML,[]));let K=Z.treeAdapter.createElement("documentmock",x.HTML,[]),J=new this(Z,K,X);if(J.fragmentContextID===Q.TEMPLATE)J.tmplInsertionModeStack.unshift(j.IN_TEMPLATE);return J._initTokenizerForFragmentParsing(),J._insertFakeRootElement(),J._resetInsertionMode(),J._findFormInFragmentContext(),J}getFragment(){let X=this.treeAdapter.getFirstChild(this.document),W=this.treeAdapter.createDocumentFragment();return this._adoptNodes(X,W),W}_err(X,W,Z){var K;if(!this.onParseError)return;let J=(K=X.location)!==null&&K!==void 0?K:T9,V={code:W,startLine:J.startLine,startCol:J.startCol,startOffset:J.startOffset,endLine:Z?J.startLine:J.endLine,endCol:Z?J.startCol:J.endCol,endOffset:Z?J.startOffset:J.endOffset};this.onParseError(V)}onItemPush(X,W,Z){var K,J;if((J=(K=this.treeAdapter).onItemPush)===null||J===void 0||J.call(K,X),Z&&this.openElements.stackTop>0)this._setContextModes(X,W)}onItemPop(X,W){var Z,K;if(this.options.sourceCodeLocationInfo)this._setEndLocation(X,this.currentToken);if((K=(Z=this.treeAdapter).onItemPop)===null||K===void 0||K.call(Z,X,this.openElements.current),W){let J,V;if(this.openElements.stackTop===0&&this.fragmentContext)J=this.fragmentContext,V=this.fragmentContextID;else({current:J,currentTagId:V}=this.openElements);this._setContextModes(J,V)}}_setContextModes(X,W){let Z=X===this.document||X&&this.treeAdapter.getNamespaceURI(X)===x.HTML;this.currentNotInHTML=!Z,this.tokenizer.inForeignNode=!Z&&X!==void 0&&W!==void 0&&!this._isIntegrationPoint(W,X)}_switchToTextParsing(X,W){this._insertElement(X,x.HTML),this.tokenizer.state=W,this.originalInsertionMode=this.insertionMode,this.insertionMode=j.TEXT}switchToPlaintextParsing(){this.insertionMode=j.TEXT,this.originalInsertionMode=j.IN_BODY,this.tokenizer.state=o.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let X=this.fragmentContext;while(X){if(this.treeAdapter.getTagName(X)===q.FORM){this.formElement=X;break}X=this.treeAdapter.getParentNode(X)}}_initTokenizerForFragmentParsing(){if(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==x.HTML)return;switch(this.fragmentContextID){case Q.TITLE:case Q.TEXTAREA:{this.tokenizer.state=o.RCDATA;break}case Q.STYLE:case Q.XMP:case Q.IFRAME:case Q.NOEMBED:case Q.NOFRAMES:case Q.NOSCRIPT:{this.tokenizer.state=o.RAWTEXT;break}case Q.SCRIPT:{this.tokenizer.state=o.SCRIPT_DATA;break}case Q.PLAINTEXT:{this.tokenizer.state=o.PLAINTEXT;break}default:}}_setDocumentType(X){let W=X.name||"",Z=X.publicId||"",K=X.systemId||"";if(this.treeAdapter.setDocumentType(this.document,W,Z,K),X.location){let V=this.treeAdapter.getChildNodes(this.document).find((H)=>this.treeAdapter.isDocumentTypeNode(H));if(V)this.treeAdapter.setNodeSourceCodeLocation(V,X.location)}}_attachElementToTree(X,W){if(this.options.sourceCodeLocationInfo){let Z=W&&{...W,startTag:W};this.treeAdapter.setNodeSourceCodeLocation(X,Z)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(X);else{let Z=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(Z!==null&&Z!==void 0?Z:this.document,X)}}_appendElement(X,W){let Z=this.treeAdapter.createElement(X.tagName,W,X.attrs);this._attachElementToTree(Z,X.location)}_insertElement(X,W){let Z=this.treeAdapter.createElement(X.tagName,W,X.attrs);this._attachElementToTree(Z,X.location),this.openElements.push(Z,X.tagID)}_insertFakeElement(X,W){let Z=this.treeAdapter.createElement(X,x.HTML,[]);this._attachElementToTree(Z,null),this.openElements.push(Z,W)}_insertTemplate(X){let W=this.treeAdapter.createElement(X.tagName,x.HTML,X.attrs),Z=this.treeAdapter.createDocumentFragment();if(this.treeAdapter.setTemplateContent(W,Z),this._attachElementToTree(W,X.location),this.openElements.push(W,X.tagID),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Z,null)}_insertFakeRootElement(){let X=this.treeAdapter.createElement(q.HTML,x.HTML,[]);if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(X,null);this.treeAdapter.appendChild(this.openElements.current,X),this.openElements.push(X,Q.HTML)}_appendCommentNode(X,W){let Z=this.treeAdapter.createCommentNode(X.data);if(this.treeAdapter.appendChild(W,Z),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Z,X.location)}_insertCharacters(X){let W,Z;if(this._shouldFosterParentOnInsertion())if({parent:W,beforeElement:Z}=this._findFosterParentingLocation(),Z)this.treeAdapter.insertTextBefore(W,X.chars,Z);else this.treeAdapter.insertText(W,X.chars);else W=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(W,X.chars);if(!X.location)return;let K=this.treeAdapter.getChildNodes(W),J=Z?K.lastIndexOf(Z):K.length,V=K[J-1];if(this.treeAdapter.getNodeSourceCodeLocation(V)){let{endLine:U,endCol:F,endOffset:w}=X.location;this.treeAdapter.updateNodeSourceCodeLocation(V,{endLine:U,endCol:F,endOffset:w})}else if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(V,X.location)}_adoptNodes(X,W){for(let Z=this.treeAdapter.getFirstChild(X);Z;Z=this.treeAdapter.getFirstChild(X))this.treeAdapter.detachNode(Z),this.treeAdapter.appendChild(W,Z)}_setEndLocation(X,W){if(this.treeAdapter.getNodeSourceCodeLocation(X)&&W.location){let Z=W.location,K=this.treeAdapter.getTagName(X),J=W.type===_.END_TAG&&K===W.tagName?{endTag:{...Z},endLine:Z.endLine,endCol:Z.endCol,endOffset:Z.endOffset}:{endLine:Z.startLine,endCol:Z.startCol,endOffset:Z.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(X,J)}}shouldProcessStartTagTokenInForeignContent(X){if(!this.currentNotInHTML)return!1;let W,Z;if(this.openElements.stackTop===0&&this.fragmentContext)W=this.fragmentContext,Z=this.fragmentContextID;else({current:W,currentTagId:Z}=this.openElements);if(X.tagID===Q.SVG&&this.treeAdapter.getTagName(W)===q.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(W)===x.MATHML)return!1;return this.tokenizer.inForeignNode||(X.tagID===Q.MGLYPH||X.tagID===Q.MALIGNMARK)&&Z!==void 0&&!this._isIntegrationPoint(Z,W,x.HTML)}_processToken(X){switch(X.type){case _.CHARACTER:{this.onCharacter(X);break}case _.NULL_CHARACTER:{this.onNullCharacter(X);break}case _.COMMENT:{this.onComment(X);break}case _.DOCTYPE:{this.onDoctype(X);break}case _.START_TAG:{this._processStartTag(X);break}case _.END_TAG:{this.onEndTag(X);break}case _.EOF:{this.onEof(X);break}case _.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(X);break}}}_isIntegrationPoint(X,W,Z){let K=this.treeAdapter.getNamespaceURI(W),J=this.treeAdapter.getAttrList(W);return z4(X,K,J,Z)}_reconstructActiveFormattingElements(){let X=this.activeFormattingElements.entries.length;if(X){let W=this.activeFormattingElements.entries.findIndex((K)=>K.type===z0.Marker||this.openElements.contains(K.element)),Z=W===-1?X-1:W-1;for(let K=Z;K>=0;K--){let J=this.activeFormattingElements.entries[K];this._insertElement(J.token,this.treeAdapter.getNamespaceURI(J.element)),J.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=j.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(Q.P),this.openElements.popUntilTagNamePopped(Q.P)}_resetInsertionMode(){for(let X=this.openElements.stackTop;X>=0;X--)switch(X===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[X]){case Q.TR:{this.insertionMode=j.IN_ROW;return}case Q.TBODY:case Q.THEAD:case Q.TFOOT:{this.insertionMode=j.IN_TABLE_BODY;return}case Q.CAPTION:{this.insertionMode=j.IN_CAPTION;return}case Q.COLGROUP:{this.insertionMode=j.IN_COLUMN_GROUP;return}case Q.TABLE:{this.insertionMode=j.IN_TABLE;return}case Q.BODY:{this.insertionMode=j.IN_BODY;return}case Q.FRAMESET:{this.insertionMode=j.IN_FRAMESET;return}case Q.SELECT:{this._resetInsertionModeForSelect(X);return}case Q.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case Q.HTML:{this.insertionMode=this.headElement?j.AFTER_HEAD:j.BEFORE_HEAD;return}case Q.TD:case Q.TH:{if(X>0){this.insertionMode=j.IN_CELL;return}break}case Q.HEAD:{if(X>0){this.insertionMode=j.IN_HEAD;return}break}}this.insertionMode=j.IN_BODY}_resetInsertionModeForSelect(X){if(X>0)for(let W=X-1;W>0;W--){let Z=this.openElements.tagIDs[W];if(Z===Q.TEMPLATE)break;else if(Z===Q.TABLE){this.insertionMode=j.IN_SELECT_IN_TABLE;return}}this.insertionMode=j.IN_SELECT}_isElementCausesFosterParenting(X){return F4.has(X)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let X=this.openElements.stackTop;X>=0;X--){let W=this.openElements.items[X];switch(this.openElements.tagIDs[X]){case Q.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(W)===x.HTML)return{parent:this.treeAdapter.getTemplateContent(W),beforeElement:null};break}case Q.TABLE:{let Z=this.treeAdapter.getParentNode(W);if(Z)return{parent:Z,beforeElement:W};return{parent:this.openElements.items[X-1],beforeElement:null}}default:}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(X){let W=this._findFosterParentingLocation();if(W.beforeElement)this.treeAdapter.insertBefore(W.parent,X,W.beforeElement);else this.treeAdapter.appendChild(W.parent,X)}_isSpecialElement(X,W){let Z=this.treeAdapter.getNamespaceURI(X);return c6[Z].has(W)}onCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){PZ(this,X);return}switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{J1(this,X);break}case j.BEFORE_HEAD:{Y1(this,X);break}case j.IN_HEAD:{V1(this,X);break}case j.IN_HEAD_NO_SCRIPT:{z1(this,X);break}case j.AFTER_HEAD:{j1(this,X);break}case j.IN_BODY:case j.IN_CAPTION:case j.IN_CELL:case j.IN_TEMPLATE:{B4(this,X);break}case j.TEXT:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:{this._insertCharacters(X);break}case j.IN_TABLE:case j.IN_TABLE_BODY:case j.IN_ROW:{oX(this,X);break}case j.IN_TABLE_TEXT:{y4(this,X);break}case j.IN_COLUMN_GROUP:{s1(this,X);break}case j.AFTER_BODY:{o1(this,X);break}case j.AFTER_AFTER_BODY:{r1(this,X);break}default:}}onNullCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){LZ(this,X);return}switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{J1(this,X);break}case j.BEFORE_HEAD:{Y1(this,X);break}case j.IN_HEAD:{V1(this,X);break}case j.IN_HEAD_NO_SCRIPT:{z1(this,X);break}case j.AFTER_HEAD:{j1(this,X);break}case j.TEXT:{this._insertCharacters(X);break}case j.IN_TABLE:case j.IN_TABLE_BODY:case j.IN_ROW:{oX(this,X);break}case j.IN_COLUMN_GROUP:{s1(this,X);break}case j.AFTER_BODY:{o1(this,X);break}case j.AFTER_AFTER_BODY:{r1(this,X);break}default:}}onComment(X){if(this.skipNextNewLine=!1,this.currentNotInHTML){nX(this,X);return}switch(this.insertionMode){case j.INITIAL:case j.BEFORE_HTML:case j.BEFORE_HEAD:case j.IN_HEAD:case j.IN_HEAD_NO_SCRIPT:case j.AFTER_HEAD:case j.IN_BODY:case j.IN_TABLE:case j.IN_CAPTION:case j.IN_COLUMN_GROUP:case j.IN_TABLE_BODY:case j.IN_ROW:case j.IN_CELL:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:case j.IN_TEMPLATE:case j.IN_FRAMESET:case j.AFTER_FRAMESET:{nX(this,X);break}case j.IN_TABLE_TEXT:{K1(this,X);break}case j.AFTER_BODY:{r9(this,X);break}case j.AFTER_AFTER_BODY:case j.AFTER_AFTER_FRAMESET:{s9(this,X);break}default:}}onDoctype(X){switch(this.skipNextNewLine=!1,this.insertionMode){case j.INITIAL:{o9(this,X);break}case j.BEFORE_HEAD:case j.IN_HEAD:case j.IN_HEAD_NO_SCRIPT:case j.AFTER_HEAD:{this._err(X,L.misplacedDoctype);break}case j.IN_TABLE_TEXT:{K1(this,X);break}default:}}onStartTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this._processStartTag(X),X.selfClosing&&!X.ackSelfClosing)this._err(X,L.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(X){if(this.shouldProcessStartTagTokenInForeignContent(X))xZ(this,X);else this._startTagOutsideForeignContent(X)}_startTagOutsideForeignContent(X){switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{n9(this,X);break}case j.BEFORE_HEAD:{e9(this,X);break}case j.IN_HEAD:{j0(this,X);break}case j.IN_HEAD_NO_SCRIPT:{ZW(this,X);break}case j.AFTER_HEAD:{KW(this,X);break}case j.IN_BODY:{n(this,X);break}case j.IN_TABLE:{c0(this,X);break}case j.IN_TABLE_TEXT:{K1(this,X);break}case j.IN_CAPTION:{XZ(this,X);break}case j.IN_COLUMN_GROUP:{W2(this,X);break}case j.IN_TABLE_BODY:{XX(this,X);break}case j.IN_ROW:{WX(this,X);break}case j.IN_CELL:{QZ(this,X);break}case j.IN_SELECT:{f4(this,X);break}case j.IN_SELECT_IN_TABLE:{JZ(this,X);break}case j.IN_TEMPLATE:{VZ(this,X);break}case j.AFTER_BODY:{jZ(this,X);break}case j.IN_FRAMESET:{HZ(this,X);break}case j.AFTER_FRAMESET:{UZ(this,X);break}case j.AFTER_AFTER_BODY:{qZ(this,X);break}case j.AFTER_AFTER_FRAMESET:{BZ(this,X);break}default:}}onEndTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this.currentNotInHTML)bZ(this,X);else this._endTagOutsideForeignContent(X)}_endTagOutsideForeignContent(X){switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{t9(this,X);break}case j.BEFORE_HEAD:{XW(this,X);break}case j.IN_HEAD:{WW(this,X);break}case j.IN_HEAD_NO_SCRIPT:{QW(this,X);break}case j.AFTER_HEAD:{JW(this,X);break}case j.IN_BODY:{e1(this,X);break}case j.TEXT:{aW(this,X);break}case j.IN_TABLE:{H1(this,X);break}case j.IN_TABLE_TEXT:{K1(this,X);break}case j.IN_CAPTION:{WZ(this,X);break}case j.IN_COLUMN_GROUP:{ZZ(this,X);break}case j.IN_TABLE_BODY:{tX(this,X);break}case j.IN_ROW:{R4(this,X);break}case j.IN_CELL:{KZ(this,X);break}case j.IN_SELECT:{C4(this,X);break}case j.IN_SELECT_IN_TABLE:{YZ(this,X);break}case j.IN_TEMPLATE:{zZ(this,X);break}case j.AFTER_BODY:{N4(this,X);break}case j.IN_FRAMESET:{wZ(this,X);break}case j.AFTER_FRAMESET:{FZ(this,X);break}case j.AFTER_AFTER_BODY:{r1(this,X);break}default:}}onEof(X){switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{J1(this,X);break}case j.BEFORE_HEAD:{Y1(this,X);break}case j.IN_HEAD:{V1(this,X);break}case j.IN_HEAD_NO_SCRIPT:{z1(this,X);break}case j.AFTER_HEAD:{j1(this,X);break}case j.IN_BODY:case j.IN_TABLE:case j.IN_CAPTION:case j.IN_COLUMN_GROUP:case j.IN_TABLE_BODY:case j.IN_ROW:case j.IN_CELL:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:{b4(this,X);break}case j.TEXT:{iW(this,X);break}case j.IN_TABLE_TEXT:{K1(this,X);break}case j.IN_TEMPLATE:{h4(this,X);break}case j.AFTER_BODY:case j.IN_FRAMESET:case j.AFTER_FRAMESET:case j.AFTER_AFTER_BODY:case j.AFTER_AFTER_FRAMESET:{X2(this,X);break}default:}}onWhitespaceCharacter(X){if(this.skipNextNewLine){if(this.skipNextNewLine=!1,X.chars.charCodeAt(0)===Y.LINE_FEED){if(X.chars.length===1)return;X.chars=X.chars.substr(1)}}if(this.tokenizer.inForeignNode){this._insertCharacters(X);return}switch(this.insertionMode){case j.IN_HEAD:case j.IN_HEAD_NO_SCRIPT:case j.AFTER_HEAD:case j.TEXT:case j.IN_COLUMN_GROUP:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:case j.IN_FRAMESET:case j.AFTER_FRAMESET:{this._insertCharacters(X);break}case j.IN_BODY:case j.IN_CAPTION:case j.IN_CELL:case j.IN_TEMPLATE:case j.AFTER_BODY:case j.AFTER_AFTER_BODY:case j.AFTER_AFTER_FRAMESET:{q4(this,X);break}case j.IN_TABLE:case j.IN_TABLE_BODY:case j.IN_ROW:{oX(this,X);break}case j.IN_TABLE_TEXT:{v4(this,X);break}default:}}}function A9(X,W){let Z=X.activeFormattingElements.getElementEntryInScopeWithTagName(W.tagName);if(Z){if(!X.openElements.contains(Z.element))X.activeFormattingElements.removeEntry(Z),Z=null;else if(!X.openElements.hasInScope(W.tagID))Z=null}else x4(X,W);return Z}function c9(X,W){let Z=null,K=X.openElements.stackTop;for(;K>=0;K--){let J=X.openElements.items[K];if(J===W.element)break;if(X._isSpecialElement(J,X.openElements.tagIDs[K]))Z=J}if(!Z)X.openElements.shortenToLength(Math.max(K,0)),X.activeFormattingElements.removeEntry(W);return Z}function a9(X,W,Z){let K=W,J=X.openElements.getCommonAncestor(W);for(let V=0,H=J;H!==Z;V++,H=J){J=X.openElements.getCommonAncestor(H);let U=X.activeFormattingElements.getElementEntry(H),F=U&&V>=l9;if(!U||F){if(F)X.activeFormattingElements.removeEntry(U);X.openElements.remove(H)}else{if(H=i9(X,U),K===W)X.activeFormattingElements.bookmark=U;X.treeAdapter.detachNode(K),X.treeAdapter.appendChild(H,K),K=H}}return K}function i9(X,W){let Z=X.treeAdapter.getNamespaceURI(W.element),K=X.treeAdapter.createElement(W.token.tagName,Z,W.token.attrs);return X.openElements.replace(W.element,K),W.element=K,K}function d9(X,W,Z){let K=X.treeAdapter.getTagName(W),J=$0(K);if(X._isElementCausesFosterParenting(J))X._fosterParentElement(Z);else{let V=X.treeAdapter.getNamespaceURI(W);if(J===Q.TEMPLATE&&V===x.HTML)W=X.treeAdapter.getTemplateContent(W);X.treeAdapter.appendChild(W,Z)}}function p9(X,W,Z){let K=X.treeAdapter.getNamespaceURI(Z.element),{token:J}=Z,V=X.treeAdapter.createElement(J.tagName,K,J.attrs);X._adoptNodes(W,V),X.treeAdapter.appendChild(W,V),X.activeFormattingElements.insertElementAfterBookmark(V,J),X.activeFormattingElements.removeEntry(Z),X.openElements.remove(Z.element),X.openElements.insertAfter(W,V,J.tagID)}function eX(X,W){for(let Z=0;Z<S9;Z++){let K=A9(X,W);if(!K)break;let J=c9(X,K);if(!J)break;X.activeFormattingElements.bookmark=K;let V=a9(X,J,K.element),H=X.openElements.getCommonAncestor(K.element);if(X.treeAdapter.detachNode(V),H)d9(X,H,V);p9(X,J,K)}}function nX(X,W){X._appendCommentNode(W,X.openElements.currentTmplContentOrNode)}function r9(X,W){X._appendCommentNode(W,X.openElements.items[0])}function s9(X,W){X._appendCommentNode(W,X.document)}function X2(X,W){if(X.stopped=!0,W.location){let Z=X.fragmentContext?0:2;for(let K=X.openElements.stackTop;K>=Z;K--)X._setEndLocation(X.openElements.items[K],W);if(!X.fragmentContext&&X.openElements.stackTop>=0){let K=X.openElements.items[0],J=X.treeAdapter.getNodeSourceCodeLocation(K);if(J&&!J.endTag){if(X._setEndLocation(K,W),X.openElements.stackTop>=1){let V=X.openElements.items[1],H=X.treeAdapter.getNodeSourceCodeLocation(V);if(H&&!H.endTag)X._setEndLocation(V,W)}}}}}function o9(X,W){X._setDocumentType(W);let Z=W.forceQuirks?e.QUIRKS:K4(W);if(!Q4(W))X._err(W,L.nonConformingDoctype);X.treeAdapter.setDocumentMode(X.document,Z),X.insertionMode=j.BEFORE_HTML}function Q1(X,W){X._err(W,L.missingDoctype,!0),X.treeAdapter.setDocumentMode(X.document,e.QUIRKS),X.insertionMode=j.BEFORE_HTML,X._processToken(W)}function n9(X,W){if(W.tagID===Q.HTML)X._insertElement(W,x.HTML),X.insertionMode=j.BEFORE_HEAD;else J1(X,W)}function t9(X,W){let Z=W.tagID;if(Z===Q.HTML||Z===Q.HEAD||Z===Q.BODY||Z===Q.BR)J1(X,W)}function J1(X,W){X._insertFakeRootElement(),X.insertionMode=j.BEFORE_HEAD,X._processToken(W)}function e9(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.HEAD:{X._insertElement(W,x.HTML),X.headElement=X.openElements.current,X.insertionMode=j.IN_HEAD;break}default:Y1(X,W)}}function XW(X,W){let Z=W.tagID;if(Z===Q.HEAD||Z===Q.BODY||Z===Q.HTML||Z===Q.BR)Y1(X,W);else X._err(W,L.endTagWithoutMatchingOpenElement)}function Y1(X,W){X._insertFakeElement(q.HEAD,Q.HEAD),X.headElement=X.openElements.current,X.insertionMode=j.IN_HEAD,X._processToken(W)}function j0(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:{X._appendElement(W,x.HTML),W.ackSelfClosing=!0;break}case Q.TITLE:{X._switchToTextParsing(W,o.RCDATA);break}case Q.NOSCRIPT:{if(X.options.scriptingEnabled)X._switchToTextParsing(W,o.RAWTEXT);else X._insertElement(W,x.HTML),X.insertionMode=j.IN_HEAD_NO_SCRIPT;break}case Q.NOFRAMES:case Q.STYLE:{X._switchToTextParsing(W,o.RAWTEXT);break}case Q.SCRIPT:{X._switchToTextParsing(W,o.SCRIPT_DATA);break}case Q.TEMPLATE:{X._insertTemplate(W),X.activeFormattingElements.insertMarker(),X.framesetOk=!1,X.insertionMode=j.IN_TEMPLATE,X.tmplInsertionModeStack.unshift(j.IN_TEMPLATE);break}case Q.HEAD:{X._err(W,L.misplacedStartTagForHeadElement);break}default:V1(X,W)}}function WW(X,W){switch(W.tagID){case Q.HEAD:{X.openElements.pop(),X.insertionMode=j.AFTER_HEAD;break}case Q.BODY:case Q.BR:case Q.HTML:{V1(X,W);break}case Q.TEMPLATE:{G0(X,W);break}default:X._err(W,L.endTagWithoutMatchingOpenElement)}}function G0(X,W){if(X.openElements.tmplCount>0){if(X.openElements.generateImpliedEndTagsThoroughly(),X.openElements.currentTagId!==Q.TEMPLATE)X._err(W,L.closingOfElementWithOpenChildElements);X.openElements.popUntilTagNamePopped(Q.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode()}else X._err(W,L.endTagWithoutMatchingOpenElement)}function V1(X,W){X.openElements.pop(),X.insertionMode=j.AFTER_HEAD,X._processToken(W)}function ZW(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.BASEFONT:case Q.BGSOUND:case Q.HEAD:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.STYLE:{j0(X,W);break}case Q.NOSCRIPT:{X._err(W,L.nestedNoscriptInHead);break}default:z1(X,W)}}function QW(X,W){switch(W.tagID){case Q.NOSCRIPT:{X.openElements.pop(),X.insertionMode=j.IN_HEAD;break}case Q.BR:{z1(X,W);break}default:X._err(W,L.endTagWithoutMatchingOpenElement)}}function z1(X,W){let Z=W.type===_.EOF?L.openElementsLeftAfterEof:L.disallowedContentInNoscriptInHead;X._err(W,Z),X.openElements.pop(),X.insertionMode=j.IN_HEAD,X._processToken(W)}function KW(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.BODY:{X._insertElement(W,x.HTML),X.framesetOk=!1,X.insertionMode=j.IN_BODY;break}case Q.FRAMESET:{X._insertElement(W,x.HTML),X.insertionMode=j.IN_FRAMESET;break}case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.SCRIPT:case Q.STYLE:case Q.TEMPLATE:case Q.TITLE:{X._err(W,L.abandonedHeadElementChild),X.openElements.push(X.headElement,Q.HEAD),j0(X,W),X.openElements.remove(X.headElement);break}case Q.HEAD:{X._err(W,L.misplacedStartTagForHeadElement);break}default:j1(X,W)}}function JW(X,W){switch(W.tagID){case Q.BODY:case Q.HTML:case Q.BR:{j1(X,W);break}case Q.TEMPLATE:{G0(X,W);break}default:X._err(W,L.endTagWithoutMatchingOpenElement)}}function j1(X,W){X._insertFakeElement(q.BODY,Q.BODY),X.insertionMode=j.IN_BODY,t1(X,W)}function t1(X,W){switch(W.type){case _.CHARACTER:{B4(X,W);break}case _.WHITESPACE_CHARACTER:{q4(X,W);break}case _.COMMENT:{nX(X,W);break}case _.START_TAG:{n(X,W);break}case _.END_TAG:{e1(X,W);break}case _.EOF:{b4(X,W);break}default:}}function q4(X,W){X._reconstructActiveFormattingElements(),X._insertCharacters(W)}function B4(X,W){X._reconstructActiveFormattingElements(),X._insertCharacters(W),X.framesetOk=!1}function YW(X,W){if(X.openElements.tmplCount===0)X.treeAdapter.adoptAttributes(X.openElements.items[0],W.attrs)}function VW(X,W){let Z=X.openElements.tryPeekProperlyNestedBodyElement();if(Z&&X.openElements.tmplCount===0)X.framesetOk=!1,X.treeAdapter.adoptAttributes(Z,W.attrs)}function zW(X,W){let Z=X.openElements.tryPeekProperlyNestedBodyElement();if(X.framesetOk&&Z)X.treeAdapter.detachNode(Z),X.openElements.popAllUpToHtmlElement(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_FRAMESET}function jW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(W,x.HTML)}function HW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();if(X.openElements.currentTagId!==void 0&&W1.has(X.openElements.currentTagId))X.openElements.pop();X._insertElement(W,x.HTML)}function wW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(W,x.HTML),X.skipNextNewLine=!0,X.framesetOk=!1}function UW(X,W){let Z=X.openElements.tmplCount>0;if(!X.formElement||Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();if(X._insertElement(W,x.HTML),!Z)X.formElement=X.openElements.current}}function FW(X,W){X.framesetOk=!1;let Z=W.tagID;for(let K=X.openElements.stackTop;K>=0;K--){let J=X.openElements.tagIDs[K];if(Z===Q.LI&&J===Q.LI||(Z===Q.DD||Z===Q.DT)&&(J===Q.DD||J===Q.DT)){X.openElements.generateImpliedEndTagsWithExclusion(J),X.openElements.popUntilTagNamePopped(J);break}if(J!==Q.ADDRESS&&J!==Q.DIV&&J!==Q.P&&X._isSpecialElement(X.openElements.items[K],J))break}if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(W,x.HTML)}function qW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(W,x.HTML),X.tokenizer.state=o.PLAINTEXT}function BW(X,W){if(X.openElements.hasInScope(Q.BUTTON))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.BUTTON);X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML),X.framesetOk=!1}function LW(X,W){let Z=X.activeFormattingElements.getElementEntryInScopeWithTagName(q.A);if(Z)eX(X,W),X.openElements.remove(Z.element),X.activeFormattingElements.removeEntry(Z);X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML),X.activeFormattingElements.pushElement(X.openElements.current,W)}function PW(X,W){X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML),X.activeFormattingElements.pushElement(X.openElements.current,W)}function xW(X,W){if(X._reconstructActiveFormattingElements(),X.openElements.hasInScope(Q.NOBR))eX(X,W),X._reconstructActiveFormattingElements();X._insertElement(W,x.HTML),X.activeFormattingElements.pushElement(X.openElements.current,W)}function bW(X,W){X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML),X.activeFormattingElements.insertMarker(),X.framesetOk=!1}function vW(X,W){if(X.treeAdapter.getDocumentMode(X.document)!==e.QUIRKS&&X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(W,x.HTML),X.framesetOk=!1,X.insertionMode=j.IN_TABLE}function L4(X,W){X._reconstructActiveFormattingElements(),X._appendElement(W,x.HTML),X.framesetOk=!1,W.ackSelfClosing=!0}function P4(X){let W=c1(X,L0.TYPE);return W!=null&&W.toLowerCase()===I9}function yW(X,W){if(X._reconstructActiveFormattingElements(),X._appendElement(W,x.HTML),!P4(W))X.framesetOk=!1;W.ackSelfClosing=!0}function OW(X,W){X._appendElement(W,x.HTML),W.ackSelfClosing=!0}function RW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._appendElement(W,x.HTML),X.framesetOk=!1,W.ackSelfClosing=!0}function fW(X,W){W.tagName=q.IMG,W.tagID=Q.IMG,L4(X,W)}function CW(X,W){X._insertElement(W,x.HTML),X.skipNextNewLine=!0,X.tokenizer.state=o.RCDATA,X.originalInsertionMode=X.insertionMode,X.framesetOk=!1,X.insertionMode=j.TEXT}function hW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._reconstructActiveFormattingElements(),X.framesetOk=!1,X._switchToTextParsing(W,o.RAWTEXT)}function NW(X,W){X.framesetOk=!1,X._switchToTextParsing(W,o.RAWTEXT)}function w4(X,W){X._switchToTextParsing(W,o.RAWTEXT)}function MW(X,W){X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML),X.framesetOk=!1,X.insertionMode=X.insertionMode===j.IN_TABLE||X.insertionMode===j.IN_CAPTION||X.insertionMode===j.IN_TABLE_BODY||X.insertionMode===j.IN_ROW||X.insertionMode===j.IN_CELL?j.IN_SELECT_IN_TABLE:j.IN_SELECT}function gW(X,W){if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML)}function DW(X,W){if(X.openElements.hasInScope(Q.RUBY))X.openElements.generateImpliedEndTags();X._insertElement(W,x.HTML)}function mW(X,W){if(X.openElements.hasInScope(Q.RUBY))X.openElements.generateImpliedEndTagsWithExclusion(Q.RTC);X._insertElement(W,x.HTML)}function $W(X,W){if(X._reconstructActiveFormattingElements(),rX(W),p1(W),W.selfClosing)X._appendElement(W,x.MATHML);else X._insertElement(W,x.MATHML);W.ackSelfClosing=!0}function GW(X,W){if(X._reconstructActiveFormattingElements(),sX(W),p1(W),W.selfClosing)X._appendElement(W,x.SVG);else X._insertElement(W,x.SVG);W.ackSelfClosing=!0}function U4(X,W){X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML)}function n(X,W){switch(W.tagID){case Q.I:case Q.S:case Q.B:case Q.U:case Q.EM:case Q.TT:case Q.BIG:case Q.CODE:case Q.FONT:case Q.SMALL:case Q.STRIKE:case Q.STRONG:{PW(X,W);break}case Q.A:{LW(X,W);break}case Q.H1:case Q.H2:case Q.H3:case Q.H4:case Q.H5:case Q.H6:{HW(X,W);break}case Q.P:case Q.DL:case Q.OL:case Q.UL:case Q.DIV:case Q.DIR:case Q.NAV:case Q.MAIN:case Q.MENU:case Q.ASIDE:case Q.CENTER:case Q.FIGURE:case Q.FOOTER:case Q.HEADER:case Q.HGROUP:case Q.DIALOG:case Q.DETAILS:case Q.ADDRESS:case Q.ARTICLE:case Q.SEARCH:case Q.SECTION:case Q.SUMMARY:case Q.FIELDSET:case Q.BLOCKQUOTE:case Q.FIGCAPTION:{jW(X,W);break}case Q.LI:case Q.DD:case Q.DT:{FW(X,W);break}case Q.BR:case Q.IMG:case Q.WBR:case Q.AREA:case Q.EMBED:case Q.KEYGEN:{L4(X,W);break}case Q.HR:{RW(X,W);break}case Q.RB:case Q.RTC:{DW(X,W);break}case Q.RT:case Q.RP:{mW(X,W);break}case Q.PRE:case Q.LISTING:{wW(X,W);break}case Q.XMP:{hW(X,W);break}case Q.SVG:{GW(X,W);break}case Q.HTML:{YW(X,W);break}case Q.BASE:case Q.LINK:case Q.META:case Q.STYLE:case Q.TITLE:case Q.SCRIPT:case Q.BGSOUND:case Q.BASEFONT:case Q.TEMPLATE:{j0(X,W);break}case Q.BODY:{VW(X,W);break}case Q.FORM:{UW(X,W);break}case Q.NOBR:{xW(X,W);break}case Q.MATH:{$W(X,W);break}case Q.TABLE:{vW(X,W);break}case Q.INPUT:{yW(X,W);break}case Q.PARAM:case Q.TRACK:case Q.SOURCE:{OW(X,W);break}case Q.IMAGE:{fW(X,W);break}case Q.BUTTON:{BW(X,W);break}case Q.APPLET:case Q.OBJECT:case Q.MARQUEE:{bW(X,W);break}case Q.IFRAME:{NW(X,W);break}case Q.SELECT:{MW(X,W);break}case Q.OPTION:case Q.OPTGROUP:{gW(X,W);break}case Q.NOEMBED:case Q.NOFRAMES:{w4(X,W);break}case Q.FRAMESET:{zW(X,W);break}case Q.TEXTAREA:{CW(X,W);break}case Q.NOSCRIPT:{if(X.options.scriptingEnabled)w4(X,W);else U4(X,W);break}case Q.PLAINTEXT:{qW(X,W);break}case Q.COL:case Q.TH:case Q.TD:case Q.TR:case Q.HEAD:case Q.FRAME:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.CAPTION:case Q.COLGROUP:break;default:U4(X,W)}}function EW(X,W){if(X.openElements.hasInScope(Q.BODY)){if(X.insertionMode=j.AFTER_BODY,X.options.sourceCodeLocationInfo){let Z=X.openElements.tryPeekProperlyNestedBodyElement();if(Z)X._setEndLocation(Z,W)}}}function _W(X,W){if(X.openElements.hasInScope(Q.BODY))X.insertionMode=j.AFTER_BODY,N4(X,W)}function kW(X,W){let Z=W.tagID;if(X.openElements.hasInScope(Z))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Z)}function uW(X){let W=X.openElements.tmplCount>0,{formElement:Z}=X;if(!W)X.formElement=null;if((Z||W)&&X.openElements.hasInScope(Q.FORM)){if(X.openElements.generateImpliedEndTags(),W)X.openElements.popUntilTagNamePopped(Q.FORM);else if(Z)X.openElements.remove(Z)}}function IW(X){if(!X.openElements.hasInButtonScope(Q.P))X._insertFakeElement(q.P,Q.P);X._closePElement()}function SW(X){if(X.openElements.hasInListItemScope(Q.LI))X.openElements.generateImpliedEndTagsWithExclusion(Q.LI),X.openElements.popUntilTagNamePopped(Q.LI)}function lW(X,W){let Z=W.tagID;if(X.openElements.hasInScope(Z))X.openElements.generateImpliedEndTagsWithExclusion(Z),X.openElements.popUntilTagNamePopped(Z)}function TW(X){if(X.openElements.hasNumberedHeaderInScope())X.openElements.generateImpliedEndTags(),X.openElements.popUntilNumberedHeaderPopped()}function AW(X,W){let Z=W.tagID;if(X.openElements.hasInScope(Z))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Z),X.activeFormattingElements.clearToLastMarker()}function cW(X){X._reconstructActiveFormattingElements(),X._insertFakeElement(q.BR,Q.BR),X.openElements.pop(),X.framesetOk=!1}function x4(X,W){let{tagName:Z,tagID:K}=W;for(let J=X.openElements.stackTop;J>0;J--){let V=X.openElements.items[J],H=X.openElements.tagIDs[J];if(K===H&&(K!==Q.UNKNOWN||X.treeAdapter.getTagName(V)===Z)){if(X.openElements.generateImpliedEndTagsWithExclusion(K),X.openElements.stackTop>=J)X.openElements.shortenToLength(J);break}if(X._isSpecialElement(V,H))break}}function e1(X,W){switch(W.tagID){case Q.A:case Q.B:case Q.I:case Q.S:case Q.U:case Q.EM:case Q.TT:case Q.BIG:case Q.CODE:case Q.FONT:case Q.NOBR:case Q.SMALL:case Q.STRIKE:case Q.STRONG:{eX(X,W);break}case Q.P:{IW(X);break}case Q.DL:case Q.UL:case Q.OL:case Q.DIR:case Q.DIV:case Q.NAV:case Q.PRE:case Q.MAIN:case Q.MENU:case Q.ASIDE:case Q.BUTTON:case Q.CENTER:case Q.FIGURE:case Q.FOOTER:case Q.HEADER:case Q.HGROUP:case Q.DIALOG:case Q.ADDRESS:case Q.ARTICLE:case Q.DETAILS:case Q.SEARCH:case Q.SECTION:case Q.SUMMARY:case Q.LISTING:case Q.FIELDSET:case Q.BLOCKQUOTE:case Q.FIGCAPTION:{kW(X,W);break}case Q.LI:{SW(X);break}case Q.DD:case Q.DT:{lW(X,W);break}case Q.H1:case Q.H2:case Q.H3:case Q.H4:case Q.H5:case Q.H6:{TW(X);break}case Q.BR:{cW(X);break}case Q.BODY:{EW(X,W);break}case Q.HTML:{_W(X,W);break}case Q.FORM:{uW(X);break}case Q.APPLET:case Q.OBJECT:case Q.MARQUEE:{AW(X,W);break}case Q.TEMPLATE:{G0(X,W);break}default:x4(X,W)}}function b4(X,W){if(X.tmplInsertionModeStack.length>0)h4(X,W);else X2(X,W)}function aW(X,W){var Z;if(W.tagID===Q.SCRIPT)(Z=X.scriptHandler)===null||Z===void 0||Z.call(X,X.openElements.current);X.openElements.pop(),X.insertionMode=X.originalInsertionMode}function iW(X,W){X._err(W,L.eofInElementThatCanContainOnlyText),X.openElements.pop(),X.insertionMode=X.originalInsertionMode,X.onEof(W)}function oX(X,W){if(X.openElements.currentTagId!==void 0&&F4.has(X.openElements.currentTagId))switch(X.pendingCharacterTokens.length=0,X.hasNonWhitespacePendingCharacterToken=!1,X.originalInsertionMode=X.insertionMode,X.insertionMode=j.IN_TABLE_TEXT,W.type){case _.CHARACTER:{y4(X,W);break}case _.WHITESPACE_CHARACTER:{v4(X,W);break}}else w1(X,W)}function dW(X,W){X.openElements.clearBackToTableContext(),X.activeFormattingElements.insertMarker(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_CAPTION}function pW(X,W){X.openElements.clearBackToTableContext(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_COLUMN_GROUP}function rW(X,W){X.openElements.clearBackToTableContext(),X._insertFakeElement(q.COLGROUP,Q.COLGROUP),X.insertionMode=j.IN_COLUMN_GROUP,W2(X,W)}function sW(X,W){X.openElements.clearBackToTableContext(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_TABLE_BODY}function oW(X,W){X.openElements.clearBackToTableContext(),X._insertFakeElement(q.TBODY,Q.TBODY),X.insertionMode=j.IN_TABLE_BODY,XX(X,W)}function nW(X,W){if(X.openElements.hasInTableScope(Q.TABLE))X.openElements.popUntilTagNamePopped(Q.TABLE),X._resetInsertionMode(),X._processStartTag(W)}function tW(X,W){if(P4(W))X._appendElement(W,x.HTML);else w1(X,W);W.ackSelfClosing=!0}function eW(X,W){if(!X.formElement&&X.openElements.tmplCount===0)X._insertElement(W,x.HTML),X.formElement=X.openElements.current,X.openElements.pop()}function c0(X,W){switch(W.tagID){case Q.TD:case Q.TH:case Q.TR:{oW(X,W);break}case Q.STYLE:case Q.SCRIPT:case Q.TEMPLATE:{j0(X,W);break}case Q.COL:{rW(X,W);break}case Q.FORM:{eW(X,W);break}case Q.TABLE:{nW(X,W);break}case Q.TBODY:case Q.TFOOT:case Q.THEAD:{sW(X,W);break}case Q.INPUT:{tW(X,W);break}case Q.CAPTION:{dW(X,W);break}case Q.COLGROUP:{pW(X,W);break}default:w1(X,W)}}function H1(X,W){switch(W.tagID){case Q.TABLE:{if(X.openElements.hasInTableScope(Q.TABLE))X.openElements.popUntilTagNamePopped(Q.TABLE),X._resetInsertionMode();break}case Q.TEMPLATE:{G0(X,W);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TBODY:case Q.TD:case Q.TFOOT:case Q.TH:case Q.THEAD:case Q.TR:break;default:w1(X,W)}}function w1(X,W){let Z=X.fosterParentingEnabled;X.fosterParentingEnabled=!0,t1(X,W),X.fosterParentingEnabled=Z}function v4(X,W){X.pendingCharacterTokens.push(W)}function y4(X,W){X.pendingCharacterTokens.push(W),X.hasNonWhitespacePendingCharacterToken=!0}function K1(X,W){let Z=0;if(X.hasNonWhitespacePendingCharacterToken)for(;Z<X.pendingCharacterTokens.length;Z++)w1(X,X.pendingCharacterTokens[Z]);else for(;Z<X.pendingCharacterTokens.length;Z++)X._insertCharacters(X.pendingCharacterTokens[Z]);X.insertionMode=X.originalInsertionMode,X._processToken(W)}var O4=new Set([Q.CAPTION,Q.COL,Q.COLGROUP,Q.TBODY,Q.TD,Q.TFOOT,Q.TH,Q.THEAD,Q.TR]);function XZ(X,W){let Z=W.tagID;if(O4.has(Z)){if(X.openElements.hasInTableScope(Q.CAPTION))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=j.IN_TABLE,c0(X,W)}else n(X,W)}function WZ(X,W){let Z=W.tagID;switch(Z){case Q.CAPTION:case Q.TABLE:{if(X.openElements.hasInTableScope(Q.CAPTION)){if(X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=j.IN_TABLE,Z===Q.TABLE)H1(X,W)}break}case Q.BODY:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TBODY:case Q.TD:case Q.TFOOT:case Q.TH:case Q.THEAD:case Q.TR:break;default:e1(X,W)}}function W2(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.COL:{X._appendElement(W,x.HTML),W.ackSelfClosing=!0;break}case Q.TEMPLATE:{j0(X,W);break}default:s1(X,W)}}function ZZ(X,W){switch(W.tagID){case Q.COLGROUP:{if(X.openElements.currentTagId===Q.COLGROUP)X.openElements.pop(),X.insertionMode=j.IN_TABLE;break}case Q.TEMPLATE:{G0(X,W);break}case Q.COL:break;default:s1(X,W)}}function s1(X,W){if(X.openElements.currentTagId===Q.COLGROUP)X.openElements.pop(),X.insertionMode=j.IN_TABLE,X._processToken(W)}function XX(X,W){switch(W.tagID){case Q.TR:{X.openElements.clearBackToTableBodyContext(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_ROW;break}case Q.TH:case Q.TD:{X.openElements.clearBackToTableBodyContext(),X._insertFakeElement(q.TR,Q.TR),X.insertionMode=j.IN_ROW,WX(X,W);break}case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE,c0(X,W);break}default:c0(X,W)}}function tX(X,W){let Z=W.tagID;switch(W.tagID){case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasInTableScope(Z))X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE;break}case Q.TABLE:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE,H1(X,W);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TD:case Q.TH:case Q.TR:break;default:H1(X,W)}}function WX(X,W){switch(W.tagID){case Q.TH:case Q.TD:{X.openElements.clearBackToTableRowContext(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_CELL,X.activeFormattingElements.insertMarker();break}case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.TR:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY,XX(X,W);break}default:c0(X,W)}}function R4(X,W){switch(W.tagID){case Q.TR:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY;break}case Q.TABLE:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY,tX(X,W);break}case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasInTableScope(W.tagID)||X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY,tX(X,W);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TD:case Q.TH:break;default:H1(X,W)}}function QZ(X,W){let Z=W.tagID;if(O4.has(Z)){if(X.openElements.hasInTableScope(Q.TD)||X.openElements.hasInTableScope(Q.TH))X._closeTableCell(),WX(X,W)}else n(X,W)}function KZ(X,W){let Z=W.tagID;switch(Z){case Q.TD:case Q.TH:{if(X.openElements.hasInTableScope(Z))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Z),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=j.IN_ROW;break}case Q.TABLE:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.TR:{if(X.openElements.hasInTableScope(Z))X._closeTableCell(),R4(X,W);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:break;default:e1(X,W)}}function f4(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.OPTION:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();X._insertElement(W,x.HTML);break}case Q.OPTGROUP:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();X._insertElement(W,x.HTML);break}case Q.HR:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();X._appendElement(W,x.HTML),W.ackSelfClosing=!0;break}case Q.INPUT:case Q.KEYGEN:case Q.TEXTAREA:case Q.SELECT:{if(X.openElements.hasInSelectScope(Q.SELECT)){if(X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),W.tagID!==Q.SELECT)X._processStartTag(W)}break}case Q.SCRIPT:case Q.TEMPLATE:{j0(X,W);break}default:}}function C4(X,W){switch(W.tagID){case Q.OPTGROUP:{if(X.openElements.stackTop>0&&X.openElements.currentTagId===Q.OPTION&&X.openElements.tagIDs[X.openElements.stackTop-1]===Q.OPTGROUP)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();break}case Q.OPTION:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();break}case Q.SELECT:{if(X.openElements.hasInSelectScope(Q.SELECT))X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode();break}case Q.TEMPLATE:{G0(X,W);break}default:}}function JZ(X,W){let Z=W.tagID;if(Z===Q.CAPTION||Z===Q.TABLE||Z===Q.TBODY||Z===Q.TFOOT||Z===Q.THEAD||Z===Q.TR||Z===Q.TD||Z===Q.TH)X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),X._processStartTag(W);else f4(X,W)}function YZ(X,W){let Z=W.tagID;if(Z===Q.CAPTION||Z===Q.TABLE||Z===Q.TBODY||Z===Q.TFOOT||Z===Q.THEAD||Z===Q.TR||Z===Q.TD||Z===Q.TH){if(X.openElements.hasInTableScope(Z))X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),X.onEndTag(W)}else C4(X,W)}function VZ(X,W){switch(W.tagID){case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.SCRIPT:case Q.STYLE:case Q.TEMPLATE:case Q.TITLE:{j0(X,W);break}case Q.CAPTION:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:{X.tmplInsertionModeStack[0]=j.IN_TABLE,X.insertionMode=j.IN_TABLE,c0(X,W);break}case Q.COL:{X.tmplInsertionModeStack[0]=j.IN_COLUMN_GROUP,X.insertionMode=j.IN_COLUMN_GROUP,W2(X,W);break}case Q.TR:{X.tmplInsertionModeStack[0]=j.IN_TABLE_BODY,X.insertionMode=j.IN_TABLE_BODY,XX(X,W);break}case Q.TD:case Q.TH:{X.tmplInsertionModeStack[0]=j.IN_ROW,X.insertionMode=j.IN_ROW,WX(X,W);break}default:X.tmplInsertionModeStack[0]=j.IN_BODY,X.insertionMode=j.IN_BODY,n(X,W)}}function zZ(X,W){if(W.tagID===Q.TEMPLATE)G0(X,W)}function h4(X,W){if(X.openElements.tmplCount>0)X.openElements.popUntilTagNamePopped(Q.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode(),X.onEof(W);else X2(X,W)}function jZ(X,W){if(W.tagID===Q.HTML)n(X,W);else o1(X,W)}function N4(X,W){var Z;if(W.tagID===Q.HTML){if(!X.fragmentContext)X.insertionMode=j.AFTER_AFTER_BODY;if(X.options.sourceCodeLocationInfo&&X.openElements.tagIDs[0]===Q.HTML){X._setEndLocation(X.openElements.items[0],W);let K=X.openElements.items[1];if(K&&!((Z=X.treeAdapter.getNodeSourceCodeLocation(K))===null||Z===void 0?void 0:Z.endTag))X._setEndLocation(K,W)}}else o1(X,W)}function o1(X,W){X.insertionMode=j.IN_BODY,t1(X,W)}function HZ(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.FRAMESET:{X._insertElement(W,x.HTML);break}case Q.FRAME:{X._appendElement(W,x.HTML),W.ackSelfClosing=!0;break}case Q.NOFRAMES:{j0(X,W);break}default:}}function wZ(X,W){if(W.tagID===Q.FRAMESET&&!X.openElements.isRootHtmlElementCurrent()){if(X.openElements.pop(),!X.fragmentContext&&X.openElements.currentTagId!==Q.FRAMESET)X.insertionMode=j.AFTER_FRAMESET}}function UZ(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.NOFRAMES:{j0(X,W);break}default:}}function FZ(X,W){if(W.tagID===Q.HTML)X.insertionMode=j.AFTER_AFTER_FRAMESET}function qZ(X,W){if(W.tagID===Q.HTML)n(X,W);else r1(X,W)}function r1(X,W){X.insertionMode=j.IN_BODY,t1(X,W)}function BZ(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.NOFRAMES:{j0(X,W);break}default:}}function LZ(X,W){W.chars=l,X._insertCharacters(W)}function PZ(X,W){X._insertCharacters(W),X.framesetOk=!1}function M4(X){while(X.treeAdapter.getNamespaceURI(X.openElements.current)!==x.HTML&&X.openElements.currentTagId!==void 0&&!X._isIntegrationPoint(X.openElements.currentTagId,X.openElements.current))X.openElements.pop()}function xZ(X,W){if(Y4(W))M4(X),X._startTagOutsideForeignContent(W);else{let Z=X._getAdjustedCurrentElement(),K=X.treeAdapter.getNamespaceURI(Z);if(K===x.MATHML)rX(W);else if(K===x.SVG)V4(W),sX(W);if(p1(W),W.selfClosing)X._appendElement(W,K);else X._insertElement(W,K);W.ackSelfClosing=!0}}function bZ(X,W){if(W.tagID===Q.P||W.tagID===Q.BR){M4(X),X._endTagOutsideForeignContent(W);return}for(let Z=X.openElements.stackTop;Z>0;Z--){let K=X.openElements.items[Z];if(X.treeAdapter.getNamespaceURI(K)===x.HTML){X._endTagOutsideForeignContent(W);break}let J=X.treeAdapter.getTagName(K);if(J.toLowerCase()===W.tagName){W.tagName=J,X.openElements.shortenToLength(Z);break}}}var sK=typeof String.prototype.codePointAt==="function"?(X,W)=>X.codePointAt(W):(X,W)=>(X.charCodeAt(W)&64512)===55296?(X.charCodeAt(W)-55296)*1024+X.charCodeAt(W+1)-56320+65536:X.charCodeAt(W);function g4(X,W){return function(K){let J,V=0,H="";while(J=X.exec(K)){if(V!==J.index)H+=K.substring(V,J.index);H+=W.get(J[0].charCodeAt(0)),V=J.index+1}return H+K.substring(V)}}var D4=g4(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),m4=g4(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]));var vZ=new Set([q.AREA,q.BASE,q.BASEFONT,q.BGSOUND,q.BR,q.COL,q.EMBED,q.FRAME,q.HR,q.IMG,q.INPUT,q.KEYGEN,q.LINK,q.META,q.PARAM,q.SOURCE,q.TRACK,q.WBR]);function $4(X,W){return W.treeAdapter.isElementNode(X)&&W.treeAdapter.getNamespaceURI(X)===x.HTML&&vZ.has(W.treeAdapter.getTagName(X))}var yZ={treeAdapter:J0,scriptingEnabled:!0};function U1(X,W){let Z={...yZ,...W};if($4(X,Z))return"";return G4(X,Z)}function G4(X,W){let Z="",K=W.treeAdapter.isElementNode(X)&&W.treeAdapter.getTagName(X)===q.TEMPLATE&&W.treeAdapter.getNamespaceURI(X)===x.HTML?W.treeAdapter.getTemplateContent(X):X,J=W.treeAdapter.getChildNodes(K);if(J)for(let V of J)Z+=OZ(V,W);return Z}function OZ(X,W){if(W.treeAdapter.isElementNode(X))return RZ(X,W);if(W.treeAdapter.isTextNode(X))return CZ(X,W);if(W.treeAdapter.isCommentNode(X))return hZ(X,W);if(W.treeAdapter.isDocumentTypeNode(X))return NZ(X,W);return""}function RZ(X,W){let Z=W.treeAdapter.getTagName(X);return`<${Z}${fZ(X,W)}>${$4(X,W)?"":`${G4(X,W)}</${Z}>`}`}function fZ(X,{treeAdapter:W}){let Z="";for(let K of W.getAttrList(X)){if(Z+=" ",K.namespace)switch(K.namespace){case x.XML:{Z+=`xml:${K.name}`;break}case x.XMLNS:{if(K.name!=="xmlns")Z+="xmlns:";Z+=K.name;break}case x.XLINK:{Z+=`xlink:${K.name}`;break}default:Z+=`${K.prefix}:${K.name}`}else Z+=K.name;Z+=`="${D4(K.value)}"`}return Z}function CZ(X,W){let{treeAdapter:Z}=W,K=Z.getTextNodeContent(X),J=Z.getParentNode(X),V=J&&Z.isElementNode(J)&&Z.getTagName(J);return V&&Z.getNamespaceURI(J)===x.HTML&&a6(V,W.scriptingEnabled)?K:m4(K)}function hZ(X,{treeAdapter:W}){return`<!--${W.getCommentNodeContent(X)}-->`}function NZ(X,{treeAdapter:W}){return`<!DOCTYPE ${W.getDocumentTypeNodeName(X)}>`}function ZX(X,W){return n1.parse(X,W)}import{WebSocket as KX,WebSocketServer as uZ}from"ws";import*as a0 from"css-tree";var F1=20971520,MZ=new Set(["script","iframe","frame","frameset","object","embed","portal","base","audio","video","source","track","noscript","animate","animatemotion","animatetransform","discard","set"]),gZ=new Set(["action","cite","data","formaction","href","ping","poster","src","srcset","xlink:href"]),Z2=/^data:(?:image\/(?:png|jpe?g|gif|webp|avif|bmp|x-icon)|font\/[a-z0-9.+-]+|application\/(?:font-[a-z0-9.+-]+|vnd\.ms-fontobject|x-font-[a-z0-9.+-]+));/i,DZ=new Set(["date","datetime-local","email","month","number","password","search","tel","text","time","url","week"]);function mZ(X){return"tagName"in X}function E4(X,W){return X.attrs.find((Z)=>Z.name.toLowerCase()===W.toLowerCase())?.value??null}function F0(X,W,Z){let K=X.attrs.find((J)=>J.name.toLowerCase()===W.toLowerCase());if(K)K.value=Z;else X.attrs.push({name:W,value:Z})}function _4(X){try{let W=a0.parse(X,{context:"stylesheet",parseCustomProperty:!0,positions:!1});return a0.walk(W,{enter(Z,K,J){if(Z.type==="Atrule"&&Z.name.toLowerCase()==="import"){J.remove(K);return}if(Z.type==="Declaration"){let V=Z.property.toLowerCase();if(V==="behavior"||V==="-moz-binding")J.remove(K);return}if(Z.type==="Url"&&!Z2.test(Z.value)){Z.value="data:,";return}if(Z.type==="String"&&this.function&&["image-set","-webkit-image-set","src"].includes(this.function.name.toLowerCase())&&!Z2.test(Z.value))Z.value="data:,"}}),a0.generate(W)}catch{return""}}function $Z(X){return _4(`x{${X}}`).replace(/^x\{/,"").replace(/\}$/,"")}function GZ(X){let W=X.tagName.toLowerCase();if(X.attrs=X.attrs.flatMap((Z)=>{let K=Z.name.toLowerCase();if(W==="input"&&(K==="value"||K==="checked"))return[];if(K.startsWith("on")||K==="srcdoc"||K==="nonce")return[];if(K==="style"){let J=$Z(Z.value);return J?[{...Z,value:J}]:[]}if(gZ.has(K)){if(K==="src"&&Z2.test(Z.value))return[Z];if(K==="href"&&Z.value.startsWith("#"))return[Z];return[]}if(K==="target"||K==="download"||K==="http-equiv")return[];return[Z]}),W==="form")F0(X,"inert",""),F0(X,"aria-disabled","true");else if(W==="textarea"||W==="input"&&DZ.has((E4(X,"type")??"text").toLowerCase()))F0(X,"readonly",""),F0(X,"aria-readonly","true"),F0(X,"tabindex","-1");else if(W==="button"||W==="select"||W==="input")F0(X,"disabled",""),F0(X,"aria-disabled","true"),F0(X,"tabindex","-1");if(E4(X,"contenteditable")!==null)F0(X,"contenteditable","false"),F0(X,"tabindex","-1"),X.childNodes=[];if(W==="textarea"||W==="select")X.childNodes=[];if(X.tagName==="style"&&X.childNodes){for(let Z of X.childNodes)if("value"in Z&&typeof Z.value==="string")Z.value=_4(Z.value)}}function k4(X){let W=[];for(let Z of X.childNodes){if(mZ(Z)){let K=Z.tagName.toLowerCase();if(MZ.has(K))continue;if(K==="meta"&&Z.attrs.some((J)=>J.name.toLowerCase()==="http-equiv"&&J.value.toLowerCase()!=="content-type"))continue;if(K==="link")continue;GZ(Z),k4(Z)}W.push(Z)}X.childNodes=W}function u4(X){if(Buffer.byteLength(X,"utf8")>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");let W=ZX(X);k4(W);let Z=U1(W);if(Buffer.byteLength(Z,"utf8")>F1)throw Error("Sanitized browser snapshot exceeds the 20 MiB limit");return Z}function y0(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function EZ(X){try{let W=new URL(X);if(W.protocol!=="https:"||W.hostname!=="www.google.com"||W.username||W.password||W.pathname!=="/"&&W.pathname!=="/webhp")return null;return"https://www.google.com/search"}catch{return null}}function I4(X){let W=y0(EZ(X.sourceUrl));return`(() => {
|
|
2
|
+
function V8(){let X=globalThis.performance?.now?.()??Date.now();return Math.round(X*10)/10}function G(X,W={}){if(typeof process<"u"&&process.env.IDEAWAVE_AGENT_RUNTIME_TRACE==="0")return;let Z=Object.fromEntries(Object.entries(W).filter(([,K])=>K!==void 0));console.info("[agent-runtime-trace]",JSON.stringify({event:X,epochMs:Date.now(),monotonicMs:V8(),...typeof document>"u"?{}:{visibility:document.visibilityState},...Z}))}var Y8=600000,z8=60000,p2=200,j8=2,S=new Map,B0=null;function H8(X){X.then((W)=>W.dispose()).catch(()=>{return})}function h1(X){for(let W of X.idleWaiters)W();X.idleWaiters.clear()}function v0(X,W){if(S.get(X)!==W)return;S.delete(X),h1(W),H8(W.sessionPromise)}function w8(){if(B0!==null)return;B0=setInterval(()=>{let X=Date.now();for(let[W,Z]of S){if(Z.inUse)continue;if(X-Z.lastUsed<Y8)continue;v0(W,Z)}if(S.size===0&&B0!==null)clearInterval(B0),B0=null},z8),B0.unref?.()}function U8(){if(S.size<p2)return;let X=null,W=1/0;for(let[K,J]of S){if(J.inUse)continue;if(J.lastUsed>=W)continue;X=K,W=J.lastUsed}if(!X)return;let Z=S.get(X);if(!Z)return;v0(X,Z)}function F8(){let X=0;while(S.size>p2){let W=null,Z=null;for(let[K,J]of S){if(J.inUse)continue;if(Z&&J.lastUsed>=Z.lastUsed)continue;W=K,Z=J}if(!W||!Z)break;v0(W,Z),X+=1}if(X>0)G("session_pool.global_idle_trimmed",{evictedSessions:X,poolEntries:S.size})}function q8(X){let W=Array.from(S.entries()).filter(([,K])=>K.frontendSessionId===X&&!K.inUse).sort(([,K],[,J])=>K.lastUsed-J.lastUsed),Z=W.length-j8;if(Z<=0)return;for(let[K,J]of W.slice(0,Z))v0(K,J);G("session_pool.frontend_idle_trimmed",{frontendSessionId:X,evictedSessions:Z,poolEntries:S.size})}function CX(X,W,Z){return`${X}:${W}:${Z}`}async function N1(X){let W=S.get(X.key);if(W){if(W.inUse)return G("session_pool.wait_for_idle",{frontendSessionId:W.frontendSessionId,poolEntries:S.size}),await new Promise((K)=>W.idleWaiters.add(K)),N1(X);if(W.fingerprint===X.fingerprint){W.inUse=!0,W.lastUsed=Date.now();try{let K=await W.sessionPromise;if(K.isAlive()){if(W.frontendSessionId)G("session_pool.reuse",{frontendSessionId:W.frontendSessionId,poolEntries:S.size});return K}}catch{}v0(X.key,W)}else v0(X.key,W)}let Z=X.open();if(U8(),S.set(X.key,{key:X.key,frontendSessionId:X.frontendSessionId??null,fingerprint:X.fingerprint,sessionPromise:Z,lastUsed:Date.now(),inUse:!0,idleWaiters:new Set}),w8(),X.frontendSessionId)G("session_pool.open",{frontendSessionId:X.frontendSessionId,poolEntries:S.size});try{return await Z}catch(K){let J=S.get(X.key);if(J?.sessionPromise===Z)v0(X.key,J);throw K}}function hX(X,W=!1){let Z=S.get(X);if(!Z)return;if(W){v0(X,Z);return}if(Z.inUse=!1,Z.lastUsed=Date.now(),Z.frontendSessionId)q8(Z.frontendSessionId),G("session_pool.release",{frontendSessionId:Z.frontendSessionId,poolEntries:S.size});if(F8(),S.get(X)===Z)h1(Z)}async function r2(X){let W=Array.from(S.entries()).filter(([,Z])=>Z.frontendSessionId===X);for(let[Z,K]of W)S.delete(Z),h1(K);return await Promise.all(W.map(([,Z])=>Z.sessionPromise.then((K)=>K.dispose()).catch(()=>{return}))),G("session_pool.frontend_evicted",{frontendSessionId:X,evictedSessions:W.length,poolEntries:S.size}),W.length}async function B8(){let X=Array.from(S.values());S.clear();for(let W of X)h1(W);if(B0!==null)clearInterval(B0),B0=null;await Promise.all(X.map((W)=>W.sessionPromise.then((Z)=>Z.dispose()).catch(()=>{return})))}function NX(X){let W=Object.entries(X.configValues??{}),Z=W.length>0?JSON.stringify(Object.fromEntries(W.sort(([K],[J])=>K.localeCompare(J)))):"";return[X.adapterId,X.configId??"",X.modelId??"",Z,X.mcpUrl??"",X.runFolder??"",X.toolSurface??"full"].join(" ")}var d2=!1;function L8(){if(d2)return;d2=!0;let X=()=>{B8()};process.once("beforeExit",X),process.once("SIGTERM",X),process.once("SIGINT",X)}L8();import{readFileSync as v8}from"node:fs";import{homedir as P8}from"node:os";import{join as M1}from"node:path";function x8(){let X=P8();switch(process.platform){case"win32":return process.env.APPDATA??M1(X,"AppData","Roaming");case"darwin":return M1(X,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??M1(X,".config")}}function s2(){let X=process.env.IDEAWAVE_MCP_JSON_PATH;if(X&&X.trim().length>0)return X;return M1(x8(),"ideawave","mcp.json")}var n2=null;function t2(X){n2=X}var b8=86400000;function y8(){let X;try{X=v8(s2(),"utf8")}catch{return null}let W;try{W=JSON.parse(X)}catch{return null}if(typeof W.url!=="string")return null;if(typeof W.startedAt==="string"){let Z=Date.parse(W.startedAt);if(!Number.isNaN(Z)){if(Date.now()-Z>b8)return null}}if(typeof W.pid==="number"&&W.pid>0)try{process.kill(W.pid,0)}catch(Z){if(Z?.code!=="EPERM")return null}return{url:W.url}}function o2(X,W={}){let Z=[];if(W.userId&&W.userId.trim().length>0)Z.push({name:"X-Ideawave-User-Id",value:W.userId.trim()});if(W.frontendSessionId&&W.frontendSessionId.trim().length>0)Z.push({name:"X-Ideawave-Frontend-Session-Id",value:W.frontendSessionId.trim()});if(W.toolSurface==="read")Z.push({name:"X-Ideawave-Tool-Surface",value:"read"});if(W.imagesSupported)Z.push({name:"X-Ideawave-Images-Supported",value:"1"});if(W.cardId&&W.cardId.trim().length>0)Z.push({name:"X-Ideawave-Card-Id",value:W.cardId.trim()});if(W.boardId&&W.boardId.trim().length>0)Z.push({name:"X-Ideawave-Board-Id",value:W.boardId.trim()});if(W.runFolder&&W.runFolder.trim().length>0)Z.push({name:"X-Ideawave-Run-Folder",value:W.runFolder.trim()});return{type:"http",name:"ideawave-board",url:X,headers:Z}}function MX(X={}){let W=n2;if(W)return o2(W.url,X);let Z=y8();if(!Z)return null;return o2(Z.url,X)}var e2="browser-proxy-v5",X6="browser-proxy-v6";var W6="browser-dom-snapshot-v1",f8=new Set(["hello","frontend_hello","cli_status","browser_status","bridge_probe","bridge_probe_ack","bridge_ping","bridge_pong","tool_metadata","run_turn","cancel_run","tool_result","request_tool_metadata","tool_call","partial_text","tool_activity","run_settled","runtime_rpc","runtime_rpc_result","browser_rpc","browser_rpc_result","warmup_run","warmup_result"]);function g1(X){try{let W=JSON.parse(X);if(W&&typeof W==="object"&&typeof W.type==="string"&&f8.has(W.type))return W}catch{}return null}function D1(X){return JSON.stringify(X)}import t0 from"node:fs/promises";import N8 from"node:path";import{z as D}from"zod";var Z6=D.object({id:D.string(),name:D.string().nullable().default(null),description:D.string().nullable().default(null)}),J6=D.union([D.string(),D.boolean()]),R8=D.object({value:D.string(),name:D.string(),description:D.string().nullable().default(null),group:D.string().nullable().default(null),groupName:D.string().nullable().default(null)}),Q6=D.object({id:D.string(),name:D.string(),category:D.string().nullable().default(null),description:D.string().nullable().default(null),type:D.enum(["select","boolean"]),currentValue:J6.nullable().default(null),options:D.array(R8).default([])}),gX=D.record(D.string(),J6).default({}),O8=D.discriminatedUnion("kind",[D.object({id:D.string(),kind:D.literal("registered"),adapterId:D.enum(["claude-code","opencode","codex","copilot"]),displayName:D.string(),runFolder:D.string().nullable(),defaultModelId:D.string().nullable().default(null),defaultConfigValues:gX,discoveredModels:D.array(Z6).default([]),discoveredConfigOptions:D.array(Q6).default([]),discoveredAt:D.string().nullable().default(null)}),D.object({id:D.string(),kind:D.literal("custom"),displayName:D.string(),command:D.string(),args:D.array(D.string()),env:D.record(D.string(),D.string()),runFolder:D.string().nullable(),defaultModelId:D.string().nullable().default(null),defaultConfigValues:gX,discoveredModels:D.array(Z6).default([]),discoveredConfigOptions:D.array(Q6).default([]),discoveredAt:D.string().nullable().default(null)})]),K6=D.object({runtimeConfigId:D.string(),runFolder:D.string().nullable(),modelId:D.string().nullable().default(null),configValues:gX}),m1=D.object({version:D.literal(1),globalDefaultConfigId:D.string().nullable(),runtimes:D.array(O8),boardOverrides:D.record(D.string(),K6).default({}),cardOverrides:D.record(D.string(),K6).default({})});import C8 from"node:os";import $1 from"node:path";function h8(){let X=C8.homedir();switch(process.platform){case"win32":return process.env.APPDATA??$1.join(X,"AppData","Roaming");case"darwin":return $1.join(X,"Library","Application Support");default:return process.env.XDG_CONFIG_HOME??$1.join(X,".config")}}function G1(){let X=process.env.IDEAWAVE_RUNTIME_CONFIG_PATH;if(X)return X;return $1.join(h8(),"ideawave","runtimes.json")}var M8={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},V6=new Map;function g8(X){return V6.get(X)??Promise.resolve()}function D8(X,W){V6.set(X,W)}async function Q0(X){let W=X??G1(),Z;try{Z=await t0.readFile(W,"utf-8")}catch(J){if(J.code==="ENOENT")return structuredClone(M8);throw J}return m1.parse(JSON.parse(Z))}async function Y0(X,W){let Z=W??G1(),K=g8(Z).then(async()=>{let J=await Q0(Z),Y=structuredClone(J),H=await X(Y);return await m8(Y,Z),H});return D8(Z,K.catch(()=>{return})),K}async function m8(X,W){let Z=W??G1(),K=N8.dirname(Z);await t0.mkdir(K,{recursive:!0});let J=`${Z}.tmp.${process.pid}.${Math.random().toString(36).slice(2)}`,Y=JSON.stringify(X,null,2);await t0.writeFile(J,Y,"utf-8");try{await t0.rename(J,Z)}catch(H){throw await t0.unlink(J).catch(()=>{return}),H}}import{spawn as T8}from"node:child_process";import{closeSync as A8,existsSync as w6,mkdirSync as U6,openSync as c8,readFileSync as a8,renameSync as i8,rmSync as F6,statSync as d8,unlinkSync as p8,writeFileSync as r8}from"node:fs";import j6 from"node:os";import m0 from"node:path";var $8=/\.(?:cmd|bat)$/i;function G8(X){return process.platform==="win32"&&$8.test(X)}function E1(X){return G8(X)?{shell:!0,windowsHide:!0}:{}}import{execFile as S8}from"node:child_process";import{promisify as l8}from"node:util";import{execFile as E8}from"node:child_process";import{promisify as _8}from"node:util";var k8=_8(E8),DX=new Map,Y6=5000,u8=/\.(?:cmd|bat|com|exe)$/i;function I8(X){let W=X.split(/\r?\n/).map((Z)=>Z.trim()).filter((Z)=>Z.length>0);if(W.length===0)return null;if(process.platform!=="win32")return W[0]??null;return W.find((Z)=>u8.test(Z))??W[0]??null}async function z6(X,W=k8){let Z=DX.get(X);if(Z&&Z.expiresAt>Date.now())return Z.value;let K=process.platform==="win32"?"where":"which";try{let{stdout:J}=await W(K,[X],{timeout:2000}),Y=I8(J);return DX.set(X,{value:Y,expiresAt:Date.now()+Y6}),Y}catch{return DX.set(X,{value:null,expiresAt:Date.now()+Y6}),null}}class e0 extends Error{code;constructor(X,W){super(X);this.name="AcpError",this.code=W}}class D0 extends e0{constructor(X="No ACP runtime configured"){super(X,"RUNTIME_NOT_CONFIGURED");this.name="RuntimeNotConfiguredError"}}class I extends e0{constructor(X){super(X,"RUNTIME_UNREACHABLE");this.name="RuntimeUnreachableError"}}class l0 extends e0{authMethods;constructor(X,W){super(X,"AUTH_REQUIRED");this.name="AuthRequiredError",this.authMethods=W}}class H0 extends e0{constructor(X="ACP session timed out"){super(X,"SESSION_TIMEOUT");this.name="SessionTimeoutError"}}var SQ=l8(S8);function a(X,...W){return z6(X,...W)}function Z0(X){let W={};for(let[Z,K]of Object.entries(process.env))if(typeof K==="string")W[Z]=K;return{...W,...X??{}}}var $X=[{adapterId:"claude-code",runtimeBinary:"claude",packageName:"@agentclientprotocol/claude-agent-acp",version:"0.61.0",warmupArgs:["--cli","--help"]},{adapterId:"codex",runtimeBinary:"codex",packageName:"@agentclientprotocol/codex-acp",version:"1.1.7",warmupArgs:["--version"]}],s8=1800000,_1=new Map;function GX(){if(process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR)return process.env.IDEAWAVE_ACP_BRIDGE_CACHE_DIR;if(process.platform==="win32"){let X=process.env.LOCALAPPDATA??m0.join(j6.homedir(),"AppData","Local");return m0.join(X,"ideawave","acp-bridges")}return m0.join(process.env.XDG_CACHE_HOME??m0.join(j6.homedir(),".cache"),"ideawave","acp-bridges")}function o8(X){return X.replace(/^@/,"").replace(/[/\\]/g,"-")}function k1(){return m0.join(GX(),"install-state.json")}function EX(X){return m0.join(GX(),`${o8(X.packageName)}@${X.version}.install.lock`)}function _X(){return process.platform==="win32"?"npx.cmd":"npx"}function kX(X){return`${X.packageName}@${X.version}`}function q6(){let X=k1();if(!w6(X))return{};try{return JSON.parse(a8(X,"utf8"))}catch{return{}}}function mX(X,W){let Z=GX();U6(Z,{recursive:!0});let K=q6();K.bridges={...K.bridges??{},[X.adapterId]:W},r8(`${k1()}.tmp`,`${JSON.stringify(K,null,2)}
|
|
3
|
+
`),i8(`${k1()}.tmp`,k1())}function B6(X){return $X.find((W)=>W.packageName===X)??null}function K0(X,W,Z){return{adapterId:X.adapterId,packageName:X.packageName,version:X.version,status:W,...Z?{error:Z}:{}}}function H6(X,W){return W?.packageName===X.packageName&&W.version===X.version}function L6(X){try{return Date.now()-d8(X).mtimeMs>s8}catch{return!1}}function n8(X){let W=EX(X);if(!w6(W))return!1;if(L6(W))return F6(W,{force:!0}),!1;return!0}function t8(X){let W=EX(X);if(U6(m0.dirname(W),{recursive:!0}),L6(W))F6(W,{force:!0});try{let Z=c8(W,"wx");return A8(Z),!0}catch{return!1}}function e8(X){p8(EX(X))}function uX(X){let W=q6().bridges?.[X.adapterId];if(H6(X,W)&&W.status==="ready")return K0(X,"ready");if(_1.has(X.adapterId)||n8(X))return K0(X,"installing");if(H6(X,W)&&W.status==="failed")return K0(X,"failed",W.error);return K0(X,"missing")}function X1(X,W){X?.onStatusChange?.(W)}function X9(X,W){let Z=uX(X);if(Z.status==="ready")return X1(W,Z),Z;if(Z.status==="installing"){let w=_1.get(X.adapterId);if(w&&W?.onStatusChange)w.then((B)=>X1(W,B));return X1(W,Z),Z}if(!t8(X))return K0(X,"installing");let K=K0(X,"installing");mX(X,K),X1(W,K);let J=()=>{},Y=new Promise((w)=>{J=w});_1.set(X.adapterId,Y);let H=!1,U=(w)=>{if(H)return;H=!0;try{e8(X)}catch{}mX(X,w),X1(W,w),_1.delete(X.adapterId),J(w)},F;try{let w=_X();F=T8(w,["-y",kX(X),...X.warmupArgs],{stdio:"ignore",windowsHide:!0,...E1(w)})}catch(w){let B=K0(X,"failed",w instanceof Error?w.message:String(w));return U(B),B}return F.on("error",(w)=>{U(K0(X,"failed",w.message))}),F.on("close",(w)=>{if(w===0){U(K0(X,"ready"));return}U(K0(X,"failed",`npx warmup exited ${w??"null"}`))}),F.unref(),K}function T0(X){let W=B6(X);return W?uX(W):null}async function P6(X){let W=[];for(let Z of $X){if(!await a(Z.runtimeBinary)){W.push(K0(Z,"not_needed"));continue}W.push(X9(Z,X))}return W.filter((Z)=>Z.status!=="not_needed")}function u1(X){let W=B6(X);if(!W)return null;if(uX(W).status!=="ready")return null;return{command:_X(),args:["-y",kX(W)],env:{}}}function IX(X,W){if(X.command!==_X())return!1;let Z=$X.find((K)=>X.args.includes(kX(K)));if(!Z)return!1;return mX(Z,K0(Z,"failed",W)),!0}var x6="claude",SX="@agentclientprotocol/claude-agent-acp",v6=["claude-agent-acp","claude-code-acp"],b6="Install Claude Code from https://github.com/anthropics/claude-code",y6={id:"claude-code",displayName:"Claude Code",kind:"registered",supportsImages:!0,resolveSpawnConfig:async()=>{if(!await a(x6))throw new I(`Claude Code CLI not found. ${b6}`);let W=u1(SX);if(W)return{command:W.command,args:W.args,env:Z0(W.env)};let Z=T0(SX),K=Z?.status==="installing";for(let Y of v6){let H=await a(Y);if(H&&!K&&Z?.status!=="failed")return{command:H,args:[],env:Z0()}}let J=Z?.status==="failed"?`Claude Code ACP bridge install failed. ${Z.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Claude Code ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new I(J)},checkReadiness:async()=>{if(!await a(x6))return{status:"not_installed",detail:b6};let W=T0(SX);if(W?.status==="ready")return{status:"ready"};if(W?.status==="installing")return{status:"not_running",detail:"Installing Claude Code ACP bridge..."};if(W?.status==="failed")return{status:"not_running",detail:W.error??"Claude Code ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};for(let Z of v6)if(await a(Z))return{status:"ready"};return{status:"not_running",detail:"Installing Claude Code ACP bridge..."}},authHint:"Run `claude login` (or set ANTHROPIC_API_KEY)."};var f6="codex",lX="@agentclientprotocol/codex-acp",R6="codex-acp",O6="Install Codex CLI from https://developers.openai.com/codex/cli",C6={id:"codex",displayName:"Codex",kind:"registered",resolveSpawnConfig:async()=>{if(!await a(f6))throw new I(`Codex CLI not found. ${O6}`);let W=u1(lX);if(W)return{command:W.command,args:W.args,env:Z0(W.env)};let Z=T0(lX),K=Z?.status==="installing",J=await a(R6);if(J&&!K&&Z?.status!=="failed")return{command:J,args:[],env:Z0()};let Y=Z?.status==="failed"?`Codex ACP bridge install failed. ${Z.error??"Restart IdeaWave CLI so it can warm the pinned bridge again."}`:"Codex ACP bridge is not ready. Keep IdeaWave CLI running and retry in a moment.";throw new I(Y)},checkReadiness:async()=>{if(!await a(f6))return{status:"not_installed",detail:O6};let W=T0(lX);if(W?.status==="ready")return{status:"ready"};if(W?.status==="installing")return{status:"not_running",detail:"Installing Codex ACP bridge..."};if(W?.status==="failed")return{status:"not_running",detail:W.error??"Codex ACP bridge install failed. Restart IdeaWave CLI so it can warm the pinned bridge again."};if(await a(R6))return{status:"ready"};return{status:"not_running",detail:"Installing Codex ACP bridge..."}},authHint:"Run `codex login` (or set OPENAI_API_KEY)."};var h6="copilot",N6="copilot-acp",M6="npm i -g @github/copilot",g6={id:"copilot",displayName:"GitHub Copilot",kind:"registered",resolveSpawnConfig:async()=>{let X=await a(h6);if(X)return{command:X,args:["--acp"],env:Z0()};let W=await a(N6);if(W)return{command:W,args:[],env:Z0()};throw new I(`Copilot not installed. Run: ${M6}`)},checkReadiness:async()=>{if(await a(h6))return{status:"ready"};if(await a(N6))return{status:"ready"};return{status:"not_installed",detail:M6}},authHint:"Run `gh auth login` (or `copilot login`)."};import W9 from"node:fs/promises";function Z9(X){return X.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(X)}async function D6(X){if(Z9(X))try{return await W9.access(X),!0}catch{return!1}return await a(X)!==null}var m6={id:"custom",displayName:"Custom ACP",kind:"custom",resolveSpawnConfig:async(X)=>{if(X.kind!=="custom")throw new I("customAdapter received non-custom entry");if(!await D6(X.command))throw new I(`custom: command "${X.command}" not found`);return{command:X.command,args:X.args,env:Z0(X.env)}},checkReadiness:async(X)=>{if(X.kind!=="custom")return{status:"unknown"};return await D6(X.command)?{status:"ready"}:{status:"not_installed"}}};var $6="opencode",G6="Install OpenCode from https://opencode.ai",E6={id:"opencode",displayName:"OpenCode",kind:"registered",resolveSpawnConfig:async()=>{let X=await a($6);if(!X)throw new I(`OpenCode not installed. ${G6}`);return{command:X,args:["acp"],env:Z0()}},checkReadiness:async()=>{if(!await a($6))return{status:"not_installed",detail:G6};return{status:"ready"}},authHint:"Run `opencode auth login <provider>` (or set the provider's API-key env var)."};var _6={"claude-code":y6,opencode:E6,codex:C6,copilot:g6};function w0(X){if(X.kind==="custom")return m6;let W=_6[X.adapterId];if(!W)throw Error(`Unknown registered adapter: ${X.adapterId}`);return W}function A0(){return Object.values(_6)}var TX=new Map,I1=new Map,Q9=30000;function S1(X,W){let Z=TX.get(X);if(Z&&Z.expiresAt>Date.now())return Promise.resolve(Z.value);let K=I1.get(X);if(K)return K;let J=W().then((Y)=>{return TX.set(X,{value:Y,expiresAt:Date.now()+Q9}),Y}).finally(()=>{I1.delete(X)});return I1.set(X,J),J}async function k6(X){let W=await Promise.all(A0().map((Y)=>S1(Y.id,async()=>({adapterId:Y.id,...await Y.checkReadiness({id:"__probe__",kind:"registered",adapterId:Y.id,displayName:Y.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})})))),K=(await Q0(X)).runtimes.filter((Y)=>Y.kind==="custom"),J=await Promise.all(K.map((Y)=>S1(`custom:${Y.id}`,async()=>({adapterId:Y.id,...await w0(Y).checkReadiness(Y)}))));return[...W,...J]}async function u6(X,W){let Z=A0().find((Y)=>Y.id===X);if(Z)return S1(Z.id,async()=>({adapterId:Z.id,...await Z.checkReadiness({id:"__probe__",kind:"registered",adapterId:Z.id,displayName:Z.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null})}));let J=(await Q0(W)).runtimes.find((Y)=>Y.id===X);if(!J||J.kind!=="custom")return null;return S1(`custom:${J.id}`,async()=>({adapterId:J.id,...await w0(J).checkReadiness(J)}))}function I6(){TX.clear(),I1.clear()}import{createHash as kZ,randomBytes as uZ,randomUUID as T4}from"node:crypto";import*as E0 from"css-tree";var K9=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]),l="�",V;(function(X){X[X.EOF=-1]="EOF",X[X.NULL=0]="NULL",X[X.TABULATION=9]="TABULATION",X[X.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",X[X.LINE_FEED=10]="LINE_FEED",X[X.FORM_FEED=12]="FORM_FEED",X[X.SPACE=32]="SPACE",X[X.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",X[X.QUOTATION_MARK=34]="QUOTATION_MARK",X[X.AMPERSAND=38]="AMPERSAND",X[X.APOSTROPHE=39]="APOSTROPHE",X[X.HYPHEN_MINUS=45]="HYPHEN_MINUS",X[X.SOLIDUS=47]="SOLIDUS",X[X.DIGIT_0=48]="DIGIT_0",X[X.DIGIT_9=57]="DIGIT_9",X[X.SEMICOLON=59]="SEMICOLON",X[X.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",X[X.EQUALS_SIGN=61]="EQUALS_SIGN",X[X.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",X[X.QUESTION_MARK=63]="QUESTION_MARK",X[X.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",X[X.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",X[X.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",X[X.GRAVE_ACCENT=96]="GRAVE_ACCENT",X[X.LATIN_SMALL_A=97]="LATIN_SMALL_A",X[X.LATIN_SMALL_Z=122]="LATIN_SMALL_Z"})(V||(V={}));var t={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function l1(X){return X>=55296&&X<=57343}function S6(X){return X>=56320&&X<=57343}function l6(X,W){return(X-55296)*1024+9216+W}function T1(X){return X!==32&&X!==10&&X!==13&&X!==9&&X!==12&&X>=1&&X<=31||X>=127&&X<=159}function A1(X){return X>=64976&&X<=65007||K9.has(X)}var L;(function(X){X.controlCharacterInInputStream="control-character-in-input-stream",X.noncharacterInInputStream="noncharacter-in-input-stream",X.surrogateInInputStream="surrogate-in-input-stream",X.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",X.endTagWithAttributes="end-tag-with-attributes",X.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",X.unexpectedSolidusInTag="unexpected-solidus-in-tag",X.unexpectedNullCharacter="unexpected-null-character",X.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",X.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",X.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",X.missingEndTagName="missing-end-tag-name",X.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",X.unknownNamedCharacterReference="unknown-named-character-reference",X.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",X.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",X.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",X.eofBeforeTagName="eof-before-tag-name",X.eofInTag="eof-in-tag",X.missingAttributeValue="missing-attribute-value",X.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",X.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",X.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",X.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",X.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",X.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",X.missingDoctypePublicIdentifier="missing-doctype-public-identifier",X.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",X.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",X.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",X.cdataInHtmlContent="cdata-in-html-content",X.incorrectlyOpenedComment="incorrectly-opened-comment",X.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",X.eofInDoctype="eof-in-doctype",X.nestedComment="nested-comment",X.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",X.eofInComment="eof-in-comment",X.incorrectlyClosedComment="incorrectly-closed-comment",X.eofInCdata="eof-in-cdata",X.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",X.nullCharacterReference="null-character-reference",X.surrogateCharacterReference="surrogate-character-reference",X.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",X.controlCharacterReference="control-character-reference",X.noncharacterCharacterReference="noncharacter-character-reference",X.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",X.missingDoctypeName="missing-doctype-name",X.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",X.duplicateAttribute="duplicate-attribute",X.nonConformingDoctype="non-conforming-doctype",X.missingDoctype="missing-doctype",X.misplacedDoctype="misplaced-doctype",X.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",X.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",X.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",X.openElementsLeftAfterEof="open-elements-left-after-eof",X.abandonedHeadElementChild="abandoned-head-element-child",X.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",X.nestedNoscriptInHead="nested-noscript-in-head",X.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text"})(L||(L={}));var V9=65536;class AX{constructor(X){this.handler=X,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=V9,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+Number(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(X,W){let{line:Z,col:K,offset:J}=this,Y=K+W,H=J+W;return{code:X,startLine:Z,endLine:Z,startCol:Y,endCol:Y,startOffset:H,endOffset:H}}_err(X){if(this.handler.onParseError&&this.lastErrOffset!==this.offset)this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(X,0))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(X){if(this.pos!==this.html.length-1){let W=this.html.charCodeAt(this.pos+1);if(S6(W))return this.pos++,this._addGap(),l6(X,W)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,V.EOF;return this._err(L.surrogateInInputStream),X}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){if(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(X,W){if(this.html.length>0)this.html+=X;else this.html=X;this.endOfChunkHit=!1,this.lastChunkWritten=W}insertHtmlAtCurrentPos(X){this.html=this.html.substring(0,this.pos+1)+X+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(X,W){if(this.pos+X.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(W)return this.html.startsWith(X,this.pos);for(let Z=0;Z<X.length;Z++)if((this.html.charCodeAt(this.pos+Z)|32)!==X.charCodeAt(Z))return!1;return!0}peek(X){let W=this.pos+X;if(W>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,V.EOF;let Z=this.html.charCodeAt(W);return Z===V.CARRIAGE_RETURN?V.LINE_FEED:Z}advance(){if(this.pos++,this.isEol)this.isEol=!1,this.line++,this.lineStartPos=this.pos;if(this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,V.EOF;let X=this.html.charCodeAt(this.pos);if(X===V.CARRIAGE_RETURN)return this.isEol=!0,this.skipNextNewLine=!0,V.LINE_FEED;if(X===V.LINE_FEED){if(this.isEol=!0,this.skipNextNewLine)return this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()}if(this.skipNextNewLine=!1,l1(X))X=this._processSurrogate(X);if(!(this.handler.onParseError===null||X>31&&X<127||X===V.LINE_FEED||X===V.CARRIAGE_RETURN||X>159&&X<64976))this._checkForProblematicCharacters(X);return X}_checkForProblematicCharacters(X){if(T1(X))this._err(L.controlCharacterInInputStream);else if(A1(X))this._err(L.noncharacterInInputStream)}retreat(X){this.pos-=X;while(this.pos<this.lastGapPos)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=!1}}var _;(function(X){X[X.CHARACTER=0]="CHARACTER",X[X.NULL_CHARACTER=1]="NULL_CHARACTER",X[X.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",X[X.START_TAG=3]="START_TAG",X[X.END_TAG=4]="END_TAG",X[X.COMMENT=5]="COMMENT",X[X.DOCTYPE=6]="DOCTYPE",X[X.EOF=7]="EOF",X[X.HIBERNATION=8]="HIBERNATION"})(_||(_={}));function c1(X,W){for(let Z=X.attrs.length-1;Z>=0;Z--)if(X.attrs[Z].name===W)return X.attrs[Z].value;return null}var z9=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 T6(X){if(X>=55296&&X<=57343||X>1114111)return 65533;return z9.get(X)??X}function A6(X){let W=atob(X),Z=W.length&-2,K=new Uint16Array(Z/2);for(let J=0,Y=0;J<Z;J+=2){let H=W.charCodeAt(J),U=W.charCodeAt(J+1);K[Y++]=H|U<<8}return K}var cX=A6("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/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/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var s;(function(X){X[X.VALUE_LENGTH=49152]="VALUE_LENGTH",X[X.FLAG13=8192]="FLAG13",X[X.BRANCH_LENGTH=8064]="BRANCH_LENGTH",X[X.JUMP_TABLE=127]="JUMP_TABLE"})(s||(s={}));var c;(function(X){X[X.NUM=35]="NUM",X[X.SEMI=59]="SEMI",X[X.EQUALS=61]="EQUALS",X[X.ZERO=48]="ZERO",X[X.NINE=57]="NINE",X[X.LOWER_A=97]="LOWER_A",X[X.LOWER_F=102]="LOWER_F",X[X.LOWER_X=120]="LOWER_X",X[X.LOWER_Z=122]="LOWER_Z",X[X.UPPER_A=65]="UPPER_A",X[X.UPPER_F=70]="UPPER_F",X[X.UPPER_Z=90]="UPPER_Z"})(c||(c={}));var c6=32;function aX(X){return X>=c.ZERO&&X<=c.NINE}function j9(X){return X>=c.UPPER_A&&X<=c.UPPER_F||X>=c.LOWER_A&&X<=c.LOWER_F}function H9(X){return X>=c.UPPER_A&&X<=c.UPPER_Z||X>=c.LOWER_A&&X<=c.LOWER_Z||aX(X)}function w9(X){return X===c.EQUALS||H9(X)}var p;(function(X){X[X.EntityStart=0]="EntityStart",X[X.NumericStart=1]="NumericStart",X[X.NumericDecimal=2]="NumericDecimal",X[X.NumericHex=3]="NumericHex",X[X.NamedEntity=4]="NamedEntity"})(p||(p={}));var U0;(function(X){X[X.Legacy=0]="Legacy",X[X.Strict=1]="Strict",X[X.Attribute=2]="Attribute"})(U0||(U0={}));class iX{decodeTree;emitCodePoint;errors;constructor(X,W,Z){this.decodeTree=X,this.emitCodePoint=W,this.errors=Z}state=p.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=U0.Strict;runConsumed=0;startEntity(X){this.decodeMode=X,this.state=p.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(X,W){switch(this.state){case p.EntityStart:{if(X.charCodeAt(W)===c.NUM)return this.state=p.NumericStart,this.consumed+=1,this.stateNumericStart(X,W+1);return this.state=p.NamedEntity,this.stateNamedEntity(X,W)}case p.NumericStart:return this.stateNumericStart(X,W);case p.NumericDecimal:return this.stateNumericDecimal(X,W);case p.NumericHex:return this.stateNumericHex(X,W);case p.NamedEntity:return this.stateNamedEntity(X,W)}}stateNumericStart(X,W){if(W>=X.length)return-1;if((X.charCodeAt(W)|c6)===c.LOWER_X)return this.state=p.NumericHex,this.consumed+=1,this.stateNumericHex(X,W+1);return this.state=p.NumericDecimal,this.stateNumericDecimal(X,W)}stateNumericHex(X,W){while(W<X.length){let Z=X.charCodeAt(W);if(aX(Z)||j9(Z)){let K=Z<=c.NINE?Z-c.ZERO:(Z|c6)-c.LOWER_A+10;this.result=this.result*16+K,this.consumed++,W++}else return this.emitNumericEntity(Z,3)}return-1}stateNumericDecimal(X,W){while(W<X.length){let Z=X.charCodeAt(W);if(aX(Z))this.result=this.result*10+(Z-c.ZERO),this.consumed++,W++;else return this.emitNumericEntity(Z,2)}return-1}emitNumericEntity(X,W){if(this.consumed<=W)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(X===c.SEMI)this.consumed+=1;else if(this.decodeMode===U0.Strict)return 0;if(this.emitCodePoint(T6(this.result),this.consumed),this.errors){if(X!==c.SEMI)this.errors.missingSemicolonAfterCharacterReference();this.errors.validateNumericCharacterReference(this.result)}return this.consumed}stateNamedEntity(X,W){let{decodeTree:Z}=this,K=Z[this.treeIndex],J=(K&s.VALUE_LENGTH)>>14;while(W<X.length){if(J===0&&(K&s.FLAG13)!==0){let H=(K&s.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let U=K&s.JUMP_TABLE;if(X.charCodeAt(W)!==U)return this.result===0?0:this.emitNotTerminatedNamedEntity();W++,this.excess++,this.runConsumed++}while(this.runConsumed<H){if(W>=X.length)return-1;let U=this.runConsumed-1,F=Z[this.treeIndex+1+(U>>1)],w=U%2===0?F&255:F>>8&255;if(X.charCodeAt(W)!==w)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();W++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(H>>1),K=Z[this.treeIndex],J=(K&s.VALUE_LENGTH)>>14}if(W>=X.length)break;let Y=X.charCodeAt(W);if(Y===c.SEMI&&J!==0&&(K&s.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,J,this.consumed+this.excess);if(this.treeIndex=U9(Z,K,this.treeIndex+Math.max(1,J),Y),this.treeIndex<0)return this.result===0||this.decodeMode===U0.Attribute&&(J===0||w9(Y))?0:this.emitNotTerminatedNamedEntity();if(K=Z[this.treeIndex],J=(K&s.VALUE_LENGTH)>>14,J!==0){if(Y===c.SEMI)return this.emitNamedEntityData(this.treeIndex,J,this.consumed+this.excess);if(this.decodeMode!==U0.Strict&&(K&s.FLAG13)===0)this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0}W++,this.excess++}return-1}emitNotTerminatedNamedEntity(){let{result:X,decodeTree:W}=this,Z=(W[X]&s.VALUE_LENGTH)>>14;return this.emitNamedEntityData(X,Z,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(X,W,Z){let{decodeTree:K}=this;if(this.emitCodePoint(W===1?K[X]&~(s.VALUE_LENGTH|s.FLAG13):K[X+1],Z),W===3)this.emitCodePoint(K[X+2],Z);return Z}end(){switch(this.state){case p.NamedEntity:return this.result!==0&&(this.decodeMode!==U0.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case p.NumericDecimal:return this.emitNumericEntity(0,2);case p.NumericHex:return this.emitNumericEntity(0,3);case p.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case p.EntityStart:return 0}}}function U9(X,W,Z,K){let J=(W&s.BRANCH_LENGTH)>>7,Y=W&s.JUMP_TABLE;if(J===0)return Y!==0&&K===Y?Z:-1;if(Y){let w=K-Y;return w<0||w>=J?-1:X[Z+w]-1}let H=J+1>>1,U=0,F=J-1;while(U<=F){let w=U+F>>>1,B=w>>1,R=X[Z+B]>>(w&1)*8&255;if(R<K)U=w+1;else if(R>K)F=w-1;else return X[Z+H+w]}return-1}var x;(function(X){X.HTML="http://www.w3.org/1999/xhtml",X.MATHML="http://www.w3.org/1998/Math/MathML",X.SVG="http://www.w3.org/2000/svg",X.XLINK="http://www.w3.org/1999/xlink",X.XML="http://www.w3.org/XML/1998/namespace",X.XMLNS="http://www.w3.org/2000/xmlns/"})(x||(x={}));var L0;(function(X){X.TYPE="type",X.ACTION="action",X.ENCODING="encoding",X.PROMPT="prompt",X.NAME="name",X.COLOR="color",X.FACE="face",X.SIZE="size"})(L0||(L0={}));var e;(function(X){X.NO_QUIRKS="no-quirks",X.QUIRKS="quirks",X.LIMITED_QUIRKS="limited-quirks"})(e||(e={}));var q;(function(X){X.A="a",X.ADDRESS="address",X.ANNOTATION_XML="annotation-xml",X.APPLET="applet",X.AREA="area",X.ARTICLE="article",X.ASIDE="aside",X.B="b",X.BASE="base",X.BASEFONT="basefont",X.BGSOUND="bgsound",X.BIG="big",X.BLOCKQUOTE="blockquote",X.BODY="body",X.BR="br",X.BUTTON="button",X.CAPTION="caption",X.CENTER="center",X.CODE="code",X.COL="col",X.COLGROUP="colgroup",X.DD="dd",X.DESC="desc",X.DETAILS="details",X.DIALOG="dialog",X.DIR="dir",X.DIV="div",X.DL="dl",X.DT="dt",X.EM="em",X.EMBED="embed",X.FIELDSET="fieldset",X.FIGCAPTION="figcaption",X.FIGURE="figure",X.FONT="font",X.FOOTER="footer",X.FOREIGN_OBJECT="foreignObject",X.FORM="form",X.FRAME="frame",X.FRAMESET="frameset",X.H1="h1",X.H2="h2",X.H3="h3",X.H4="h4",X.H5="h5",X.H6="h6",X.HEAD="head",X.HEADER="header",X.HGROUP="hgroup",X.HR="hr",X.HTML="html",X.I="i",X.IMG="img",X.IMAGE="image",X.INPUT="input",X.IFRAME="iframe",X.KEYGEN="keygen",X.LABEL="label",X.LI="li",X.LINK="link",X.LISTING="listing",X.MAIN="main",X.MALIGNMARK="malignmark",X.MARQUEE="marquee",X.MATH="math",X.MENU="menu",X.META="meta",X.MGLYPH="mglyph",X.MI="mi",X.MO="mo",X.MN="mn",X.MS="ms",X.MTEXT="mtext",X.NAV="nav",X.NOBR="nobr",X.NOFRAMES="noframes",X.NOEMBED="noembed",X.NOSCRIPT="noscript",X.OBJECT="object",X.OL="ol",X.OPTGROUP="optgroup",X.OPTION="option",X.P="p",X.PARAM="param",X.PLAINTEXT="plaintext",X.PRE="pre",X.RB="rb",X.RP="rp",X.RT="rt",X.RTC="rtc",X.RUBY="ruby",X.S="s",X.SCRIPT="script",X.SEARCH="search",X.SECTION="section",X.SELECT="select",X.SOURCE="source",X.SMALL="small",X.SPAN="span",X.STRIKE="strike",X.STRONG="strong",X.STYLE="style",X.SUB="sub",X.SUMMARY="summary",X.SUP="sup",X.TABLE="table",X.TBODY="tbody",X.TEMPLATE="template",X.TEXTAREA="textarea",X.TFOOT="tfoot",X.TD="td",X.TH="th",X.THEAD="thead",X.TITLE="title",X.TR="tr",X.TRACK="track",X.TT="tt",X.U="u",X.UL="ul",X.SVG="svg",X.VAR="var",X.WBR="wbr",X.XMP="xmp"})(q||(q={}));var Q;(function(X){X[X.UNKNOWN=0]="UNKNOWN",X[X.A=1]="A",X[X.ADDRESS=2]="ADDRESS",X[X.ANNOTATION_XML=3]="ANNOTATION_XML",X[X.APPLET=4]="APPLET",X[X.AREA=5]="AREA",X[X.ARTICLE=6]="ARTICLE",X[X.ASIDE=7]="ASIDE",X[X.B=8]="B",X[X.BASE=9]="BASE",X[X.BASEFONT=10]="BASEFONT",X[X.BGSOUND=11]="BGSOUND",X[X.BIG=12]="BIG",X[X.BLOCKQUOTE=13]="BLOCKQUOTE",X[X.BODY=14]="BODY",X[X.BR=15]="BR",X[X.BUTTON=16]="BUTTON",X[X.CAPTION=17]="CAPTION",X[X.CENTER=18]="CENTER",X[X.CODE=19]="CODE",X[X.COL=20]="COL",X[X.COLGROUP=21]="COLGROUP",X[X.DD=22]="DD",X[X.DESC=23]="DESC",X[X.DETAILS=24]="DETAILS",X[X.DIALOG=25]="DIALOG",X[X.DIR=26]="DIR",X[X.DIV=27]="DIV",X[X.DL=28]="DL",X[X.DT=29]="DT",X[X.EM=30]="EM",X[X.EMBED=31]="EMBED",X[X.FIELDSET=32]="FIELDSET",X[X.FIGCAPTION=33]="FIGCAPTION",X[X.FIGURE=34]="FIGURE",X[X.FONT=35]="FONT",X[X.FOOTER=36]="FOOTER",X[X.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",X[X.FORM=38]="FORM",X[X.FRAME=39]="FRAME",X[X.FRAMESET=40]="FRAMESET",X[X.H1=41]="H1",X[X.H2=42]="H2",X[X.H3=43]="H3",X[X.H4=44]="H4",X[X.H5=45]="H5",X[X.H6=46]="H6",X[X.HEAD=47]="HEAD",X[X.HEADER=48]="HEADER",X[X.HGROUP=49]="HGROUP",X[X.HR=50]="HR",X[X.HTML=51]="HTML",X[X.I=52]="I",X[X.IMG=53]="IMG",X[X.IMAGE=54]="IMAGE",X[X.INPUT=55]="INPUT",X[X.IFRAME=56]="IFRAME",X[X.KEYGEN=57]="KEYGEN",X[X.LABEL=58]="LABEL",X[X.LI=59]="LI",X[X.LINK=60]="LINK",X[X.LISTING=61]="LISTING",X[X.MAIN=62]="MAIN",X[X.MALIGNMARK=63]="MALIGNMARK",X[X.MARQUEE=64]="MARQUEE",X[X.MATH=65]="MATH",X[X.MENU=66]="MENU",X[X.META=67]="META",X[X.MGLYPH=68]="MGLYPH",X[X.MI=69]="MI",X[X.MO=70]="MO",X[X.MN=71]="MN",X[X.MS=72]="MS",X[X.MTEXT=73]="MTEXT",X[X.NAV=74]="NAV",X[X.NOBR=75]="NOBR",X[X.NOFRAMES=76]="NOFRAMES",X[X.NOEMBED=77]="NOEMBED",X[X.NOSCRIPT=78]="NOSCRIPT",X[X.OBJECT=79]="OBJECT",X[X.OL=80]="OL",X[X.OPTGROUP=81]="OPTGROUP",X[X.OPTION=82]="OPTION",X[X.P=83]="P",X[X.PARAM=84]="PARAM",X[X.PLAINTEXT=85]="PLAINTEXT",X[X.PRE=86]="PRE",X[X.RB=87]="RB",X[X.RP=88]="RP",X[X.RT=89]="RT",X[X.RTC=90]="RTC",X[X.RUBY=91]="RUBY",X[X.S=92]="S",X[X.SCRIPT=93]="SCRIPT",X[X.SEARCH=94]="SEARCH",X[X.SECTION=95]="SECTION",X[X.SELECT=96]="SELECT",X[X.SOURCE=97]="SOURCE",X[X.SMALL=98]="SMALL",X[X.SPAN=99]="SPAN",X[X.STRIKE=100]="STRIKE",X[X.STRONG=101]="STRONG",X[X.STYLE=102]="STYLE",X[X.SUB=103]="SUB",X[X.SUMMARY=104]="SUMMARY",X[X.SUP=105]="SUP",X[X.TABLE=106]="TABLE",X[X.TBODY=107]="TBODY",X[X.TEMPLATE=108]="TEMPLATE",X[X.TEXTAREA=109]="TEXTAREA",X[X.TFOOT=110]="TFOOT",X[X.TD=111]="TD",X[X.TH=112]="TH",X[X.THEAD=113]="THEAD",X[X.TITLE=114]="TITLE",X[X.TR=115]="TR",X[X.TRACK=116]="TRACK",X[X.TT=117]="TT",X[X.U=118]="U",X[X.UL=119]="UL",X[X.SVG=120]="SVG",X[X.VAR=121]="VAR",X[X.WBR=122]="WBR",X[X.XMP=123]="XMP"})(Q||(Q={}));var F9=new Map([[q.A,Q.A],[q.ADDRESS,Q.ADDRESS],[q.ANNOTATION_XML,Q.ANNOTATION_XML],[q.APPLET,Q.APPLET],[q.AREA,Q.AREA],[q.ARTICLE,Q.ARTICLE],[q.ASIDE,Q.ASIDE],[q.B,Q.B],[q.BASE,Q.BASE],[q.BASEFONT,Q.BASEFONT],[q.BGSOUND,Q.BGSOUND],[q.BIG,Q.BIG],[q.BLOCKQUOTE,Q.BLOCKQUOTE],[q.BODY,Q.BODY],[q.BR,Q.BR],[q.BUTTON,Q.BUTTON],[q.CAPTION,Q.CAPTION],[q.CENTER,Q.CENTER],[q.CODE,Q.CODE],[q.COL,Q.COL],[q.COLGROUP,Q.COLGROUP],[q.DD,Q.DD],[q.DESC,Q.DESC],[q.DETAILS,Q.DETAILS],[q.DIALOG,Q.DIALOG],[q.DIR,Q.DIR],[q.DIV,Q.DIV],[q.DL,Q.DL],[q.DT,Q.DT],[q.EM,Q.EM],[q.EMBED,Q.EMBED],[q.FIELDSET,Q.FIELDSET],[q.FIGCAPTION,Q.FIGCAPTION],[q.FIGURE,Q.FIGURE],[q.FONT,Q.FONT],[q.FOOTER,Q.FOOTER],[q.FOREIGN_OBJECT,Q.FOREIGN_OBJECT],[q.FORM,Q.FORM],[q.FRAME,Q.FRAME],[q.FRAMESET,Q.FRAMESET],[q.H1,Q.H1],[q.H2,Q.H2],[q.H3,Q.H3],[q.H4,Q.H4],[q.H5,Q.H5],[q.H6,Q.H6],[q.HEAD,Q.HEAD],[q.HEADER,Q.HEADER],[q.HGROUP,Q.HGROUP],[q.HR,Q.HR],[q.HTML,Q.HTML],[q.I,Q.I],[q.IMG,Q.IMG],[q.IMAGE,Q.IMAGE],[q.INPUT,Q.INPUT],[q.IFRAME,Q.IFRAME],[q.KEYGEN,Q.KEYGEN],[q.LABEL,Q.LABEL],[q.LI,Q.LI],[q.LINK,Q.LINK],[q.LISTING,Q.LISTING],[q.MAIN,Q.MAIN],[q.MALIGNMARK,Q.MALIGNMARK],[q.MARQUEE,Q.MARQUEE],[q.MATH,Q.MATH],[q.MENU,Q.MENU],[q.META,Q.META],[q.MGLYPH,Q.MGLYPH],[q.MI,Q.MI],[q.MO,Q.MO],[q.MN,Q.MN],[q.MS,Q.MS],[q.MTEXT,Q.MTEXT],[q.NAV,Q.NAV],[q.NOBR,Q.NOBR],[q.NOFRAMES,Q.NOFRAMES],[q.NOEMBED,Q.NOEMBED],[q.NOSCRIPT,Q.NOSCRIPT],[q.OBJECT,Q.OBJECT],[q.OL,Q.OL],[q.OPTGROUP,Q.OPTGROUP],[q.OPTION,Q.OPTION],[q.P,Q.P],[q.PARAM,Q.PARAM],[q.PLAINTEXT,Q.PLAINTEXT],[q.PRE,Q.PRE],[q.RB,Q.RB],[q.RP,Q.RP],[q.RT,Q.RT],[q.RTC,Q.RTC],[q.RUBY,Q.RUBY],[q.S,Q.S],[q.SCRIPT,Q.SCRIPT],[q.SEARCH,Q.SEARCH],[q.SECTION,Q.SECTION],[q.SELECT,Q.SELECT],[q.SOURCE,Q.SOURCE],[q.SMALL,Q.SMALL],[q.SPAN,Q.SPAN],[q.STRIKE,Q.STRIKE],[q.STRONG,Q.STRONG],[q.STYLE,Q.STYLE],[q.SUB,Q.SUB],[q.SUMMARY,Q.SUMMARY],[q.SUP,Q.SUP],[q.TABLE,Q.TABLE],[q.TBODY,Q.TBODY],[q.TEMPLATE,Q.TEMPLATE],[q.TEXTAREA,Q.TEXTAREA],[q.TFOOT,Q.TFOOT],[q.TD,Q.TD],[q.TH,Q.TH],[q.THEAD,Q.THEAD],[q.TITLE,Q.TITLE],[q.TR,Q.TR],[q.TRACK,Q.TRACK],[q.TT,Q.TT],[q.U,Q.U],[q.UL,Q.UL],[q.SVG,Q.SVG],[q.VAR,Q.VAR],[q.WBR,Q.WBR],[q.XMP,Q.XMP]]);function $0(X){var W;return(W=F9.get(X))!==null&&W!==void 0?W:Q.UNKNOWN}var y=Q,a6={[x.HTML]:new Set([y.ADDRESS,y.APPLET,y.AREA,y.ARTICLE,y.ASIDE,y.BASE,y.BASEFONT,y.BGSOUND,y.BLOCKQUOTE,y.BODY,y.BR,y.BUTTON,y.CAPTION,y.CENTER,y.COL,y.COLGROUP,y.DD,y.DETAILS,y.DIR,y.DIV,y.DL,y.DT,y.EMBED,y.FIELDSET,y.FIGCAPTION,y.FIGURE,y.FOOTER,y.FORM,y.FRAME,y.FRAMESET,y.H1,y.H2,y.H3,y.H4,y.H5,y.H6,y.HEAD,y.HEADER,y.HGROUP,y.HR,y.HTML,y.IFRAME,y.IMG,y.INPUT,y.LI,y.LINK,y.LISTING,y.MAIN,y.MARQUEE,y.MENU,y.META,y.NAV,y.NOEMBED,y.NOFRAMES,y.NOSCRIPT,y.OBJECT,y.OL,y.P,y.PARAM,y.PLAINTEXT,y.PRE,y.SCRIPT,y.SECTION,y.SELECT,y.SOURCE,y.STYLE,y.SUMMARY,y.TABLE,y.TBODY,y.TD,y.TEMPLATE,y.TEXTAREA,y.TFOOT,y.TH,y.THEAD,y.TITLE,y.TR,y.TRACK,y.UL,y.WBR,y.XMP]),[x.MATHML]:new Set([y.MI,y.MO,y.MN,y.MS,y.MTEXT,y.ANNOTATION_XML]),[x.SVG]:new Set([y.TITLE,y.FOREIGN_OBJECT,y.DESC]),[x.XLINK]:new Set,[x.XML]:new Set,[x.XMLNS]:new Set},W1=new Set([y.H1,y.H2,y.H3,y.H4,y.H5,y.H6]),q9=new Set([q.STYLE,q.SCRIPT,q.XMP,q.IFRAME,q.NOEMBED,q.NOFRAMES,q.PLAINTEXT]);function i6(X,W){return q9.has(X)||W&&X===q.NOSCRIPT}var z;(function(X){X[X.DATA=0]="DATA",X[X.RCDATA=1]="RCDATA",X[X.RAWTEXT=2]="RAWTEXT",X[X.SCRIPT_DATA=3]="SCRIPT_DATA",X[X.PLAINTEXT=4]="PLAINTEXT",X[X.TAG_OPEN=5]="TAG_OPEN",X[X.END_TAG_OPEN=6]="END_TAG_OPEN",X[X.TAG_NAME=7]="TAG_NAME",X[X.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",X[X.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",X[X.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",X[X.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",X[X.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",X[X.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",X[X.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",X[X.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",X[X.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",X[X.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",X[X.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",X[X.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",X[X.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",X[X.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",X[X.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",X[X.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",X[X.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",X[X.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",X[X.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",X[X.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",X[X.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",X[X.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",X[X.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",X[X.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",X[X.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",X[X.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",X[X.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",X[X.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",X[X.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",X[X.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",X[X.BOGUS_COMMENT=40]="BOGUS_COMMENT",X[X.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",X[X.COMMENT_START=42]="COMMENT_START",X[X.COMMENT_START_DASH=43]="COMMENT_START_DASH",X[X.COMMENT=44]="COMMENT",X[X.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",X[X.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",X[X.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",X[X.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",X[X.COMMENT_END_DASH=49]="COMMENT_END_DASH",X[X.COMMENT_END=50]="COMMENT_END",X[X.COMMENT_END_BANG=51]="COMMENT_END_BANG",X[X.DOCTYPE=52]="DOCTYPE",X[X.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",X[X.DOCTYPE_NAME=54]="DOCTYPE_NAME",X[X.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",X[X.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",X[X.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",X[X.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",X[X.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",X[X.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",X[X.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",X[X.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",X[X.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",X[X.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",X[X.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",X[X.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",X[X.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",X[X.CDATA_SECTION=68]="CDATA_SECTION",X[X.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",X[X.CDATA_SECTION_END=70]="CDATA_SECTION_END",X[X.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",X[X.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND"})(z||(z={}));var o={DATA:z.DATA,RCDATA:z.RCDATA,RAWTEXT:z.RAWTEXT,SCRIPT_DATA:z.SCRIPT_DATA,PLAINTEXT:z.PLAINTEXT,CDATA_SECTION:z.CDATA_SECTION};function L9(X){return X>=V.DIGIT_0&&X<=V.DIGIT_9}function Z1(X){return X>=V.LATIN_CAPITAL_A&&X<=V.LATIN_CAPITAL_Z}function P9(X){return X>=V.LATIN_SMALL_A&&X<=V.LATIN_SMALL_Z}function b0(X){return P9(X)||Z1(X)}function d6(X){return b0(X)||L9(X)}function a1(X){return X+32}function r6(X){return X===V.SPACE||X===V.LINE_FEED||X===V.TABULATION||X===V.FORM_FEED}function p6(X){return r6(X)||X===V.SOLIDUS||X===V.GREATER_THAN_SIGN}function x9(X){if(X===V.NULL)return L.nullCharacterReference;else if(X>1114111)return L.characterReferenceOutsideUnicodeRange;else if(l1(X))return L.surrogateCharacterReference;else if(A1(X))return L.noncharacterCharacterReference;else if(T1(X)||X===V.CARRIAGE_RETURN)return L.controlCharacterReference;return null}class i1{constructor(X,W){this.options=X,this.handler=W,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName="",this.active=!1,this.state=z.DATA,this.returnState=z.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new AX(W),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new iX(cX,(Z,K)=>{this.preprocessor.pos=this.entityStartPos+K-1,this._flushCodePointConsumedAsCharacterReference(Z)},W.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(L.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:(Z)=>{this._err(L.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+Z)},validateNumericCharacterReference:(Z)=>{let K=x9(Z);if(K)this._err(K,1)}}:void 0)}_err(X,W=0){var Z,K;(K=(Z=this.handler).onParseError)===null||K===void 0||K.call(Z,this.preprocessor.getError(X,W))}getCurrentLocation(X){if(!this.options.sourceCodeLocationInfo)return null;return{startLine:this.preprocessor.line,startCol:this.preprocessor.col-X,startOffset:this.preprocessor.offset-X,endLine:-1,endCol:-1,endOffset:-1}}_runParsingLoop(){if(this.inLoop)return;this.inLoop=!0;while(this.active&&!this.paused){this.consumedAfterSnapshot=0;let X=this._consume();if(!this._ensureHibernation())this._callState(X)}this.inLoop=!1}pause(){this.paused=!0}resume(X){if(!this.paused)throw Error("Parser was already resumed");if(this.paused=!1,this.inLoop)return;if(this._runParsingLoop(),!this.paused)X===null||X===void 0||X()}write(X,W,Z){if(this.active=!0,this.preprocessor.write(X,W),this._runParsingLoop(),!this.paused)Z===null||Z===void 0||Z()}insertHtmlAtCurrentPos(X){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(X),this._runParsingLoop()}_ensureHibernation(){if(this.preprocessor.endOfChunkHit)return this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0;return!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(X){this.consumedAfterSnapshot+=X;for(let W=0;W<X;W++)this.preprocessor.advance()}_consumeSequenceIfMatch(X,W){if(this.preprocessor.startsWith(X,W))return this._advanceBy(X.length-1),!0;return!1}_createStartTagToken(){this.currentToken={type:_.START_TAG,tagName:"",tagID:Q.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(1)}}_createEndTagToken(){this.currentToken={type:_.END_TAG,tagName:"",tagID:Q.UNKNOWN,selfClosing:!1,ackSelfClosing:!1,attrs:[],location:this.getCurrentLocation(2)}}_createCommentToken(X){this.currentToken={type:_.COMMENT,data:"",location:this.getCurrentLocation(X)}}_createDoctypeToken(X){this.currentToken={type:_.DOCTYPE,name:X,forceQuirks:!1,publicId:null,systemId:null,location:this.currentLocation}}_createCharacterToken(X,W){this.currentCharacterToken={type:X,chars:W,location:this.currentLocation}}_createAttr(X){this.currentAttr={name:X,value:""},this.currentLocation=this.getCurrentLocation(0)}_leaveAttrName(){var X,W;let Z=this.currentToken;if(c1(Z,this.currentAttr.name)===null){if(Z.attrs.push(this.currentAttr),Z.location&&this.currentLocation){let K=(X=(W=Z.location).attrs)!==null&&X!==void 0?X:W.attrs=Object.create(null);K[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue()}}else this._err(L.duplicateAttribute)}_leaveAttrValue(){if(this.currentLocation)this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset}prepareToken(X){if(this._emitCurrentCharacterToken(X.location),this.currentToken=null,X.location)X.location.endLine=this.preprocessor.line,X.location.endCol=this.preprocessor.col+1,X.location.endOffset=this.preprocessor.offset+1;this.currentLocation=this.getCurrentLocation(-1)}emitCurrentTagToken(){let X=this.currentToken;if(this.prepareToken(X),X.tagID=$0(X.tagName),X.type===_.START_TAG)this.lastStartTagName=X.tagName,this.handler.onStartTag(X);else{if(X.attrs.length>0)this._err(L.endTagWithAttributes);if(X.selfClosing)this._err(L.endTagWithTrailingSolidus);this.handler.onEndTag(X)}this.preprocessor.dropParsedChunk()}emitCurrentComment(X){this.prepareToken(X),this.handler.onComment(X),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(X){this.prepareToken(X),this.handler.onDoctype(X),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(X){if(this.currentCharacterToken){if(X&&this.currentCharacterToken.location)this.currentCharacterToken.location.endLine=X.startLine,this.currentCharacterToken.location.endCol=X.startCol,this.currentCharacterToken.location.endOffset=X.startOffset;switch(this.currentCharacterToken.type){case _.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case _.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case _.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null}}_emitEOFToken(){let X=this.getCurrentLocation(0);if(X)X.endLine=X.startLine,X.endCol=X.startCol,X.endOffset=X.startOffset;this._emitCurrentCharacterToken(X),this.handler.onEof({type:_.EOF,location:X}),this.active=!1}_appendCharToCurrentCharacterToken(X,W){if(this.currentCharacterToken)if(this.currentCharacterToken.type===X){this.currentCharacterToken.chars+=W;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(X,W)}_emitCodePoint(X){let W=r6(X)?_.WHITESPACE_CHARACTER:X===V.NULL?_.NULL_CHARACTER:_.CHARACTER;this._appendCharToCurrentCharacterToken(W,X<65536?String.fromCharCode(X):String.fromCodePoint(X))}_emitChars(X){this._appendCharToCurrentCharacterToken(_.CHARACTER,X)}_startCharacterReference(){this.returnState=this.state,this.state=z.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?U0.Attribute:U0.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===z.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===z.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===z.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(X){if(this._isCharacterReferenceInAttribute())this.currentAttr.value+=String.fromCodePoint(X);else this._emitCodePoint(X)}_callState(X){switch(this.state){case z.DATA:{this._stateData(X);break}case z.RCDATA:{this._stateRcdata(X);break}case z.RAWTEXT:{this._stateRawtext(X);break}case z.SCRIPT_DATA:{this._stateScriptData(X);break}case z.PLAINTEXT:{this._statePlaintext(X);break}case z.TAG_OPEN:{this._stateTagOpen(X);break}case z.END_TAG_OPEN:{this._stateEndTagOpen(X);break}case z.TAG_NAME:{this._stateTagName(X);break}case z.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(X);break}case z.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(X);break}case z.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(X);break}case z.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(X);break}case z.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(X);break}case z.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(X);break}case z.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(X);break}case z.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(X);break}case z.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(X);break}case z.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(X);break}case z.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(X);break}case z.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(X);break}case z.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(X);break}case z.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(X);break}case z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(X);break}case z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(X);break}case z.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(X);break}case z.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(X);break}case z.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(X);break}case z.ATTRIBUTE_NAME:{this._stateAttributeName(X);break}case z.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(X);break}case z.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(X);break}case z.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(X);break}case z.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(X);break}case z.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(X);break}case z.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(X);break}case z.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(X);break}case z.BOGUS_COMMENT:{this._stateBogusComment(X);break}case z.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(X);break}case z.COMMENT_START:{this._stateCommentStart(X);break}case z.COMMENT_START_DASH:{this._stateCommentStartDash(X);break}case z.COMMENT:{this._stateComment(X);break}case z.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(X);break}case z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(X);break}case z.COMMENT_END_DASH:{this._stateCommentEndDash(X);break}case z.COMMENT_END:{this._stateCommentEnd(X);break}case z.COMMENT_END_BANG:{this._stateCommentEndBang(X);break}case z.DOCTYPE:{this._stateDoctype(X);break}case z.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(X);break}case z.DOCTYPE_NAME:{this._stateDoctypeName(X);break}case z.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(X);break}case z.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(X);break}case z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(X);break}case z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(X);break}case z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(X);break}case z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(X);break}case z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(X);break}case z.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(X);break}case z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(X);break}case z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(X);break}case z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(X);break}case z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(X);break}case z.BOGUS_DOCTYPE:{this._stateBogusDoctype(X);break}case z.CDATA_SECTION:{this._stateCdataSection(X);break}case z.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(X);break}case z.CDATA_SECTION_END:{this._stateCdataSectionEnd(X);break}case z.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case z.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(X);break}default:throw Error("Unknown state")}}_stateData(X){switch(X){case V.LESS_THAN_SIGN:{this.state=z.TAG_OPEN;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.NULL:{this._err(L.unexpectedNullCharacter),this._emitCodePoint(X);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRcdata(X){switch(X){case V.AMPERSAND:{this._startCharacterReference();break}case V.LESS_THAN_SIGN:{this.state=z.RCDATA_LESS_THAN_SIGN;break}case V.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateRawtext(X){switch(X){case V.LESS_THAN_SIGN:{this.state=z.RAWTEXT_LESS_THAN_SIGN;break}case V.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptData(X){switch(X){case V.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_LESS_THAN_SIGN;break}case V.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_statePlaintext(X){switch(X){case V.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case V.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateTagOpen(X){if(b0(X))this._createStartTagToken(),this.state=z.TAG_NAME,this._stateTagName(X);else switch(X){case V.EXCLAMATION_MARK:{this.state=z.MARKUP_DECLARATION_OPEN;break}case V.SOLIDUS:{this.state=z.END_TAG_OPEN;break}case V.QUESTION_MARK:{this._err(L.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X);break}case V.EOF:{this._err(L.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(L.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=z.DATA,this._stateData(X)}}_stateEndTagOpen(X){if(b0(X))this._createEndTagToken(),this.state=z.TAG_NAME,this._stateTagName(X);else switch(X){case V.GREATER_THAN_SIGN:{this._err(L.missingEndTagName),this.state=z.DATA;break}case V.EOF:{this._err(L.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(L.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X)}}_stateTagName(X){let W=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=z.BEFORE_ATTRIBUTE_NAME;break}case V.SOLIDUS:{this.state=z.SELF_CLOSING_START_TAG;break}case V.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentTagToken();break}case V.NULL:{this._err(L.unexpectedNullCharacter),W.tagName+=l;break}case V.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:W.tagName+=String.fromCodePoint(Z1(X)?a1(X):X)}}_stateRcdataLessThanSign(X){if(X===V.SOLIDUS)this.state=z.RCDATA_END_TAG_OPEN;else this._emitChars("<"),this.state=z.RCDATA,this._stateRcdata(X)}_stateRcdataEndTagOpen(X){if(b0(X))this.state=z.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(X);else this._emitChars("</"),this.state=z.RCDATA,this._stateRcdata(X)}handleSpecialEndTag(X){if(!this.preprocessor.startsWith(this.lastStartTagName,!1))return!this._ensureHibernation();this._createEndTagToken();let W=this.currentToken;switch(W.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=z.BEFORE_ATTRIBUTE_NAME,!1;case V.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=z.SELF_CLOSING_START_TAG,!1;case V.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=z.DATA,!1;default:return!this._ensureHibernation()}}_stateRcdataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.RCDATA,this._stateRcdata(X)}_stateRawtextLessThanSign(X){if(X===V.SOLIDUS)this.state=z.RAWTEXT_END_TAG_OPEN;else this._emitChars("<"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagOpen(X){if(b0(X))this.state=z.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(X);else this._emitChars("</"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateRawtextEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.RAWTEXT,this._stateRawtext(X)}_stateScriptDataLessThanSign(X){switch(X){case V.SOLIDUS:{this.state=z.SCRIPT_DATA_END_TAG_OPEN;break}case V.EXCLAMATION_MARK:{this.state=z.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}}_stateScriptDataEndTagOpen(X){if(b0(X))this.state=z.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(X);else this._emitChars("</"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStart(X){if(X===V.HYPHEN_MINUS)this.state=z.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-");else this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscapeStartDash(X){if(X===V.HYPHEN_MINUS)this.state=z.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");else this.state=z.SCRIPT_DATA,this._stateScriptData(X)}_stateScriptDataEscaped(X){switch(X){case V.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case V.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case V.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataEscapedDash(X){switch(X){case V.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case V.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_ESCAPED,this._emitChars(l);break}case V.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedDashDash(X){switch(X){case V.HYPHEN_MINUS:{this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case V.GREATER_THAN_SIGN:{this.state=z.SCRIPT_DATA,this._emitChars(">");break}case V.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_ESCAPED,this._emitChars(l);break}case V.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataEscapedLessThanSign(X){if(X===V.SOLIDUS)this.state=z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;else if(b0(X))this._emitChars("<"),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(X);else this._emitChars("<"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagOpen(X){if(b0(X))this.state=z.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(X);else this._emitChars("</"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataEscapedEndTagName(X){if(this.handleSpecialEndTag(X))this._emitChars("</"),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscapeStart(X){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&p6(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(X);for(let W=0;W<t.SCRIPT.length;W++)this._emitCodePoint(this._consume());this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED}else if(!this._ensureHibernation())this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(X)}_stateScriptDataDoubleEscaped(X){switch(X){case V.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case V.NULL:{this._err(L.unexpectedNullCharacter),this._emitChars(l);break}case V.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDash(X){switch(X){case V.HYPHEN_MINUS:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case V.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(l);break}case V.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedDashDash(X){switch(X){case V.HYPHEN_MINUS:{this._emitChars("-");break}case V.LESS_THAN_SIGN:{this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case V.GREATER_THAN_SIGN:{this.state=z.SCRIPT_DATA,this._emitChars(">");break}case V.NULL:{this._err(L.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(l);break}case V.EOF:{this._err(L.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(X)}}_stateScriptDataDoubleEscapedLessThanSign(X){if(X===V.SOLIDUS)this.state=z.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/");else this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateScriptDataDoubleEscapeEnd(X){if(this.preprocessor.startsWith(t.SCRIPT,!1)&&p6(this.preprocessor.peek(t.SCRIPT.length))){this._emitCodePoint(X);for(let W=0;W<t.SCRIPT.length;W++)this._emitCodePoint(this._consume());this.state=z.SCRIPT_DATA_ESCAPED}else if(!this._ensureHibernation())this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(X)}_stateBeforeAttributeName(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.SOLIDUS:case V.GREATER_THAN_SIGN:case V.EOF:{this.state=z.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case V.EQUALS_SIGN:{this._err(L.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=z.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=z.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateAttributeName(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:case V.SOLIDUS:case V.GREATER_THAN_SIGN:case V.EOF:{this._leaveAttrName(),this.state=z.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(X);break}case V.EQUALS_SIGN:{this._leaveAttrName(),this.state=z.BEFORE_ATTRIBUTE_VALUE;break}case V.QUOTATION_MARK:case V.APOSTROPHE:case V.LESS_THAN_SIGN:{this._err(L.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(X);break}case V.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.name+=l;break}default:this.currentAttr.name+=String.fromCodePoint(Z1(X)?a1(X):X)}}_stateAfterAttributeName(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.SOLIDUS:{this.state=z.SELF_CLOSING_START_TAG;break}case V.EQUALS_SIGN:{this.state=z.BEFORE_ATTRIBUTE_VALUE;break}case V.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentTagToken();break}case V.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=z.ATTRIBUTE_NAME,this._stateAttributeName(X)}}_stateBeforeAttributeValue(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.QUOTATION_MARK:{this.state=z.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this.state=z.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(L.missingAttributeValue),this.state=z.DATA,this.emitCurrentTagToken();break}default:this.state=z.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(X)}}_stateAttributeValueDoubleQuoted(X){switch(X){case V.QUOTATION_MARK:{this.state=z.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=l;break}case V.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueSingleQuoted(X){switch(X){case V.APOSTROPHE:{this.state=z.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=l;break}case V.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAttributeValueUnquoted(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this._leaveAttrValue(),this.state=z.BEFORE_ATTRIBUTE_NAME;break}case V.AMPERSAND:{this._startCharacterReference();break}case V.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=z.DATA,this.emitCurrentTagToken();break}case V.NULL:{this._err(L.unexpectedNullCharacter),this.currentAttr.value+=l;break}case V.QUOTATION_MARK:case V.APOSTROPHE:case V.LESS_THAN_SIGN:case V.EQUALS_SIGN:case V.GRAVE_ACCENT:{this._err(L.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(X);break}case V.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(X)}}_stateAfterAttributeValueQuoted(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this._leaveAttrValue(),this.state=z.BEFORE_ATTRIBUTE_NAME;break}case V.SOLIDUS:{this._leaveAttrValue(),this.state=z.SELF_CLOSING_START_TAG;break}case V.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=z.DATA,this.emitCurrentTagToken();break}case V.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._err(L.missingWhitespaceBetweenAttributes),this.state=z.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateSelfClosingStartTag(X){switch(X){case V.GREATER_THAN_SIGN:{let W=this.currentToken;W.selfClosing=!0,this.state=z.DATA,this.emitCurrentTagToken();break}case V.EOF:{this._err(L.eofInTag),this._emitEOFToken();break}default:this._err(L.unexpectedSolidusInTag),this.state=z.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(X)}}_stateBogusComment(X){let W=this.currentToken;switch(X){case V.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentComment(W);break}case V.EOF:{this.emitCurrentComment(W),this._emitEOFToken();break}case V.NULL:{this._err(L.unexpectedNullCharacter),W.data+=l;break}default:W.data+=String.fromCodePoint(X)}}_stateMarkupDeclarationOpen(X){if(this._consumeSequenceIfMatch(t.DASH_DASH,!0))this._createCommentToken(t.DASH_DASH.length+1),this.state=z.COMMENT_START;else if(this._consumeSequenceIfMatch(t.DOCTYPE,!1))this.currentLocation=this.getCurrentLocation(t.DOCTYPE.length+1),this.state=z.DOCTYPE;else if(this._consumeSequenceIfMatch(t.CDATA_START,!0))if(this.inForeignNode)this.state=z.CDATA_SECTION;else this._err(L.cdataInHtmlContent),this._createCommentToken(t.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=z.BOGUS_COMMENT;else if(!this._ensureHibernation())this._err(L.incorrectlyOpenedComment),this._createCommentToken(2),this.state=z.BOGUS_COMMENT,this._stateBogusComment(X)}_stateCommentStart(X){switch(X){case V.HYPHEN_MINUS:{this.state=z.COMMENT_START_DASH;break}case V.GREATER_THAN_SIGN:{this._err(L.abruptClosingOfEmptyComment),this.state=z.DATA;let W=this.currentToken;this.emitCurrentComment(W);break}default:this.state=z.COMMENT,this._stateComment(X)}}_stateCommentStartDash(X){let W=this.currentToken;switch(X){case V.HYPHEN_MINUS:{this.state=z.COMMENT_END;break}case V.GREATER_THAN_SIGN:{this._err(L.abruptClosingOfEmptyComment),this.state=z.DATA,this.emitCurrentComment(W);break}case V.EOF:{this._err(L.eofInComment),this.emitCurrentComment(W),this._emitEOFToken();break}default:W.data+="-",this.state=z.COMMENT,this._stateComment(X)}}_stateComment(X){let W=this.currentToken;switch(X){case V.HYPHEN_MINUS:{this.state=z.COMMENT_END_DASH;break}case V.LESS_THAN_SIGN:{W.data+="<",this.state=z.COMMENT_LESS_THAN_SIGN;break}case V.NULL:{this._err(L.unexpectedNullCharacter),W.data+=l;break}case V.EOF:{this._err(L.eofInComment),this.emitCurrentComment(W),this._emitEOFToken();break}default:W.data+=String.fromCodePoint(X)}}_stateCommentLessThanSign(X){let W=this.currentToken;switch(X){case V.EXCLAMATION_MARK:{W.data+="!",this.state=z.COMMENT_LESS_THAN_SIGN_BANG;break}case V.LESS_THAN_SIGN:{W.data+="<";break}default:this.state=z.COMMENT,this._stateComment(X)}}_stateCommentLessThanSignBang(X){if(X===V.HYPHEN_MINUS)this.state=z.COMMENT_LESS_THAN_SIGN_BANG_DASH;else this.state=z.COMMENT,this._stateComment(X)}_stateCommentLessThanSignBangDash(X){if(X===V.HYPHEN_MINUS)this.state=z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;else this.state=z.COMMENT_END_DASH,this._stateCommentEndDash(X)}_stateCommentLessThanSignBangDashDash(X){if(X!==V.GREATER_THAN_SIGN&&X!==V.EOF)this._err(L.nestedComment);this.state=z.COMMENT_END,this._stateCommentEnd(X)}_stateCommentEndDash(X){let W=this.currentToken;switch(X){case V.HYPHEN_MINUS:{this.state=z.COMMENT_END;break}case V.EOF:{this._err(L.eofInComment),this.emitCurrentComment(W),this._emitEOFToken();break}default:W.data+="-",this.state=z.COMMENT,this._stateComment(X)}}_stateCommentEnd(X){let W=this.currentToken;switch(X){case V.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentComment(W);break}case V.EXCLAMATION_MARK:{this.state=z.COMMENT_END_BANG;break}case V.HYPHEN_MINUS:{W.data+="-";break}case V.EOF:{this._err(L.eofInComment),this.emitCurrentComment(W),this._emitEOFToken();break}default:W.data+="--",this.state=z.COMMENT,this._stateComment(X)}}_stateCommentEndBang(X){let W=this.currentToken;switch(X){case V.HYPHEN_MINUS:{W.data+="--!",this.state=z.COMMENT_END_DASH;break}case V.GREATER_THAN_SIGN:{this._err(L.incorrectlyClosedComment),this.state=z.DATA,this.emitCurrentComment(W);break}case V.EOF:{this._err(L.eofInComment),this.emitCurrentComment(W),this._emitEOFToken();break}default:W.data+="--!",this.state=z.COMMENT,this._stateComment(X)}}_stateDoctype(X){switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_NAME;break}case V.GREATER_THAN_SIGN:{this.state=z.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X);break}case V.EOF:{this._err(L.eofInDoctype),this._createDoctypeToken(null);let W=this.currentToken;W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingWhitespaceBeforeDoctypeName),this.state=z.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(X)}}_stateBeforeDoctypeName(X){if(Z1(X))this._createDoctypeToken(String.fromCharCode(a1(X))),this.state=z.DOCTYPE_NAME;else switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.NULL:{this._err(L.unexpectedNullCharacter),this._createDoctypeToken(l),this.state=z.DOCTYPE_NAME;break}case V.GREATER_THAN_SIGN:{this._err(L.missingDoctypeName),this._createDoctypeToken(null);let W=this.currentToken;W.forceQuirks=!0,this.emitCurrentDoctype(W),this.state=z.DATA;break}case V.EOF:{this._err(L.eofInDoctype),this._createDoctypeToken(null);let W=this.currentToken;W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(X)),this.state=z.DOCTYPE_NAME}}_stateDoctypeName(X){let W=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=z.AFTER_DOCTYPE_NAME;break}case V.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(W);break}case V.NULL:{this._err(L.unexpectedNullCharacter),W.name+=l;break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:W.name+=String.fromCodePoint(Z1(X)?a1(X):X)}}_stateAfterDoctypeName(X){let W=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(W);break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:if(this._consumeSequenceIfMatch(t.PUBLIC,!1))this.state=z.AFTER_DOCTYPE_PUBLIC_KEYWORD;else if(this._consumeSequenceIfMatch(t.SYSTEM,!1))this.state=z.AFTER_DOCTYPE_SYSTEM_KEYWORD;else if(!this._ensureHibernation())this._err(L.invalidCharacterSequenceAfterDoctypeName),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypePublicKeyword(X){let W=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case V.QUOTATION_MARK:{this._err(L.missingWhitespaceAfterDoctypePublicKeyword),W.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this._err(L.missingWhitespaceAfterDoctypePublicKeyword),W.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(L.missingDoctypePublicIdentifier),W.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(W);break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypePublicIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypePublicIdentifier(X){let W=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.QUOTATION_MARK:{W.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{W.publicId="",this.state=z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(L.missingDoctypePublicIdentifier),W.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(W);break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypePublicIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypePublicIdentifierDoubleQuoted(X){let W=this.currentToken;switch(X){case V.QUOTATION_MARK:{this.state=z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case V.NULL:{this._err(L.unexpectedNullCharacter),W.publicId+=l;break}case V.GREATER_THAN_SIGN:{this._err(L.abruptDoctypePublicIdentifier),W.forceQuirks=!0,this.emitCurrentDoctype(W),this.state=z.DATA;break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:W.publicId+=String.fromCodePoint(X)}}_stateDoctypePublicIdentifierSingleQuoted(X){let W=this.currentToken;switch(X){case V.APOSTROPHE:{this.state=z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case V.NULL:{this._err(L.unexpectedNullCharacter),W.publicId+=l;break}case V.GREATER_THAN_SIGN:{this._err(L.abruptDoctypePublicIdentifier),W.forceQuirks=!0,this.emitCurrentDoctype(W),this.state=z.DATA;break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:W.publicId+=String.fromCodePoint(X)}}_stateAfterDoctypePublicIdentifier(X){let W=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case V.GREATER_THAN_SIGN:{this.state=z.DATA,this.emitCurrentDoctype(W);break}case V.QUOTATION_MARK:{this._err(L.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this._err(L.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBetweenDoctypePublicAndSystemIdentifiers(X){let W=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.GREATER_THAN_SIGN:{this.emitCurrentDoctype(W),this.state=z.DATA;break}case V.QUOTATION_MARK:{W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateAfterDoctypeSystemKeyword(X){let W=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:{this.state=z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case V.QUOTATION_MARK:{this._err(L.missingWhitespaceAfterDoctypeSystemKeyword),W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{this._err(L.missingWhitespaceAfterDoctypeSystemKeyword),W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(L.missingDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(W);break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBeforeDoctypeSystemIdentifier(X){let W=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.QUOTATION_MARK:{W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case V.APOSTROPHE:{W.systemId="",this.state=z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case V.GREATER_THAN_SIGN:{this._err(L.missingDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.DATA,this.emitCurrentDoctype(W);break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.missingQuoteBeforeDoctypeSystemIdentifier),W.forceQuirks=!0,this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateDoctypeSystemIdentifierDoubleQuoted(X){let W=this.currentToken;switch(X){case V.QUOTATION_MARK:{this.state=z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case V.NULL:{this._err(L.unexpectedNullCharacter),W.systemId+=l;break}case V.GREATER_THAN_SIGN:{this._err(L.abruptDoctypeSystemIdentifier),W.forceQuirks=!0,this.emitCurrentDoctype(W),this.state=z.DATA;break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:W.systemId+=String.fromCodePoint(X)}}_stateDoctypeSystemIdentifierSingleQuoted(X){let W=this.currentToken;switch(X){case V.APOSTROPHE:{this.state=z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case V.NULL:{this._err(L.unexpectedNullCharacter),W.systemId+=l;break}case V.GREATER_THAN_SIGN:{this._err(L.abruptDoctypeSystemIdentifier),W.forceQuirks=!0,this.emitCurrentDoctype(W),this.state=z.DATA;break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:W.systemId+=String.fromCodePoint(X)}}_stateAfterDoctypeSystemIdentifier(X){let W=this.currentToken;switch(X){case V.SPACE:case V.LINE_FEED:case V.TABULATION:case V.FORM_FEED:break;case V.GREATER_THAN_SIGN:{this.emitCurrentDoctype(W),this.state=z.DATA;break}case V.EOF:{this._err(L.eofInDoctype),W.forceQuirks=!0,this.emitCurrentDoctype(W),this._emitEOFToken();break}default:this._err(L.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=z.BOGUS_DOCTYPE,this._stateBogusDoctype(X)}}_stateBogusDoctype(X){let W=this.currentToken;switch(X){case V.GREATER_THAN_SIGN:{this.emitCurrentDoctype(W),this.state=z.DATA;break}case V.NULL:{this._err(L.unexpectedNullCharacter);break}case V.EOF:{this.emitCurrentDoctype(W),this._emitEOFToken();break}default:}}_stateCdataSection(X){switch(X){case V.RIGHT_SQUARE_BRACKET:{this.state=z.CDATA_SECTION_BRACKET;break}case V.EOF:{this._err(L.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(X)}}_stateCdataSectionBracket(X){if(X===V.RIGHT_SQUARE_BRACKET)this.state=z.CDATA_SECTION_END;else this._emitChars("]"),this.state=z.CDATA_SECTION,this._stateCdataSection(X)}_stateCdataSectionEnd(X){switch(X){case V.GREATER_THAN_SIGN:{this.state=z.DATA;break}case V.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=z.CDATA_SECTION,this._stateCdataSection(X)}}_stateCharacterReference(){let X=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(X<0)if(this.preprocessor.lastChunkWritten)X=this.entityDecoder.end();else{this.active=!1,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=!0;return}if(X===0)this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(V.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&d6(this.preprocessor.peek(1))?z.AMBIGUOUS_AMPERSAND:this.returnState;else this.state=this.returnState}_stateAmbiguousAmpersand(X){if(d6(X))this._flushCodePointConsumedAsCharacterReference(X);else{if(X===V.SEMICOLON)this._err(L.unknownNamedCharacterReference);this.state=this.returnState,this._callState(X)}}}var t6=new Set([Q.DD,Q.DT,Q.LI,Q.OPTGROUP,Q.OPTION,Q.P,Q.RB,Q.RP,Q.RT,Q.RTC]),s6=new Set([...t6,Q.CAPTION,Q.COLGROUP,Q.TBODY,Q.TD,Q.TFOOT,Q.TH,Q.THEAD,Q.TR]),d1=new Set([Q.APPLET,Q.CAPTION,Q.HTML,Q.MARQUEE,Q.OBJECT,Q.TABLE,Q.TD,Q.TEMPLATE,Q.TH]),v9=new Set([...d1,Q.OL,Q.UL]),b9=new Set([...d1,Q.BUTTON]),o6=new Set([Q.ANNOTATION_XML,Q.MI,Q.MN,Q.MO,Q.MS,Q.MTEXT]),n6=new Set([Q.DESC,Q.FOREIGN_OBJECT,Q.TITLE]),y9=new Set([Q.TR,Q.TEMPLATE,Q.HTML]),f9=new Set([Q.TBODY,Q.TFOOT,Q.THEAD,Q.TEMPLATE,Q.HTML]),R9=new Set([Q.TABLE,Q.TEMPLATE,Q.HTML]),O9=new Set([Q.TD,Q.TH]);class dX{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(X,W,Z){this.treeAdapter=W,this.handler=Z,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=Q.UNKNOWN,this.current=X}_indexOf(X){return this.items.lastIndexOf(X,this.stackTop)}_isInTemplate(){return this.currentTagId===Q.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===x.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop]}push(X,W){if(this.stackTop++,this.items[this.stackTop]=X,this.current=X,this.tagIDs[this.stackTop]=W,this.currentTagId=W,this._isInTemplate())this.tmplCount++;this.handler.onItemPush(X,W,!0)}pop(){let X=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount--;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(X,!0)}replace(X,W){let Z=this._indexOf(X);if(this.items[Z]=W,Z===this.stackTop)this.current=W}insertAfter(X,W,Z){let K=this._indexOf(X)+1;if(this.items.splice(K,0,W),this.tagIDs.splice(K,0,Z),this.stackTop++,K===this.stackTop)this._updateCurrentElement();if(this.current&&this.currentTagId!==void 0)this.handler.onItemPush(this.current,this.currentTagId,K===this.stackTop)}popUntilTagNamePopped(X){let W=this.stackTop+1;do W=this.tagIDs.lastIndexOf(X,W-1);while(W>0&&this.treeAdapter.getNamespaceURI(this.items[W])!==x.HTML);this.shortenToLength(Math.max(W,0))}shortenToLength(X){while(this.stackTop>=X){let W=this.current;if(this.tmplCount>0&&this._isInTemplate())this.tmplCount-=1;this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(W,this.stackTop<X)}}popUntilElementPopped(X){let W=this._indexOf(X);this.shortenToLength(Math.max(W,0))}popUntilPopped(X,W){let Z=this._indexOfTagNames(X,W);this.shortenToLength(Math.max(Z,0))}popUntilNumberedHeaderPopped(){this.popUntilPopped(W1,x.HTML)}popUntilTableCellPopped(){this.popUntilPopped(O9,x.HTML)}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1)}_indexOfTagNames(X,W){for(let Z=this.stackTop;Z>=0;Z--)if(X.has(this.tagIDs[Z])&&this.treeAdapter.getNamespaceURI(this.items[Z])===W)return Z;return-1}clearBackTo(X,W){let Z=this._indexOfTagNames(X,W);this.shortenToLength(Z+1)}clearBackToTableContext(){this.clearBackTo(R9,x.HTML)}clearBackToTableBodyContext(){this.clearBackTo(f9,x.HTML)}clearBackToTableRowContext(){this.clearBackTo(y9,x.HTML)}remove(X){let W=this._indexOf(X);if(W>=0)if(W===this.stackTop)this.pop();else this.items.splice(W,1),this.tagIDs.splice(W,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(X,!1)}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===Q.BODY?this.items[1]:null}contains(X){return this._indexOf(X)>-1}getCommonAncestor(X){let W=this._indexOf(X)-1;return W>=0?this.items[W]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===Q.HTML}hasInDynamicScope(X,W){for(let Z=this.stackTop;Z>=0;Z--){let K=this.tagIDs[Z];switch(this.treeAdapter.getNamespaceURI(this.items[Z])){case x.HTML:{if(K===X)return!0;if(W.has(K))return!1;break}case x.SVG:{if(n6.has(K))return!1;break}case x.MATHML:{if(o6.has(K))return!1;break}}}return!0}hasInScope(X){return this.hasInDynamicScope(X,d1)}hasInListItemScope(X){return this.hasInDynamicScope(X,v9)}hasInButtonScope(X){return this.hasInDynamicScope(X,b9)}hasNumberedHeaderInScope(){for(let X=this.stackTop;X>=0;X--){let W=this.tagIDs[X];switch(this.treeAdapter.getNamespaceURI(this.items[X])){case x.HTML:{if(W1.has(W))return!0;if(d1.has(W))return!1;break}case x.SVG:{if(n6.has(W))return!1;break}case x.MATHML:{if(o6.has(W))return!1;break}}}return!0}hasInTableScope(X){for(let W=this.stackTop;W>=0;W--){if(this.treeAdapter.getNamespaceURI(this.items[W])!==x.HTML)continue;switch(this.tagIDs[W]){case X:return!0;case Q.TABLE:case Q.HTML:return!1}}return!0}hasTableBodyContextInTableScope(){for(let X=this.stackTop;X>=0;X--){if(this.treeAdapter.getNamespaceURI(this.items[X])!==x.HTML)continue;switch(this.tagIDs[X]){case Q.TBODY:case Q.THEAD:case Q.TFOOT:return!0;case Q.TABLE:case Q.HTML:return!1}}return!0}hasInSelectScope(X){for(let W=this.stackTop;W>=0;W--){if(this.treeAdapter.getNamespaceURI(this.items[W])!==x.HTML)continue;switch(this.tagIDs[W]){case X:return!0;case Q.OPTION:case Q.OPTGROUP:break;default:return!1}}return!0}generateImpliedEndTags(){while(this.currentTagId!==void 0&&t6.has(this.currentTagId))this.pop()}generateImpliedEndTagsThoroughly(){while(this.currentTagId!==void 0&&s6.has(this.currentTagId))this.pop()}generateImpliedEndTagsWithExclusion(X){while(this.currentTagId!==void 0&&this.currentTagId!==X&&s6.has(this.currentTagId))this.pop()}}var z0;(function(X){X[X.Marker=0]="Marker",X[X.Element=1]="Element"})(z0||(z0={}));var e6={type:z0.Marker};class pX{constructor(X){this.treeAdapter=X,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(X,W){let Z=[],K=W.length,J=this.treeAdapter.getTagName(X),Y=this.treeAdapter.getNamespaceURI(X);for(let H=0;H<this.entries.length;H++){let U=this.entries[H];if(U.type===z0.Marker)break;let{element:F}=U;if(this.treeAdapter.getTagName(F)===J&&this.treeAdapter.getNamespaceURI(F)===Y){let w=this.treeAdapter.getAttrList(F);if(w.length===K)Z.push({idx:H,attrs:w})}}return Z}_ensureNoahArkCondition(X){if(this.entries.length<3)return;let W=this.treeAdapter.getAttrList(X),Z=this._getNoahArkConditionCandidates(X,W);if(Z.length<3)return;let K=new Map(W.map((Y)=>[Y.name,Y.value])),J=0;for(let Y=0;Y<Z.length;Y++){let H=Z[Y];if(H.attrs.every((U)=>K.get(U.name)===U.value)){if(J+=1,J>=3)this.entries.splice(H.idx,1)}}}insertMarker(){this.entries.unshift(e6)}pushElement(X,W){this._ensureNoahArkCondition(X),this.entries.unshift({type:z0.Element,element:X,token:W})}insertElementAfterBookmark(X,W){let Z=this.entries.indexOf(this.bookmark);this.entries.splice(Z,0,{type:z0.Element,element:X,token:W})}removeEntry(X){let W=this.entries.indexOf(X);if(W!==-1)this.entries.splice(W,1)}clearToLastMarker(){let X=this.entries.indexOf(e6);if(X===-1)this.entries.length=0;else this.entries.splice(0,X+1)}getElementEntryInScopeWithTagName(X){let W=this.entries.find((Z)=>Z.type===z0.Marker||this.treeAdapter.getTagName(Z.element)===X);return W&&W.type===z0.Element?W:null}getElementEntry(X){return this.entries.find((W)=>W.type===z0.Element&&W.element===X)}}var J0={createDocument(){return{nodeName:"#document",mode:e.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:"#document-fragment",childNodes:[]}},createElement(X,W,Z){return{nodeName:X,tagName:X,attrs:Z,namespaceURI:W,childNodes:[],parentNode:null}},createCommentNode(X){return{nodeName:"#comment",data:X,parentNode:null}},createTextNode(X){return{nodeName:"#text",value:X,parentNode:null}},appendChild(X,W){X.childNodes.push(W),W.parentNode=X},insertBefore(X,W,Z){let K=X.childNodes.indexOf(Z);X.childNodes.splice(K,0,W),W.parentNode=X},setTemplateContent(X,W){X.content=W},getTemplateContent(X){return X.content},setDocumentType(X,W,Z,K){let J=X.childNodes.find((Y)=>Y.nodeName==="#documentType");if(J)J.name=W,J.publicId=Z,J.systemId=K;else{let Y={nodeName:"#documentType",name:W,publicId:Z,systemId:K,parentNode:null};J0.appendChild(X,Y)}},setDocumentMode(X,W){X.mode=W},getDocumentMode(X){return X.mode},detachNode(X){if(X.parentNode){let W=X.parentNode.childNodes.indexOf(X);X.parentNode.childNodes.splice(W,1),X.parentNode=null}},insertText(X,W){if(X.childNodes.length>0){let Z=X.childNodes[X.childNodes.length-1];if(J0.isTextNode(Z)){Z.value+=W;return}}J0.appendChild(X,J0.createTextNode(W))},insertTextBefore(X,W,Z){let K=X.childNodes[X.childNodes.indexOf(Z)-1];if(K&&J0.isTextNode(K))K.value+=W;else J0.insertBefore(X,J0.createTextNode(W),Z)},adoptAttributes(X,W){let Z=new Set(X.attrs.map((K)=>K.name));for(let K=0;K<W.length;K++)if(!Z.has(W[K].name))X.attrs.push(W[K])},getFirstChild(X){return X.childNodes[0]},getChildNodes(X){return X.childNodes},getParentNode(X){return X.parentNode},getAttrList(X){return X.attrs},getTagName(X){return X.tagName},getNamespaceURI(X){return X.namespaceURI},getTextNodeContent(X){return X.value},getCommentNodeContent(X){return X.data},getDocumentTypeNodeName(X){return X.name},getDocumentTypeNodePublicId(X){return X.publicId},getDocumentTypeNodeSystemId(X){return X.systemId},isTextNode(X){return X.nodeName==="#text"},isCommentNode(X){return X.nodeName==="#comment"},isDocumentTypeNode(X){return X.nodeName==="#documentType"},isElementNode(X){return Object.prototype.hasOwnProperty.call(X,"tagName")},setNodeSourceCodeLocation(X,W){X.sourceCodeLocation=W},getNodeSourceCodeLocation(X){return X.sourceCodeLocation},updateNodeSourceCodeLocation(X,W){X.sourceCodeLocation={...X.sourceCodeLocation,...W}}};var W4="html",C9="about:legacy-compat",h9="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",Z4=["+//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//"],N9=[...Z4,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],M9=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),Q4=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],g9=[...Q4,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function X4(X,W){return W.some((Z)=>X.startsWith(Z))}function K4(X){return X.name===W4&&X.publicId===null&&(X.systemId===null||X.systemId===C9)}function J4(X){if(X.name!==W4)return e.QUIRKS;let{systemId:W}=X;if(W&&W.toLowerCase()===h9)return e.QUIRKS;let{publicId:Z}=X;if(Z!==null){if(Z=Z.toLowerCase(),M9.has(Z))return e.QUIRKS;let K=W===null?N9:Z4;if(X4(Z,K))return e.QUIRKS;if(K=W===null?Q4:g9,X4(Z,K))return e.LIMITED_QUIRKS}return e.NO_QUIRKS}var V4={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},m9="definitionurl",$9="definitionURL",G9=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((X)=>[X.toLowerCase(),X])),E9=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:x.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:x.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:x.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:x.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:x.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:x.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:x.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:x.XML}],["xml:space",{prefix:"xml",name:"space",namespace:x.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:x.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:x.XMLNS}]]),_9=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((X)=>[X.toLowerCase(),X])),k9=new Set([Q.B,Q.BIG,Q.BLOCKQUOTE,Q.BODY,Q.BR,Q.CENTER,Q.CODE,Q.DD,Q.DIV,Q.DL,Q.DT,Q.EM,Q.EMBED,Q.H1,Q.H2,Q.H3,Q.H4,Q.H5,Q.H6,Q.HEAD,Q.HR,Q.I,Q.IMG,Q.LI,Q.LISTING,Q.MENU,Q.META,Q.NOBR,Q.OL,Q.P,Q.PRE,Q.RUBY,Q.S,Q.SMALL,Q.SPAN,Q.STRONG,Q.STRIKE,Q.SUB,Q.SUP,Q.TABLE,Q.TT,Q.U,Q.UL,Q.VAR]);function Y4(X){let W=X.tagID;return W===Q.FONT&&X.attrs.some(({name:K})=>K===L0.COLOR||K===L0.SIZE||K===L0.FACE)||k9.has(W)}function rX(X){for(let W=0;W<X.attrs.length;W++)if(X.attrs[W].name===m9){X.attrs[W].name=$9;break}}function sX(X){for(let W=0;W<X.attrs.length;W++){let Z=G9.get(X.attrs[W].name);if(Z!=null)X.attrs[W].name=Z}}function p1(X){for(let W=0;W<X.attrs.length;W++){let Z=E9.get(X.attrs[W].name);if(Z)X.attrs[W].prefix=Z.prefix,X.attrs[W].name=Z.name,X.attrs[W].namespace=Z.namespace}}function z4(X){let W=_9.get(X.tagName);if(W!=null)X.tagName=W,X.tagID=$0(X.tagName)}function u9(X,W){return W===x.MATHML&&(X===Q.MI||X===Q.MO||X===Q.MN||X===Q.MS||X===Q.MTEXT)}function I9(X,W,Z){if(W===x.MATHML&&X===Q.ANNOTATION_XML){for(let K=0;K<Z.length;K++)if(Z[K].name===L0.ENCODING){let J=Z[K].value.toLowerCase();return J===V4.TEXT_HTML||J===V4.APPLICATION_XML}}return W===x.SVG&&(X===Q.FOREIGN_OBJECT||X===Q.DESC||X===Q.TITLE)}function j4(X,W,Z,K){return(!K||K===x.HTML)&&I9(X,W,Z)||(!K||K===x.MATHML)&&u9(X,W)}var S9="hidden",l9=8,T9=3,j;(function(X){X[X.INITIAL=0]="INITIAL",X[X.BEFORE_HTML=1]="BEFORE_HTML",X[X.BEFORE_HEAD=2]="BEFORE_HEAD",X[X.IN_HEAD=3]="IN_HEAD",X[X.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",X[X.AFTER_HEAD=5]="AFTER_HEAD",X[X.IN_BODY=6]="IN_BODY",X[X.TEXT=7]="TEXT",X[X.IN_TABLE=8]="IN_TABLE",X[X.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",X[X.IN_CAPTION=10]="IN_CAPTION",X[X.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",X[X.IN_TABLE_BODY=12]="IN_TABLE_BODY",X[X.IN_ROW=13]="IN_ROW",X[X.IN_CELL=14]="IN_CELL",X[X.IN_SELECT=15]="IN_SELECT",X[X.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",X[X.IN_TEMPLATE=17]="IN_TEMPLATE",X[X.AFTER_BODY=18]="AFTER_BODY",X[X.IN_FRAMESET=19]="IN_FRAMESET",X[X.AFTER_FRAMESET=20]="AFTER_FRAMESET",X[X.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",X[X.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET"})(j||(j={}));var A9={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},q4=new Set([Q.TABLE,Q.TBODY,Q.TFOOT,Q.THEAD,Q.TR]),w4={scriptingEnabled:!0,sourceCodeLocationInfo:!1,treeAdapter:J0,onParseError:null};class n1{constructor(X,W,Z=null,K=null){if(this.fragmentContext=Z,this.scriptHandler=K,this.currentToken=null,this.stopped=!1,this.insertionMode=j.INITIAL,this.originalInsertionMode=j.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=!1,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=!1,this.framesetOk=!0,this.skipNextNewLine=!1,this.fosterParentingEnabled=!1,this.options={...w4,...X},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError)this.options.sourceCodeLocationInfo=!0;this.document=W!==null&&W!==void 0?W:this.treeAdapter.createDocument(),this.tokenizer=new i1(this.options,this),this.activeFormattingElements=new pX(this.treeAdapter),this.fragmentContextID=Z?$0(this.treeAdapter.getTagName(Z)):Q.UNKNOWN,this._setContextModes(Z!==null&&Z!==void 0?Z:this.document,this.fragmentContextID),this.openElements=new dX(this.document,this.treeAdapter,this)}static parse(X,W){let Z=new this(W);return Z.tokenizer.write(X,!0),Z.document}static getFragmentParser(X,W){let Z={...w4,...W};X!==null&&X!==void 0||(X=Z.treeAdapter.createElement(q.TEMPLATE,x.HTML,[]));let K=Z.treeAdapter.createElement("documentmock",x.HTML,[]),J=new this(Z,K,X);if(J.fragmentContextID===Q.TEMPLATE)J.tmplInsertionModeStack.unshift(j.IN_TEMPLATE);return J._initTokenizerForFragmentParsing(),J._insertFakeRootElement(),J._resetInsertionMode(),J._findFormInFragmentContext(),J}getFragment(){let X=this.treeAdapter.getFirstChild(this.document),W=this.treeAdapter.createDocumentFragment();return this._adoptNodes(X,W),W}_err(X,W,Z){var K;if(!this.onParseError)return;let J=(K=X.location)!==null&&K!==void 0?K:A9,Y={code:W,startLine:J.startLine,startCol:J.startCol,startOffset:J.startOffset,endLine:Z?J.startLine:J.endLine,endCol:Z?J.startCol:J.endCol,endOffset:Z?J.startOffset:J.endOffset};this.onParseError(Y)}onItemPush(X,W,Z){var K,J;if((J=(K=this.treeAdapter).onItemPush)===null||J===void 0||J.call(K,X),Z&&this.openElements.stackTop>0)this._setContextModes(X,W)}onItemPop(X,W){var Z,K;if(this.options.sourceCodeLocationInfo)this._setEndLocation(X,this.currentToken);if((K=(Z=this.treeAdapter).onItemPop)===null||K===void 0||K.call(Z,X,this.openElements.current),W){let J,Y;if(this.openElements.stackTop===0&&this.fragmentContext)J=this.fragmentContext,Y=this.fragmentContextID;else({current:J,currentTagId:Y}=this.openElements);this._setContextModes(J,Y)}}_setContextModes(X,W){let Z=X===this.document||X&&this.treeAdapter.getNamespaceURI(X)===x.HTML;this.currentNotInHTML=!Z,this.tokenizer.inForeignNode=!Z&&X!==void 0&&W!==void 0&&!this._isIntegrationPoint(W,X)}_switchToTextParsing(X,W){this._insertElement(X,x.HTML),this.tokenizer.state=W,this.originalInsertionMode=this.insertionMode,this.insertionMode=j.TEXT}switchToPlaintextParsing(){this.insertionMode=j.TEXT,this.originalInsertionMode=j.IN_BODY,this.tokenizer.state=o.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let X=this.fragmentContext;while(X){if(this.treeAdapter.getTagName(X)===q.FORM){this.formElement=X;break}X=this.treeAdapter.getParentNode(X)}}_initTokenizerForFragmentParsing(){if(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==x.HTML)return;switch(this.fragmentContextID){case Q.TITLE:case Q.TEXTAREA:{this.tokenizer.state=o.RCDATA;break}case Q.STYLE:case Q.XMP:case Q.IFRAME:case Q.NOEMBED:case Q.NOFRAMES:case Q.NOSCRIPT:{this.tokenizer.state=o.RAWTEXT;break}case Q.SCRIPT:{this.tokenizer.state=o.SCRIPT_DATA;break}case Q.PLAINTEXT:{this.tokenizer.state=o.PLAINTEXT;break}default:}}_setDocumentType(X){let W=X.name||"",Z=X.publicId||"",K=X.systemId||"";if(this.treeAdapter.setDocumentType(this.document,W,Z,K),X.location){let Y=this.treeAdapter.getChildNodes(this.document).find((H)=>this.treeAdapter.isDocumentTypeNode(H));if(Y)this.treeAdapter.setNodeSourceCodeLocation(Y,X.location)}}_attachElementToTree(X,W){if(this.options.sourceCodeLocationInfo){let Z=W&&{...W,startTag:W};this.treeAdapter.setNodeSourceCodeLocation(X,Z)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(X);else{let Z=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(Z!==null&&Z!==void 0?Z:this.document,X)}}_appendElement(X,W){let Z=this.treeAdapter.createElement(X.tagName,W,X.attrs);this._attachElementToTree(Z,X.location)}_insertElement(X,W){let Z=this.treeAdapter.createElement(X.tagName,W,X.attrs);this._attachElementToTree(Z,X.location),this.openElements.push(Z,X.tagID)}_insertFakeElement(X,W){let Z=this.treeAdapter.createElement(X,x.HTML,[]);this._attachElementToTree(Z,null),this.openElements.push(Z,W)}_insertTemplate(X){let W=this.treeAdapter.createElement(X.tagName,x.HTML,X.attrs),Z=this.treeAdapter.createDocumentFragment();if(this.treeAdapter.setTemplateContent(W,Z),this._attachElementToTree(W,X.location),this.openElements.push(W,X.tagID),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Z,null)}_insertFakeRootElement(){let X=this.treeAdapter.createElement(q.HTML,x.HTML,[]);if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(X,null);this.treeAdapter.appendChild(this.openElements.current,X),this.openElements.push(X,Q.HTML)}_appendCommentNode(X,W){let Z=this.treeAdapter.createCommentNode(X.data);if(this.treeAdapter.appendChild(W,Z),this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Z,X.location)}_insertCharacters(X){let W,Z;if(this._shouldFosterParentOnInsertion())if({parent:W,beforeElement:Z}=this._findFosterParentingLocation(),Z)this.treeAdapter.insertTextBefore(W,X.chars,Z);else this.treeAdapter.insertText(W,X.chars);else W=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(W,X.chars);if(!X.location)return;let K=this.treeAdapter.getChildNodes(W),J=Z?K.lastIndexOf(Z):K.length,Y=K[J-1];if(this.treeAdapter.getNodeSourceCodeLocation(Y)){let{endLine:U,endCol:F,endOffset:w}=X.location;this.treeAdapter.updateNodeSourceCodeLocation(Y,{endLine:U,endCol:F,endOffset:w})}else if(this.options.sourceCodeLocationInfo)this.treeAdapter.setNodeSourceCodeLocation(Y,X.location)}_adoptNodes(X,W){for(let Z=this.treeAdapter.getFirstChild(X);Z;Z=this.treeAdapter.getFirstChild(X))this.treeAdapter.detachNode(Z),this.treeAdapter.appendChild(W,Z)}_setEndLocation(X,W){if(this.treeAdapter.getNodeSourceCodeLocation(X)&&W.location){let Z=W.location,K=this.treeAdapter.getTagName(X),J=W.type===_.END_TAG&&K===W.tagName?{endTag:{...Z},endLine:Z.endLine,endCol:Z.endCol,endOffset:Z.endOffset}:{endLine:Z.startLine,endCol:Z.startCol,endOffset:Z.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(X,J)}}shouldProcessStartTagTokenInForeignContent(X){if(!this.currentNotInHTML)return!1;let W,Z;if(this.openElements.stackTop===0&&this.fragmentContext)W=this.fragmentContext,Z=this.fragmentContextID;else({current:W,currentTagId:Z}=this.openElements);if(X.tagID===Q.SVG&&this.treeAdapter.getTagName(W)===q.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(W)===x.MATHML)return!1;return this.tokenizer.inForeignNode||(X.tagID===Q.MGLYPH||X.tagID===Q.MALIGNMARK)&&Z!==void 0&&!this._isIntegrationPoint(Z,W,x.HTML)}_processToken(X){switch(X.type){case _.CHARACTER:{this.onCharacter(X);break}case _.NULL_CHARACTER:{this.onNullCharacter(X);break}case _.COMMENT:{this.onComment(X);break}case _.DOCTYPE:{this.onDoctype(X);break}case _.START_TAG:{this._processStartTag(X);break}case _.END_TAG:{this.onEndTag(X);break}case _.EOF:{this.onEof(X);break}case _.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(X);break}}}_isIntegrationPoint(X,W,Z){let K=this.treeAdapter.getNamespaceURI(W),J=this.treeAdapter.getAttrList(W);return j4(X,K,J,Z)}_reconstructActiveFormattingElements(){let X=this.activeFormattingElements.entries.length;if(X){let W=this.activeFormattingElements.entries.findIndex((K)=>K.type===z0.Marker||this.openElements.contains(K.element)),Z=W===-1?X-1:W-1;for(let K=Z;K>=0;K--){let J=this.activeFormattingElements.entries[K];this._insertElement(J.token,this.treeAdapter.getNamespaceURI(J.element)),J.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=j.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(Q.P),this.openElements.popUntilTagNamePopped(Q.P)}_resetInsertionMode(){for(let X=this.openElements.stackTop;X>=0;X--)switch(X===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[X]){case Q.TR:{this.insertionMode=j.IN_ROW;return}case Q.TBODY:case Q.THEAD:case Q.TFOOT:{this.insertionMode=j.IN_TABLE_BODY;return}case Q.CAPTION:{this.insertionMode=j.IN_CAPTION;return}case Q.COLGROUP:{this.insertionMode=j.IN_COLUMN_GROUP;return}case Q.TABLE:{this.insertionMode=j.IN_TABLE;return}case Q.BODY:{this.insertionMode=j.IN_BODY;return}case Q.FRAMESET:{this.insertionMode=j.IN_FRAMESET;return}case Q.SELECT:{this._resetInsertionModeForSelect(X);return}case Q.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case Q.HTML:{this.insertionMode=this.headElement?j.AFTER_HEAD:j.BEFORE_HEAD;return}case Q.TD:case Q.TH:{if(X>0){this.insertionMode=j.IN_CELL;return}break}case Q.HEAD:{if(X>0){this.insertionMode=j.IN_HEAD;return}break}}this.insertionMode=j.IN_BODY}_resetInsertionModeForSelect(X){if(X>0)for(let W=X-1;W>0;W--){let Z=this.openElements.tagIDs[W];if(Z===Q.TEMPLATE)break;else if(Z===Q.TABLE){this.insertionMode=j.IN_SELECT_IN_TABLE;return}}this.insertionMode=j.IN_SELECT}_isElementCausesFosterParenting(X){return q4.has(X)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let X=this.openElements.stackTop;X>=0;X--){let W=this.openElements.items[X];switch(this.openElements.tagIDs[X]){case Q.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(W)===x.HTML)return{parent:this.treeAdapter.getTemplateContent(W),beforeElement:null};break}case Q.TABLE:{let Z=this.treeAdapter.getParentNode(W);if(Z)return{parent:Z,beforeElement:W};return{parent:this.openElements.items[X-1],beforeElement:null}}default:}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(X){let W=this._findFosterParentingLocation();if(W.beforeElement)this.treeAdapter.insertBefore(W.parent,X,W.beforeElement);else this.treeAdapter.appendChild(W.parent,X)}_isSpecialElement(X,W){let Z=this.treeAdapter.getNamespaceURI(X);return a6[Z].has(W)}onCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){xZ(this,X);return}switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{J1(this,X);break}case j.BEFORE_HEAD:{V1(this,X);break}case j.IN_HEAD:{Y1(this,X);break}case j.IN_HEAD_NO_SCRIPT:{z1(this,X);break}case j.AFTER_HEAD:{j1(this,X);break}case j.IN_BODY:case j.IN_CAPTION:case j.IN_CELL:case j.IN_TEMPLATE:{L4(this,X);break}case j.TEXT:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:{this._insertCharacters(X);break}case j.IN_TABLE:case j.IN_TABLE_BODY:case j.IN_ROW:{oX(this,X);break}case j.IN_TABLE_TEXT:{f4(this,X);break}case j.IN_COLUMN_GROUP:{s1(this,X);break}case j.AFTER_BODY:{o1(this,X);break}case j.AFTER_AFTER_BODY:{r1(this,X);break}default:}}onNullCharacter(X){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){PZ(this,X);return}switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{J1(this,X);break}case j.BEFORE_HEAD:{V1(this,X);break}case j.IN_HEAD:{Y1(this,X);break}case j.IN_HEAD_NO_SCRIPT:{z1(this,X);break}case j.AFTER_HEAD:{j1(this,X);break}case j.TEXT:{this._insertCharacters(X);break}case j.IN_TABLE:case j.IN_TABLE_BODY:case j.IN_ROW:{oX(this,X);break}case j.IN_COLUMN_GROUP:{s1(this,X);break}case j.AFTER_BODY:{o1(this,X);break}case j.AFTER_AFTER_BODY:{r1(this,X);break}default:}}onComment(X){if(this.skipNextNewLine=!1,this.currentNotInHTML){nX(this,X);return}switch(this.insertionMode){case j.INITIAL:case j.BEFORE_HTML:case j.BEFORE_HEAD:case j.IN_HEAD:case j.IN_HEAD_NO_SCRIPT:case j.AFTER_HEAD:case j.IN_BODY:case j.IN_TABLE:case j.IN_CAPTION:case j.IN_COLUMN_GROUP:case j.IN_TABLE_BODY:case j.IN_ROW:case j.IN_CELL:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:case j.IN_TEMPLATE:case j.IN_FRAMESET:case j.AFTER_FRAMESET:{nX(this,X);break}case j.IN_TABLE_TEXT:{K1(this,X);break}case j.AFTER_BODY:{s9(this,X);break}case j.AFTER_AFTER_BODY:case j.AFTER_AFTER_FRAMESET:{o9(this,X);break}default:}}onDoctype(X){switch(this.skipNextNewLine=!1,this.insertionMode){case j.INITIAL:{n9(this,X);break}case j.BEFORE_HEAD:case j.IN_HEAD:case j.IN_HEAD_NO_SCRIPT:case j.AFTER_HEAD:{this._err(X,L.misplacedDoctype);break}case j.IN_TABLE_TEXT:{K1(this,X);break}default:}}onStartTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this._processStartTag(X),X.selfClosing&&!X.ackSelfClosing)this._err(X,L.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(X){if(this.shouldProcessStartTagTokenInForeignContent(X))vZ(this,X);else this._startTagOutsideForeignContent(X)}_startTagOutsideForeignContent(X){switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{t9(this,X);break}case j.BEFORE_HEAD:{XW(this,X);break}case j.IN_HEAD:{j0(this,X);break}case j.IN_HEAD_NO_SCRIPT:{QW(this,X);break}case j.AFTER_HEAD:{JW(this,X);break}case j.IN_BODY:{n(this,X);break}case j.IN_TABLE:{c0(this,X);break}case j.IN_TABLE_TEXT:{K1(this,X);break}case j.IN_CAPTION:{WZ(this,X);break}case j.IN_COLUMN_GROUP:{W2(this,X);break}case j.IN_TABLE_BODY:{XX(this,X);break}case j.IN_ROW:{WX(this,X);break}case j.IN_CELL:{KZ(this,X);break}case j.IN_SELECT:{C4(this,X);break}case j.IN_SELECT_IN_TABLE:{VZ(this,X);break}case j.IN_TEMPLATE:{zZ(this,X);break}case j.AFTER_BODY:{HZ(this,X);break}case j.IN_FRAMESET:{wZ(this,X);break}case j.AFTER_FRAMESET:{FZ(this,X);break}case j.AFTER_AFTER_BODY:{BZ(this,X);break}case j.AFTER_AFTER_FRAMESET:{LZ(this,X);break}default:}}onEndTag(X){if(this.skipNextNewLine=!1,this.currentToken=X,this.currentNotInHTML)bZ(this,X);else this._endTagOutsideForeignContent(X)}_endTagOutsideForeignContent(X){switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{e9(this,X);break}case j.BEFORE_HEAD:{WW(this,X);break}case j.IN_HEAD:{ZW(this,X);break}case j.IN_HEAD_NO_SCRIPT:{KW(this,X);break}case j.AFTER_HEAD:{VW(this,X);break}case j.IN_BODY:{e1(this,X);break}case j.TEXT:{iW(this,X);break}case j.IN_TABLE:{H1(this,X);break}case j.IN_TABLE_TEXT:{K1(this,X);break}case j.IN_CAPTION:{ZZ(this,X);break}case j.IN_COLUMN_GROUP:{QZ(this,X);break}case j.IN_TABLE_BODY:{tX(this,X);break}case j.IN_ROW:{O4(this,X);break}case j.IN_CELL:{JZ(this,X);break}case j.IN_SELECT:{h4(this,X);break}case j.IN_SELECT_IN_TABLE:{YZ(this,X);break}case j.IN_TEMPLATE:{jZ(this,X);break}case j.AFTER_BODY:{M4(this,X);break}case j.IN_FRAMESET:{UZ(this,X);break}case j.AFTER_FRAMESET:{qZ(this,X);break}case j.AFTER_AFTER_BODY:{r1(this,X);break}default:}}onEof(X){switch(this.insertionMode){case j.INITIAL:{Q1(this,X);break}case j.BEFORE_HTML:{J1(this,X);break}case j.BEFORE_HEAD:{V1(this,X);break}case j.IN_HEAD:{Y1(this,X);break}case j.IN_HEAD_NO_SCRIPT:{z1(this,X);break}case j.AFTER_HEAD:{j1(this,X);break}case j.IN_BODY:case j.IN_TABLE:case j.IN_CAPTION:case j.IN_COLUMN_GROUP:case j.IN_TABLE_BODY:case j.IN_ROW:case j.IN_CELL:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:{b4(this,X);break}case j.TEXT:{dW(this,X);break}case j.IN_TABLE_TEXT:{K1(this,X);break}case j.IN_TEMPLATE:{N4(this,X);break}case j.AFTER_BODY:case j.IN_FRAMESET:case j.AFTER_FRAMESET:case j.AFTER_AFTER_BODY:case j.AFTER_AFTER_FRAMESET:{X2(this,X);break}default:}}onWhitespaceCharacter(X){if(this.skipNextNewLine){if(this.skipNextNewLine=!1,X.chars.charCodeAt(0)===V.LINE_FEED){if(X.chars.length===1)return;X.chars=X.chars.substr(1)}}if(this.tokenizer.inForeignNode){this._insertCharacters(X);return}switch(this.insertionMode){case j.IN_HEAD:case j.IN_HEAD_NO_SCRIPT:case j.AFTER_HEAD:case j.TEXT:case j.IN_COLUMN_GROUP:case j.IN_SELECT:case j.IN_SELECT_IN_TABLE:case j.IN_FRAMESET:case j.AFTER_FRAMESET:{this._insertCharacters(X);break}case j.IN_BODY:case j.IN_CAPTION:case j.IN_CELL:case j.IN_TEMPLATE:case j.AFTER_BODY:case j.AFTER_AFTER_BODY:case j.AFTER_AFTER_FRAMESET:{B4(this,X);break}case j.IN_TABLE:case j.IN_TABLE_BODY:case j.IN_ROW:{oX(this,X);break}case j.IN_TABLE_TEXT:{y4(this,X);break}default:}}}function c9(X,W){let Z=X.activeFormattingElements.getElementEntryInScopeWithTagName(W.tagName);if(Z){if(!X.openElements.contains(Z.element))X.activeFormattingElements.removeEntry(Z),Z=null;else if(!X.openElements.hasInScope(W.tagID))Z=null}else v4(X,W);return Z}function a9(X,W){let Z=null,K=X.openElements.stackTop;for(;K>=0;K--){let J=X.openElements.items[K];if(J===W.element)break;if(X._isSpecialElement(J,X.openElements.tagIDs[K]))Z=J}if(!Z)X.openElements.shortenToLength(Math.max(K,0)),X.activeFormattingElements.removeEntry(W);return Z}function i9(X,W,Z){let K=W,J=X.openElements.getCommonAncestor(W);for(let Y=0,H=J;H!==Z;Y++,H=J){J=X.openElements.getCommonAncestor(H);let U=X.activeFormattingElements.getElementEntry(H),F=U&&Y>=T9;if(!U||F){if(F)X.activeFormattingElements.removeEntry(U);X.openElements.remove(H)}else{if(H=d9(X,U),K===W)X.activeFormattingElements.bookmark=U;X.treeAdapter.detachNode(K),X.treeAdapter.appendChild(H,K),K=H}}return K}function d9(X,W){let Z=X.treeAdapter.getNamespaceURI(W.element),K=X.treeAdapter.createElement(W.token.tagName,Z,W.token.attrs);return X.openElements.replace(W.element,K),W.element=K,K}function p9(X,W,Z){let K=X.treeAdapter.getTagName(W),J=$0(K);if(X._isElementCausesFosterParenting(J))X._fosterParentElement(Z);else{let Y=X.treeAdapter.getNamespaceURI(W);if(J===Q.TEMPLATE&&Y===x.HTML)W=X.treeAdapter.getTemplateContent(W);X.treeAdapter.appendChild(W,Z)}}function r9(X,W,Z){let K=X.treeAdapter.getNamespaceURI(Z.element),{token:J}=Z,Y=X.treeAdapter.createElement(J.tagName,K,J.attrs);X._adoptNodes(W,Y),X.treeAdapter.appendChild(W,Y),X.activeFormattingElements.insertElementAfterBookmark(Y,J),X.activeFormattingElements.removeEntry(Z),X.openElements.remove(Z.element),X.openElements.insertAfter(W,Y,J.tagID)}function eX(X,W){for(let Z=0;Z<l9;Z++){let K=c9(X,W);if(!K)break;let J=a9(X,K);if(!J)break;X.activeFormattingElements.bookmark=K;let Y=i9(X,J,K.element),H=X.openElements.getCommonAncestor(K.element);if(X.treeAdapter.detachNode(Y),H)p9(X,H,Y);r9(X,J,K)}}function nX(X,W){X._appendCommentNode(W,X.openElements.currentTmplContentOrNode)}function s9(X,W){X._appendCommentNode(W,X.openElements.items[0])}function o9(X,W){X._appendCommentNode(W,X.document)}function X2(X,W){if(X.stopped=!0,W.location){let Z=X.fragmentContext?0:2;for(let K=X.openElements.stackTop;K>=Z;K--)X._setEndLocation(X.openElements.items[K],W);if(!X.fragmentContext&&X.openElements.stackTop>=0){let K=X.openElements.items[0],J=X.treeAdapter.getNodeSourceCodeLocation(K);if(J&&!J.endTag){if(X._setEndLocation(K,W),X.openElements.stackTop>=1){let Y=X.openElements.items[1],H=X.treeAdapter.getNodeSourceCodeLocation(Y);if(H&&!H.endTag)X._setEndLocation(Y,W)}}}}}function n9(X,W){X._setDocumentType(W);let Z=W.forceQuirks?e.QUIRKS:J4(W);if(!K4(W))X._err(W,L.nonConformingDoctype);X.treeAdapter.setDocumentMode(X.document,Z),X.insertionMode=j.BEFORE_HTML}function Q1(X,W){X._err(W,L.missingDoctype,!0),X.treeAdapter.setDocumentMode(X.document,e.QUIRKS),X.insertionMode=j.BEFORE_HTML,X._processToken(W)}function t9(X,W){if(W.tagID===Q.HTML)X._insertElement(W,x.HTML),X.insertionMode=j.BEFORE_HEAD;else J1(X,W)}function e9(X,W){let Z=W.tagID;if(Z===Q.HTML||Z===Q.HEAD||Z===Q.BODY||Z===Q.BR)J1(X,W)}function J1(X,W){X._insertFakeRootElement(),X.insertionMode=j.BEFORE_HEAD,X._processToken(W)}function XW(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.HEAD:{X._insertElement(W,x.HTML),X.headElement=X.openElements.current,X.insertionMode=j.IN_HEAD;break}default:V1(X,W)}}function WW(X,W){let Z=W.tagID;if(Z===Q.HEAD||Z===Q.BODY||Z===Q.HTML||Z===Q.BR)V1(X,W);else X._err(W,L.endTagWithoutMatchingOpenElement)}function V1(X,W){X._insertFakeElement(q.HEAD,Q.HEAD),X.headElement=X.openElements.current,X.insertionMode=j.IN_HEAD,X._processToken(W)}function j0(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:{X._appendElement(W,x.HTML),W.ackSelfClosing=!0;break}case Q.TITLE:{X._switchToTextParsing(W,o.RCDATA);break}case Q.NOSCRIPT:{if(X.options.scriptingEnabled)X._switchToTextParsing(W,o.RAWTEXT);else X._insertElement(W,x.HTML),X.insertionMode=j.IN_HEAD_NO_SCRIPT;break}case Q.NOFRAMES:case Q.STYLE:{X._switchToTextParsing(W,o.RAWTEXT);break}case Q.SCRIPT:{X._switchToTextParsing(W,o.SCRIPT_DATA);break}case Q.TEMPLATE:{X._insertTemplate(W),X.activeFormattingElements.insertMarker(),X.framesetOk=!1,X.insertionMode=j.IN_TEMPLATE,X.tmplInsertionModeStack.unshift(j.IN_TEMPLATE);break}case Q.HEAD:{X._err(W,L.misplacedStartTagForHeadElement);break}default:Y1(X,W)}}function ZW(X,W){switch(W.tagID){case Q.HEAD:{X.openElements.pop(),X.insertionMode=j.AFTER_HEAD;break}case Q.BODY:case Q.BR:case Q.HTML:{Y1(X,W);break}case Q.TEMPLATE:{G0(X,W);break}default:X._err(W,L.endTagWithoutMatchingOpenElement)}}function G0(X,W){if(X.openElements.tmplCount>0){if(X.openElements.generateImpliedEndTagsThoroughly(),X.openElements.currentTagId!==Q.TEMPLATE)X._err(W,L.closingOfElementWithOpenChildElements);X.openElements.popUntilTagNamePopped(Q.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode()}else X._err(W,L.endTagWithoutMatchingOpenElement)}function Y1(X,W){X.openElements.pop(),X.insertionMode=j.AFTER_HEAD,X._processToken(W)}function QW(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.BASEFONT:case Q.BGSOUND:case Q.HEAD:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.STYLE:{j0(X,W);break}case Q.NOSCRIPT:{X._err(W,L.nestedNoscriptInHead);break}default:z1(X,W)}}function KW(X,W){switch(W.tagID){case Q.NOSCRIPT:{X.openElements.pop(),X.insertionMode=j.IN_HEAD;break}case Q.BR:{z1(X,W);break}default:X._err(W,L.endTagWithoutMatchingOpenElement)}}function z1(X,W){let Z=W.type===_.EOF?L.openElementsLeftAfterEof:L.disallowedContentInNoscriptInHead;X._err(W,Z),X.openElements.pop(),X.insertionMode=j.IN_HEAD,X._processToken(W)}function JW(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.BODY:{X._insertElement(W,x.HTML),X.framesetOk=!1,X.insertionMode=j.IN_BODY;break}case Q.FRAMESET:{X._insertElement(W,x.HTML),X.insertionMode=j.IN_FRAMESET;break}case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.SCRIPT:case Q.STYLE:case Q.TEMPLATE:case Q.TITLE:{X._err(W,L.abandonedHeadElementChild),X.openElements.push(X.headElement,Q.HEAD),j0(X,W),X.openElements.remove(X.headElement);break}case Q.HEAD:{X._err(W,L.misplacedStartTagForHeadElement);break}default:j1(X,W)}}function VW(X,W){switch(W.tagID){case Q.BODY:case Q.HTML:case Q.BR:{j1(X,W);break}case Q.TEMPLATE:{G0(X,W);break}default:X._err(W,L.endTagWithoutMatchingOpenElement)}}function j1(X,W){X._insertFakeElement(q.BODY,Q.BODY),X.insertionMode=j.IN_BODY,t1(X,W)}function t1(X,W){switch(W.type){case _.CHARACTER:{L4(X,W);break}case _.WHITESPACE_CHARACTER:{B4(X,W);break}case _.COMMENT:{nX(X,W);break}case _.START_TAG:{n(X,W);break}case _.END_TAG:{e1(X,W);break}case _.EOF:{b4(X,W);break}default:}}function B4(X,W){X._reconstructActiveFormattingElements(),X._insertCharacters(W)}function L4(X,W){X._reconstructActiveFormattingElements(),X._insertCharacters(W),X.framesetOk=!1}function YW(X,W){if(X.openElements.tmplCount===0)X.treeAdapter.adoptAttributes(X.openElements.items[0],W.attrs)}function zW(X,W){let Z=X.openElements.tryPeekProperlyNestedBodyElement();if(Z&&X.openElements.tmplCount===0)X.framesetOk=!1,X.treeAdapter.adoptAttributes(Z,W.attrs)}function jW(X,W){let Z=X.openElements.tryPeekProperlyNestedBodyElement();if(X.framesetOk&&Z)X.treeAdapter.detachNode(Z),X.openElements.popAllUpToHtmlElement(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_FRAMESET}function HW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(W,x.HTML)}function wW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();if(X.openElements.currentTagId!==void 0&&W1.has(X.openElements.currentTagId))X.openElements.pop();X._insertElement(W,x.HTML)}function UW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(W,x.HTML),X.skipNextNewLine=!0,X.framesetOk=!1}function FW(X,W){let Z=X.openElements.tmplCount>0;if(!X.formElement||Z){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();if(X._insertElement(W,x.HTML),!Z)X.formElement=X.openElements.current}}function qW(X,W){X.framesetOk=!1;let Z=W.tagID;for(let K=X.openElements.stackTop;K>=0;K--){let J=X.openElements.tagIDs[K];if(Z===Q.LI&&J===Q.LI||(Z===Q.DD||Z===Q.DT)&&(J===Q.DD||J===Q.DT)){X.openElements.generateImpliedEndTagsWithExclusion(J),X.openElements.popUntilTagNamePopped(J);break}if(J!==Q.ADDRESS&&J!==Q.DIV&&J!==Q.P&&X._isSpecialElement(X.openElements.items[K],J))break}if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(W,x.HTML)}function BW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(W,x.HTML),X.tokenizer.state=o.PLAINTEXT}function LW(X,W){if(X.openElements.hasInScope(Q.BUTTON))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.BUTTON);X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML),X.framesetOk=!1}function PW(X,W){let Z=X.activeFormattingElements.getElementEntryInScopeWithTagName(q.A);if(Z)eX(X,W),X.openElements.remove(Z.element),X.activeFormattingElements.removeEntry(Z);X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML),X.activeFormattingElements.pushElement(X.openElements.current,W)}function xW(X,W){X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML),X.activeFormattingElements.pushElement(X.openElements.current,W)}function vW(X,W){if(X._reconstructActiveFormattingElements(),X.openElements.hasInScope(Q.NOBR))eX(X,W),X._reconstructActiveFormattingElements();X._insertElement(W,x.HTML),X.activeFormattingElements.pushElement(X.openElements.current,W)}function bW(X,W){X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML),X.activeFormattingElements.insertMarker(),X.framesetOk=!1}function yW(X,W){if(X.treeAdapter.getDocumentMode(X.document)!==e.QUIRKS&&X.openElements.hasInButtonScope(Q.P))X._closePElement();X._insertElement(W,x.HTML),X.framesetOk=!1,X.insertionMode=j.IN_TABLE}function P4(X,W){X._reconstructActiveFormattingElements(),X._appendElement(W,x.HTML),X.framesetOk=!1,W.ackSelfClosing=!0}function x4(X){let W=c1(X,L0.TYPE);return W!=null&&W.toLowerCase()===S9}function fW(X,W){if(X._reconstructActiveFormattingElements(),X._appendElement(W,x.HTML),!x4(W))X.framesetOk=!1;W.ackSelfClosing=!0}function RW(X,W){X._appendElement(W,x.HTML),W.ackSelfClosing=!0}function OW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._appendElement(W,x.HTML),X.framesetOk=!1,W.ackSelfClosing=!0}function CW(X,W){W.tagName=q.IMG,W.tagID=Q.IMG,P4(X,W)}function hW(X,W){X._insertElement(W,x.HTML),X.skipNextNewLine=!0,X.tokenizer.state=o.RCDATA,X.originalInsertionMode=X.insertionMode,X.framesetOk=!1,X.insertionMode=j.TEXT}function NW(X,W){if(X.openElements.hasInButtonScope(Q.P))X._closePElement();X._reconstructActiveFormattingElements(),X.framesetOk=!1,X._switchToTextParsing(W,o.RAWTEXT)}function MW(X,W){X.framesetOk=!1,X._switchToTextParsing(W,o.RAWTEXT)}function U4(X,W){X._switchToTextParsing(W,o.RAWTEXT)}function gW(X,W){X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML),X.framesetOk=!1,X.insertionMode=X.insertionMode===j.IN_TABLE||X.insertionMode===j.IN_CAPTION||X.insertionMode===j.IN_TABLE_BODY||X.insertionMode===j.IN_ROW||X.insertionMode===j.IN_CELL?j.IN_SELECT_IN_TABLE:j.IN_SELECT}function DW(X,W){if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML)}function mW(X,W){if(X.openElements.hasInScope(Q.RUBY))X.openElements.generateImpliedEndTags();X._insertElement(W,x.HTML)}function $W(X,W){if(X.openElements.hasInScope(Q.RUBY))X.openElements.generateImpliedEndTagsWithExclusion(Q.RTC);X._insertElement(W,x.HTML)}function GW(X,W){if(X._reconstructActiveFormattingElements(),rX(W),p1(W),W.selfClosing)X._appendElement(W,x.MATHML);else X._insertElement(W,x.MATHML);W.ackSelfClosing=!0}function EW(X,W){if(X._reconstructActiveFormattingElements(),sX(W),p1(W),W.selfClosing)X._appendElement(W,x.SVG);else X._insertElement(W,x.SVG);W.ackSelfClosing=!0}function F4(X,W){X._reconstructActiveFormattingElements(),X._insertElement(W,x.HTML)}function n(X,W){switch(W.tagID){case Q.I:case Q.S:case Q.B:case Q.U:case Q.EM:case Q.TT:case Q.BIG:case Q.CODE:case Q.FONT:case Q.SMALL:case Q.STRIKE:case Q.STRONG:{xW(X,W);break}case Q.A:{PW(X,W);break}case Q.H1:case Q.H2:case Q.H3:case Q.H4:case Q.H5:case Q.H6:{wW(X,W);break}case Q.P:case Q.DL:case Q.OL:case Q.UL:case Q.DIV:case Q.DIR:case Q.NAV:case Q.MAIN:case Q.MENU:case Q.ASIDE:case Q.CENTER:case Q.FIGURE:case Q.FOOTER:case Q.HEADER:case Q.HGROUP:case Q.DIALOG:case Q.DETAILS:case Q.ADDRESS:case Q.ARTICLE:case Q.SEARCH:case Q.SECTION:case Q.SUMMARY:case Q.FIELDSET:case Q.BLOCKQUOTE:case Q.FIGCAPTION:{HW(X,W);break}case Q.LI:case Q.DD:case Q.DT:{qW(X,W);break}case Q.BR:case Q.IMG:case Q.WBR:case Q.AREA:case Q.EMBED:case Q.KEYGEN:{P4(X,W);break}case Q.HR:{OW(X,W);break}case Q.RB:case Q.RTC:{mW(X,W);break}case Q.RT:case Q.RP:{$W(X,W);break}case Q.PRE:case Q.LISTING:{UW(X,W);break}case Q.XMP:{NW(X,W);break}case Q.SVG:{EW(X,W);break}case Q.HTML:{YW(X,W);break}case Q.BASE:case Q.LINK:case Q.META:case Q.STYLE:case Q.TITLE:case Q.SCRIPT:case Q.BGSOUND:case Q.BASEFONT:case Q.TEMPLATE:{j0(X,W);break}case Q.BODY:{zW(X,W);break}case Q.FORM:{FW(X,W);break}case Q.NOBR:{vW(X,W);break}case Q.MATH:{GW(X,W);break}case Q.TABLE:{yW(X,W);break}case Q.INPUT:{fW(X,W);break}case Q.PARAM:case Q.TRACK:case Q.SOURCE:{RW(X,W);break}case Q.IMAGE:{CW(X,W);break}case Q.BUTTON:{LW(X,W);break}case Q.APPLET:case Q.OBJECT:case Q.MARQUEE:{bW(X,W);break}case Q.IFRAME:{MW(X,W);break}case Q.SELECT:{gW(X,W);break}case Q.OPTION:case Q.OPTGROUP:{DW(X,W);break}case Q.NOEMBED:case Q.NOFRAMES:{U4(X,W);break}case Q.FRAMESET:{jW(X,W);break}case Q.TEXTAREA:{hW(X,W);break}case Q.NOSCRIPT:{if(X.options.scriptingEnabled)U4(X,W);else F4(X,W);break}case Q.PLAINTEXT:{BW(X,W);break}case Q.COL:case Q.TH:case Q.TD:case Q.TR:case Q.HEAD:case Q.FRAME:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.CAPTION:case Q.COLGROUP:break;default:F4(X,W)}}function _W(X,W){if(X.openElements.hasInScope(Q.BODY)){if(X.insertionMode=j.AFTER_BODY,X.options.sourceCodeLocationInfo){let Z=X.openElements.tryPeekProperlyNestedBodyElement();if(Z)X._setEndLocation(Z,W)}}}function kW(X,W){if(X.openElements.hasInScope(Q.BODY))X.insertionMode=j.AFTER_BODY,M4(X,W)}function uW(X,W){let Z=W.tagID;if(X.openElements.hasInScope(Z))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Z)}function IW(X){let W=X.openElements.tmplCount>0,{formElement:Z}=X;if(!W)X.formElement=null;if((Z||W)&&X.openElements.hasInScope(Q.FORM)){if(X.openElements.generateImpliedEndTags(),W)X.openElements.popUntilTagNamePopped(Q.FORM);else if(Z)X.openElements.remove(Z)}}function SW(X){if(!X.openElements.hasInButtonScope(Q.P))X._insertFakeElement(q.P,Q.P);X._closePElement()}function lW(X){if(X.openElements.hasInListItemScope(Q.LI))X.openElements.generateImpliedEndTagsWithExclusion(Q.LI),X.openElements.popUntilTagNamePopped(Q.LI)}function TW(X,W){let Z=W.tagID;if(X.openElements.hasInScope(Z))X.openElements.generateImpliedEndTagsWithExclusion(Z),X.openElements.popUntilTagNamePopped(Z)}function AW(X){if(X.openElements.hasNumberedHeaderInScope())X.openElements.generateImpliedEndTags(),X.openElements.popUntilNumberedHeaderPopped()}function cW(X,W){let Z=W.tagID;if(X.openElements.hasInScope(Z))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Z),X.activeFormattingElements.clearToLastMarker()}function aW(X){X._reconstructActiveFormattingElements(),X._insertFakeElement(q.BR,Q.BR),X.openElements.pop(),X.framesetOk=!1}function v4(X,W){let{tagName:Z,tagID:K}=W;for(let J=X.openElements.stackTop;J>0;J--){let Y=X.openElements.items[J],H=X.openElements.tagIDs[J];if(K===H&&(K!==Q.UNKNOWN||X.treeAdapter.getTagName(Y)===Z)){if(X.openElements.generateImpliedEndTagsWithExclusion(K),X.openElements.stackTop>=J)X.openElements.shortenToLength(J);break}if(X._isSpecialElement(Y,H))break}}function e1(X,W){switch(W.tagID){case Q.A:case Q.B:case Q.I:case Q.S:case Q.U:case Q.EM:case Q.TT:case Q.BIG:case Q.CODE:case Q.FONT:case Q.NOBR:case Q.SMALL:case Q.STRIKE:case Q.STRONG:{eX(X,W);break}case Q.P:{SW(X);break}case Q.DL:case Q.UL:case Q.OL:case Q.DIR:case Q.DIV:case Q.NAV:case Q.PRE:case Q.MAIN:case Q.MENU:case Q.ASIDE:case Q.BUTTON:case Q.CENTER:case Q.FIGURE:case Q.FOOTER:case Q.HEADER:case Q.HGROUP:case Q.DIALOG:case Q.ADDRESS:case Q.ARTICLE:case Q.DETAILS:case Q.SEARCH:case Q.SECTION:case Q.SUMMARY:case Q.LISTING:case Q.FIELDSET:case Q.BLOCKQUOTE:case Q.FIGCAPTION:{uW(X,W);break}case Q.LI:{lW(X);break}case Q.DD:case Q.DT:{TW(X,W);break}case Q.H1:case Q.H2:case Q.H3:case Q.H4:case Q.H5:case Q.H6:{AW(X);break}case Q.BR:{aW(X);break}case Q.BODY:{_W(X,W);break}case Q.HTML:{kW(X,W);break}case Q.FORM:{IW(X);break}case Q.APPLET:case Q.OBJECT:case Q.MARQUEE:{cW(X,W);break}case Q.TEMPLATE:{G0(X,W);break}default:v4(X,W)}}function b4(X,W){if(X.tmplInsertionModeStack.length>0)N4(X,W);else X2(X,W)}function iW(X,W){var Z;if(W.tagID===Q.SCRIPT)(Z=X.scriptHandler)===null||Z===void 0||Z.call(X,X.openElements.current);X.openElements.pop(),X.insertionMode=X.originalInsertionMode}function dW(X,W){X._err(W,L.eofInElementThatCanContainOnlyText),X.openElements.pop(),X.insertionMode=X.originalInsertionMode,X.onEof(W)}function oX(X,W){if(X.openElements.currentTagId!==void 0&&q4.has(X.openElements.currentTagId))switch(X.pendingCharacterTokens.length=0,X.hasNonWhitespacePendingCharacterToken=!1,X.originalInsertionMode=X.insertionMode,X.insertionMode=j.IN_TABLE_TEXT,W.type){case _.CHARACTER:{f4(X,W);break}case _.WHITESPACE_CHARACTER:{y4(X,W);break}}else w1(X,W)}function pW(X,W){X.openElements.clearBackToTableContext(),X.activeFormattingElements.insertMarker(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_CAPTION}function rW(X,W){X.openElements.clearBackToTableContext(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_COLUMN_GROUP}function sW(X,W){X.openElements.clearBackToTableContext(),X._insertFakeElement(q.COLGROUP,Q.COLGROUP),X.insertionMode=j.IN_COLUMN_GROUP,W2(X,W)}function oW(X,W){X.openElements.clearBackToTableContext(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_TABLE_BODY}function nW(X,W){X.openElements.clearBackToTableContext(),X._insertFakeElement(q.TBODY,Q.TBODY),X.insertionMode=j.IN_TABLE_BODY,XX(X,W)}function tW(X,W){if(X.openElements.hasInTableScope(Q.TABLE))X.openElements.popUntilTagNamePopped(Q.TABLE),X._resetInsertionMode(),X._processStartTag(W)}function eW(X,W){if(x4(W))X._appendElement(W,x.HTML);else w1(X,W);W.ackSelfClosing=!0}function XZ(X,W){if(!X.formElement&&X.openElements.tmplCount===0)X._insertElement(W,x.HTML),X.formElement=X.openElements.current,X.openElements.pop()}function c0(X,W){switch(W.tagID){case Q.TD:case Q.TH:case Q.TR:{nW(X,W);break}case Q.STYLE:case Q.SCRIPT:case Q.TEMPLATE:{j0(X,W);break}case Q.COL:{sW(X,W);break}case Q.FORM:{XZ(X,W);break}case Q.TABLE:{tW(X,W);break}case Q.TBODY:case Q.TFOOT:case Q.THEAD:{oW(X,W);break}case Q.INPUT:{eW(X,W);break}case Q.CAPTION:{pW(X,W);break}case Q.COLGROUP:{rW(X,W);break}default:w1(X,W)}}function H1(X,W){switch(W.tagID){case Q.TABLE:{if(X.openElements.hasInTableScope(Q.TABLE))X.openElements.popUntilTagNamePopped(Q.TABLE),X._resetInsertionMode();break}case Q.TEMPLATE:{G0(X,W);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TBODY:case Q.TD:case Q.TFOOT:case Q.TH:case Q.THEAD:case Q.TR:break;default:w1(X,W)}}function w1(X,W){let Z=X.fosterParentingEnabled;X.fosterParentingEnabled=!0,t1(X,W),X.fosterParentingEnabled=Z}function y4(X,W){X.pendingCharacterTokens.push(W)}function f4(X,W){X.pendingCharacterTokens.push(W),X.hasNonWhitespacePendingCharacterToken=!0}function K1(X,W){let Z=0;if(X.hasNonWhitespacePendingCharacterToken)for(;Z<X.pendingCharacterTokens.length;Z++)w1(X,X.pendingCharacterTokens[Z]);else for(;Z<X.pendingCharacterTokens.length;Z++)X._insertCharacters(X.pendingCharacterTokens[Z]);X.insertionMode=X.originalInsertionMode,X._processToken(W)}var R4=new Set([Q.CAPTION,Q.COL,Q.COLGROUP,Q.TBODY,Q.TD,Q.TFOOT,Q.TH,Q.THEAD,Q.TR]);function WZ(X,W){let Z=W.tagID;if(R4.has(Z)){if(X.openElements.hasInTableScope(Q.CAPTION))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=j.IN_TABLE,c0(X,W)}else n(X,W)}function ZZ(X,W){let Z=W.tagID;switch(Z){case Q.CAPTION:case Q.TABLE:{if(X.openElements.hasInTableScope(Q.CAPTION)){if(X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Q.CAPTION),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=j.IN_TABLE,Z===Q.TABLE)H1(X,W)}break}case Q.BODY:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TBODY:case Q.TD:case Q.TFOOT:case Q.TH:case Q.THEAD:case Q.TR:break;default:e1(X,W)}}function W2(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.COL:{X._appendElement(W,x.HTML),W.ackSelfClosing=!0;break}case Q.TEMPLATE:{j0(X,W);break}default:s1(X,W)}}function QZ(X,W){switch(W.tagID){case Q.COLGROUP:{if(X.openElements.currentTagId===Q.COLGROUP)X.openElements.pop(),X.insertionMode=j.IN_TABLE;break}case Q.TEMPLATE:{G0(X,W);break}case Q.COL:break;default:s1(X,W)}}function s1(X,W){if(X.openElements.currentTagId===Q.COLGROUP)X.openElements.pop(),X.insertionMode=j.IN_TABLE,X._processToken(W)}function XX(X,W){switch(W.tagID){case Q.TR:{X.openElements.clearBackToTableBodyContext(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_ROW;break}case Q.TH:case Q.TD:{X.openElements.clearBackToTableBodyContext(),X._insertFakeElement(q.TR,Q.TR),X.insertionMode=j.IN_ROW,WX(X,W);break}case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE,c0(X,W);break}default:c0(X,W)}}function tX(X,W){let Z=W.tagID;switch(W.tagID){case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasInTableScope(Z))X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE;break}case Q.TABLE:{if(X.openElements.hasTableBodyContextInTableScope())X.openElements.clearBackToTableBodyContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE,H1(X,W);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TD:case Q.TH:case Q.TR:break;default:H1(X,W)}}function WX(X,W){switch(W.tagID){case Q.TH:case Q.TD:{X.openElements.clearBackToTableRowContext(),X._insertElement(W,x.HTML),X.insertionMode=j.IN_CELL,X.activeFormattingElements.insertMarker();break}case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.TR:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY,XX(X,W);break}default:c0(X,W)}}function O4(X,W){switch(W.tagID){case Q.TR:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY;break}case Q.TABLE:{if(X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY,tX(X,W);break}case Q.TBODY:case Q.TFOOT:case Q.THEAD:{if(X.openElements.hasInTableScope(W.tagID)||X.openElements.hasInTableScope(Q.TR))X.openElements.clearBackToTableRowContext(),X.openElements.pop(),X.insertionMode=j.IN_TABLE_BODY,tX(X,W);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:case Q.TD:case Q.TH:break;default:H1(X,W)}}function KZ(X,W){let Z=W.tagID;if(R4.has(Z)){if(X.openElements.hasInTableScope(Q.TD)||X.openElements.hasInTableScope(Q.TH))X._closeTableCell(),WX(X,W)}else n(X,W)}function JZ(X,W){let Z=W.tagID;switch(Z){case Q.TD:case Q.TH:{if(X.openElements.hasInTableScope(Z))X.openElements.generateImpliedEndTags(),X.openElements.popUntilTagNamePopped(Z),X.activeFormattingElements.clearToLastMarker(),X.insertionMode=j.IN_ROW;break}case Q.TABLE:case Q.TBODY:case Q.TFOOT:case Q.THEAD:case Q.TR:{if(X.openElements.hasInTableScope(Z))X._closeTableCell(),O4(X,W);break}case Q.BODY:case Q.CAPTION:case Q.COL:case Q.COLGROUP:case Q.HTML:break;default:e1(X,W)}}function C4(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.OPTION:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();X._insertElement(W,x.HTML);break}case Q.OPTGROUP:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();X._insertElement(W,x.HTML);break}case Q.HR:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();X._appendElement(W,x.HTML),W.ackSelfClosing=!0;break}case Q.INPUT:case Q.KEYGEN:case Q.TEXTAREA:case Q.SELECT:{if(X.openElements.hasInSelectScope(Q.SELECT)){if(X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),W.tagID!==Q.SELECT)X._processStartTag(W)}break}case Q.SCRIPT:case Q.TEMPLATE:{j0(X,W);break}default:}}function h4(X,W){switch(W.tagID){case Q.OPTGROUP:{if(X.openElements.stackTop>0&&X.openElements.currentTagId===Q.OPTION&&X.openElements.tagIDs[X.openElements.stackTop-1]===Q.OPTGROUP)X.openElements.pop();if(X.openElements.currentTagId===Q.OPTGROUP)X.openElements.pop();break}case Q.OPTION:{if(X.openElements.currentTagId===Q.OPTION)X.openElements.pop();break}case Q.SELECT:{if(X.openElements.hasInSelectScope(Q.SELECT))X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode();break}case Q.TEMPLATE:{G0(X,W);break}default:}}function VZ(X,W){let Z=W.tagID;if(Z===Q.CAPTION||Z===Q.TABLE||Z===Q.TBODY||Z===Q.TFOOT||Z===Q.THEAD||Z===Q.TR||Z===Q.TD||Z===Q.TH)X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),X._processStartTag(W);else C4(X,W)}function YZ(X,W){let Z=W.tagID;if(Z===Q.CAPTION||Z===Q.TABLE||Z===Q.TBODY||Z===Q.TFOOT||Z===Q.THEAD||Z===Q.TR||Z===Q.TD||Z===Q.TH){if(X.openElements.hasInTableScope(Z))X.openElements.popUntilTagNamePopped(Q.SELECT),X._resetInsertionMode(),X.onEndTag(W)}else h4(X,W)}function zZ(X,W){switch(W.tagID){case Q.BASE:case Q.BASEFONT:case Q.BGSOUND:case Q.LINK:case Q.META:case Q.NOFRAMES:case Q.SCRIPT:case Q.STYLE:case Q.TEMPLATE:case Q.TITLE:{j0(X,W);break}case Q.CAPTION:case Q.COLGROUP:case Q.TBODY:case Q.TFOOT:case Q.THEAD:{X.tmplInsertionModeStack[0]=j.IN_TABLE,X.insertionMode=j.IN_TABLE,c0(X,W);break}case Q.COL:{X.tmplInsertionModeStack[0]=j.IN_COLUMN_GROUP,X.insertionMode=j.IN_COLUMN_GROUP,W2(X,W);break}case Q.TR:{X.tmplInsertionModeStack[0]=j.IN_TABLE_BODY,X.insertionMode=j.IN_TABLE_BODY,XX(X,W);break}case Q.TD:case Q.TH:{X.tmplInsertionModeStack[0]=j.IN_ROW,X.insertionMode=j.IN_ROW,WX(X,W);break}default:X.tmplInsertionModeStack[0]=j.IN_BODY,X.insertionMode=j.IN_BODY,n(X,W)}}function jZ(X,W){if(W.tagID===Q.TEMPLATE)G0(X,W)}function N4(X,W){if(X.openElements.tmplCount>0)X.openElements.popUntilTagNamePopped(Q.TEMPLATE),X.activeFormattingElements.clearToLastMarker(),X.tmplInsertionModeStack.shift(),X._resetInsertionMode(),X.onEof(W);else X2(X,W)}function HZ(X,W){if(W.tagID===Q.HTML)n(X,W);else o1(X,W)}function M4(X,W){var Z;if(W.tagID===Q.HTML){if(!X.fragmentContext)X.insertionMode=j.AFTER_AFTER_BODY;if(X.options.sourceCodeLocationInfo&&X.openElements.tagIDs[0]===Q.HTML){X._setEndLocation(X.openElements.items[0],W);let K=X.openElements.items[1];if(K&&!((Z=X.treeAdapter.getNodeSourceCodeLocation(K))===null||Z===void 0?void 0:Z.endTag))X._setEndLocation(K,W)}}else o1(X,W)}function o1(X,W){X.insertionMode=j.IN_BODY,t1(X,W)}function wZ(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.FRAMESET:{X._insertElement(W,x.HTML);break}case Q.FRAME:{X._appendElement(W,x.HTML),W.ackSelfClosing=!0;break}case Q.NOFRAMES:{j0(X,W);break}default:}}function UZ(X,W){if(W.tagID===Q.FRAMESET&&!X.openElements.isRootHtmlElementCurrent()){if(X.openElements.pop(),!X.fragmentContext&&X.openElements.currentTagId!==Q.FRAMESET)X.insertionMode=j.AFTER_FRAMESET}}function FZ(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.NOFRAMES:{j0(X,W);break}default:}}function qZ(X,W){if(W.tagID===Q.HTML)X.insertionMode=j.AFTER_AFTER_FRAMESET}function BZ(X,W){if(W.tagID===Q.HTML)n(X,W);else r1(X,W)}function r1(X,W){X.insertionMode=j.IN_BODY,t1(X,W)}function LZ(X,W){switch(W.tagID){case Q.HTML:{n(X,W);break}case Q.NOFRAMES:{j0(X,W);break}default:}}function PZ(X,W){W.chars=l,X._insertCharacters(W)}function xZ(X,W){X._insertCharacters(W),X.framesetOk=!1}function g4(X){while(X.treeAdapter.getNamespaceURI(X.openElements.current)!==x.HTML&&X.openElements.currentTagId!==void 0&&!X._isIntegrationPoint(X.openElements.currentTagId,X.openElements.current))X.openElements.pop()}function vZ(X,W){if(Y4(W))g4(X),X._startTagOutsideForeignContent(W);else{let Z=X._getAdjustedCurrentElement(),K=X.treeAdapter.getNamespaceURI(Z);if(K===x.MATHML)rX(W);else if(K===x.SVG)z4(W),sX(W);if(p1(W),W.selfClosing)X._appendElement(W,K);else X._insertElement(W,K);W.ackSelfClosing=!0}}function bZ(X,W){if(W.tagID===Q.P||W.tagID===Q.BR){g4(X),X._endTagOutsideForeignContent(W);return}for(let Z=X.openElements.stackTop;Z>0;Z--){let K=X.openElements.items[Z];if(X.treeAdapter.getNamespaceURI(K)===x.HTML){X._endTagOutsideForeignContent(W);break}let J=X.treeAdapter.getTagName(K);if(J.toLowerCase()===W.tagName){W.tagName=J,X.openElements.shortenToLength(Z);break}}}var tK=typeof String.prototype.codePointAt==="function"?(X,W)=>X.codePointAt(W):(X,W)=>(X.charCodeAt(W)&64512)===55296?(X.charCodeAt(W)-55296)*1024+X.charCodeAt(W+1)-56320+65536:X.charCodeAt(W);function D4(X,W){return function(K){let J,Y=0,H="";while(J=X.exec(K)){if(Y!==J.index)H+=K.substring(Y,J.index);H+=W.get(J[0].charCodeAt(0)),Y=J.index+1}return H+K.substring(Y)}}var m4=D4(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),$4=D4(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]));var yZ=new Set([q.AREA,q.BASE,q.BASEFONT,q.BGSOUND,q.BR,q.COL,q.EMBED,q.FRAME,q.HR,q.IMG,q.INPUT,q.KEYGEN,q.LINK,q.META,q.PARAM,q.SOURCE,q.TRACK,q.WBR]);function G4(X,W){return W.treeAdapter.isElementNode(X)&&W.treeAdapter.getNamespaceURI(X)===x.HTML&&yZ.has(W.treeAdapter.getTagName(X))}var fZ={treeAdapter:J0,scriptingEnabled:!0};function U1(X,W){let Z={...fZ,...W};if(G4(X,Z))return"";return E4(X,Z)}function E4(X,W){let Z="",K=W.treeAdapter.isElementNode(X)&&W.treeAdapter.getTagName(X)===q.TEMPLATE&&W.treeAdapter.getNamespaceURI(X)===x.HTML?W.treeAdapter.getTemplateContent(X):X,J=W.treeAdapter.getChildNodes(K);if(J)for(let Y of J)Z+=RZ(Y,W);return Z}function RZ(X,W){if(W.treeAdapter.isElementNode(X))return OZ(X,W);if(W.treeAdapter.isTextNode(X))return hZ(X,W);if(W.treeAdapter.isCommentNode(X))return NZ(X,W);if(W.treeAdapter.isDocumentTypeNode(X))return MZ(X,W);return""}function OZ(X,W){let Z=W.treeAdapter.getTagName(X);return`<${Z}${CZ(X,W)}>${G4(X,W)?"":`${E4(X,W)}</${Z}>`}`}function CZ(X,{treeAdapter:W}){let Z="";for(let K of W.getAttrList(X)){if(Z+=" ",K.namespace)switch(K.namespace){case x.XML:{Z+=`xml:${K.name}`;break}case x.XMLNS:{if(K.name!=="xmlns")Z+="xmlns:";Z+=K.name;break}case x.XLINK:{Z+=`xlink:${K.name}`;break}default:Z+=`${K.prefix}:${K.name}`}else Z+=K.name;Z+=`="${m4(K.value)}"`}return Z}function hZ(X,W){let{treeAdapter:Z}=W,K=Z.getTextNodeContent(X),J=Z.getParentNode(X),Y=J&&Z.isElementNode(J)&&Z.getTagName(J);return Y&&Z.getNamespaceURI(J)===x.HTML&&i6(Y,W.scriptingEnabled)?K:$4(K)}function NZ(X,{treeAdapter:W}){return`<!--${W.getCommentNodeContent(X)}-->`}function MZ(X,{treeAdapter:W}){return`<!DOCTYPE ${W.getDocumentTypeNodeName(X)}>`}function ZX(X,W){return n1.parse(X,W)}import{WebSocket as KX,WebSocketServer as IZ}from"ws";import*as a0 from"css-tree";var F1=20971520,gZ=new Set(["script","iframe","frame","frameset","object","embed","portal","base","audio","video","source","track","noscript","animate","animatemotion","animatetransform","discard","set"]),DZ=new Set(["action","cite","data","formaction","href","ping","poster","src","srcset","xlink:href"]),Z2=/^data:(?:image\/(?:png|jpe?g|gif|webp|avif|bmp|x-icon)|font\/[a-z0-9.+-]+|application\/(?:font-[a-z0-9.+-]+|vnd\.ms-fontobject|x-font-[a-z0-9.+-]+));/i,mZ=new Set(["date","datetime-local","email","month","number","password","search","tel","text","time","url","week"]);function $Z(X){return"tagName"in X}function _4(X,W){return X.attrs.find((Z)=>Z.name.toLowerCase()===W.toLowerCase())?.value??null}function F0(X,W,Z){let K=X.attrs.find((J)=>J.name.toLowerCase()===W.toLowerCase());if(K)K.value=Z;else X.attrs.push({name:W,value:Z})}function k4(X){try{let W=a0.parse(X,{context:"stylesheet",parseCustomProperty:!0,positions:!1});return a0.walk(W,{enter(Z,K,J){if(Z.type==="Atrule"&&Z.name.toLowerCase()==="import"){J.remove(K);return}if(Z.type==="Declaration"){let Y=Z.property.toLowerCase();if(Y==="behavior"||Y==="-moz-binding")J.remove(K);return}if(Z.type==="Url"&&!Z2.test(Z.value)){Z.value="data:,";return}if(Z.type==="String"&&this.function&&["image-set","-webkit-image-set","src"].includes(this.function.name.toLowerCase())&&!Z2.test(Z.value))Z.value="data:,"}}),a0.generate(W)}catch{return""}}function GZ(X){return k4(`x{${X}}`).replace(/^x\{/,"").replace(/\}$/,"")}function EZ(X){let W=X.tagName.toLowerCase();if(X.attrs=X.attrs.flatMap((Z)=>{let K=Z.name.toLowerCase();if(W==="input"&&(K==="value"||K==="checked"))return[];if(K.startsWith("on")||K==="srcdoc"||K==="nonce")return[];if(K==="style"){let J=GZ(Z.value);return J?[{...Z,value:J}]:[]}if(DZ.has(K)){if(K==="src"&&Z2.test(Z.value))return[Z];if(K==="href"&&Z.value.startsWith("#"))return[Z];return[]}if(K==="target"||K==="download"||K==="http-equiv")return[];return[Z]}),W==="form")F0(X,"inert",""),F0(X,"aria-disabled","true");else if(W==="textarea"||W==="input"&&mZ.has((_4(X,"type")??"text").toLowerCase()))F0(X,"readonly",""),F0(X,"aria-readonly","true"),F0(X,"tabindex","-1");else if(W==="button"||W==="select"||W==="input")F0(X,"disabled",""),F0(X,"aria-disabled","true"),F0(X,"tabindex","-1");if(_4(X,"contenteditable")!==null)F0(X,"contenteditable","false"),F0(X,"tabindex","-1"),X.childNodes=[];if(W==="textarea"||W==="select")X.childNodes=[];if(X.tagName==="style"&&X.childNodes){for(let Z of X.childNodes)if("value"in Z&&typeof Z.value==="string")Z.value=k4(Z.value)}}function u4(X){let W=[];for(let Z of X.childNodes){if($Z(Z)){let K=Z.tagName.toLowerCase();if(gZ.has(K))continue;if(K==="meta"&&Z.attrs.some((J)=>J.name.toLowerCase()==="http-equiv"&&J.value.toLowerCase()!=="content-type"))continue;if(K==="link")continue;EZ(Z),u4(Z)}W.push(Z)}X.childNodes=W}function I4(X){if(Buffer.byteLength(X,"utf8")>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");let W=ZX(X);u4(W);let Z=U1(W);if(Buffer.byteLength(Z,"utf8")>F1)throw Error("Sanitized browser snapshot exceeds the 20 MiB limit");return Z}function y0(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function _Z(X){try{let W=new URL(X);if(W.protocol!=="https:"||W.hostname!=="www.google.com"||W.username||W.password||W.pathname!=="/"&&W.pathname!=="/webhp")return null;return"https://www.google.com/search"}catch{return null}}function S4(X){let W=y0(_Z(X.sourceUrl));return`(() => {
|
|
4
4
|
"use strict";
|
|
5
5
|
let TOKEN = ${y0(X.token)};
|
|
6
6
|
let SOURCE_URL = ${y0(X.sourceUrl)};
|
|
@@ -853,7 +853,7 @@ function J8(){let X=globalThis.performance?.now?.()??Date.now();return Math.roun
|
|
|
853
853
|
};
|
|
854
854
|
addEventListener("popstate", notifyNavigation);
|
|
855
855
|
addEventListener("hashchange", notifyNavigation);
|
|
856
|
-
})();`}var
|
|
856
|
+
})();`}var l4=new Set(["content-security-policy","content-security-policy-report-only","x-frame-options","cross-origin-opener-policy","cross-origin-embedder-policy","cross-origin-resource-policy","content-encoding","content-length","transfer-encoding","set-cookie","strict-transport-security","report-to","nel","permissions-policy","x-content-type-options"]);function f0(X,W,Z){if(!X)return X;let K=X.trim(),J=Z.endsWith("/")?Z:`${Z}/`,Y=new URL(J).pathname;if(K.startsWith(J)||K.startsWith(Y)||/^(data|blob|mailto|tel|javascript):/i.test(K)||K.startsWith("#"))return K;try{let H=new URL(K,W);if(H.protocol!=="http:"&&H.protocol!=="https:")return K;return`${J}${H.href}`}catch{return K}}function K2(X){let W=(Z)=>{let K=Z.trim().replace(/^["']|["']$/g,"");if(!K||K.startsWith("data:"))return Z;return f0(K,X.baseUrl,X.proxyUrlPrefix)};return X.css.replace(/url\(\s*([^)]+?)\s*\)/gi,(Z,K)=>`url(${W(K)})`).replace(/@import\s+(["'])([^"']+)\1/gi,(Z,K,J)=>`@import ${K}${W(J)}${K}`)}function J2(X){let W=new URL(X.sourceUrl).origin,Z=new URL(X.proxyUrlPrefix).pathname,K=X.html.replace(/<meta[^>]+http-equiv\s*=\s*["']?content-security-policy["']?[^>]*>/gi,"").replace(/\sintegrity\s*=\s*(["'])[^"']*\1/gi,"").replace(/(\b(?:href|src|action|poster)\s*=\s*["'])(https?:)\/\//gi,(U,F,w)=>`${F}${Z}${w}//`).replace(/(\b(?:href|src|action|poster)\s*=\s*["'])\/\//gi,(U,F)=>`${F}${Z}https://`).replace(/(\b(?:href|action|poster)\s*=\s*["'])\/(?!\/|browser-kit\/session\/)/gi,(U,F)=>`${F}${Z}${W}/`).replace(/(\bimport\s*\(\s*["'])\/(?!\/|browser-kit\/session\/)([^"']*)(["']\s*\))/g,(U,F,w,B)=>`${F}${Z}${W}/${w}${B}`).replace(/(\bimport\s*\(\s*\\["'])\/(?!\/|browser-kit\/session\/)([^"'\\]*)(\\["']\s*\))/g,(U,F,w,B)=>`${F}${Z}${W}/${w}${B}`);K=K.replace(/(<meta[^>]+http-equiv\s*=\s*["']?refresh["']?[^>]*content\s*=\s*["'][^"']*?url\s*=\s*)([^"'\s>]+)/gi,(U,F,w)=>F+f0(w,X.sourceUrl,X.proxyUrlPrefix)),K=K.replace(/\bsrcset\s*=\s*["']([^"']*)["']/gi,(U,F)=>{return`srcset="${F.split(",").map((B)=>{let b=B.trim().split(/\s+/),R=b.shift();if(!R)return"";return[/^https?:\/\//i.test(R)||R.startsWith("//")||R.startsWith("/")?f0(R,X.sourceUrl,X.proxyUrlPrefix):R,...b].join(" ")}).filter(Boolean).join(", ")}"`});let J=Q2({sourceUrl:X.sourceUrl,proxyOrigin:X.proxyOrigin,proxyUrlPrefix:X.proxyUrlPrefix,sessionStorageNamespace:X.sessionStorageNamespace}),Y=S4({token:X.bridgeToken,sourceUrl:X.sourceUrl,revision:X.revision,navigateUrlPrefix:X.navigateUrlPrefix,parentOrigin:X.proxyOrigin}),H=`<base href="${X.proxyUrlPrefix}${X.sourceUrl}"><script data-browser-kit-runtime>${J}</script><script data-ideawave-browser-bridge>${Y}</script>`;if(/<head[^>]*>/i.test(K))return K.replace(/<head[^>]*>/i,(U)=>U+H);if(/<html[^>]*>/i.test(K))return K.replace(/<html[^>]*>/i,(U)=>U+H);return H+K}var V2="6";function Y2(){return`
|
|
857
857
|
self.addEventListener("install", (event) => event.waitUntil(self.skipWaiting()));
|
|
858
858
|
self.addEventListener("activate", (event) => event.waitUntil(self.clients.claim()));
|
|
859
859
|
|
|
@@ -972,7 +972,7 @@ self.addEventListener("fetch", (event) => {
|
|
|
972
972
|
return proxy(event, route, url.href);
|
|
973
973
|
})());
|
|
974
974
|
});
|
|
975
|
-
`}var
|
|
975
|
+
`}var SZ=1800000,VX="/browser-kit/session/",A4="__browser_kit_client_",lZ=5242880;function TZ(X){let W=X??"";return W.startsWith("[")?W.slice(1,W.indexOf("]")):W.split(":")[0]??""}function i0(X){let W=new URL(X);if(W.protocol!=="http:"&&W.protocol!=="https:")throw Error("Only HTTP(S) browser URLs are supported");return W.href}function c4(X){return"tagName"in X}function JX(X,W){return X.attrs.find((Z)=>Z.name.toLowerCase()===W)?.value??null}function q1(X,W,Z){let K=X.attrs.find((J)=>J.name.toLowerCase()===W);if(K)K.value=Z;else X.attrs.push({name:W,value:Z})}function i4(X){return(X.get("content-type")??"application/octet-stream").split(";")[0]?.trim().toLowerCase()??"application/octet-stream"}function a4(X){let W=i4(X.headers);if(!(/^image\/(?:png|jpeg|gif|webp|avif|bmp|x-icon)$/.test(W)||/^(?:font\/|application\/(?:font-|vnd\.ms-fontobject|x-font-))/.test(W)))return null;return`data:${W};base64,${X.body.toString("base64")}`}function AZ(X){let W=new URL(X);if(W.protocol!=="http:"&&W.protocol!=="https:")throw Error("Browser frontend origin is invalid");return W.origin}function d0(X){return JSON.stringify(X).replace(/</g,"\\u003c")}function cZ(X){return kZ("sha256").update(X).digest("hex").slice(0,24)}function z2(X){if(!X.startsWith(VX))return null;let W=X.slice(VX.length),Z=W.indexOf("/");if(Z<=0)return null;return{sessionId:W.slice(0,Z),route:W.slice(Z)}}function aZ(X){let W=new Headers;for(let[Z,K]of Object.entries(X.headers))if(typeof K==="string")W.set(Z,K);else if(Array.isArray(K))W.set(Z,K.join(", "));return W}async function iZ(X){if(X.method==="GET"||X.method==="HEAD")return;let W=[];for await(let Z of X)W.push(Buffer.isBuffer(Z)?Z:Buffer.from(Z));return W.length>0?Buffer.concat(W):void 0}function dZ(X){let W={};return X.forEach((Z,K)=>{W[K]=Z}),W}function pZ(X,W){let K=`${`${VX}${encodeURIComponent(X.id)}`}/proxy/`;return`<!doctype html>
|
|
976
976
|
<html>
|
|
977
977
|
<head>
|
|
978
978
|
<meta charset="utf-8">
|
|
@@ -993,7 +993,7 @@ html,body,#view{border:0;margin:0;width:100%;height:100%;overflow:hidden;backgro
|
|
|
993
993
|
const FRONTEND_ORIGIN = ${d0(X.frontendOrigin)};
|
|
994
994
|
const INITIAL_URL = ${d0(W)};
|
|
995
995
|
const PROXY_PATH_PREFIX = ${d0(K)};
|
|
996
|
-
const SERVICE_WORKER_VERSION = ${d0(
|
|
996
|
+
const SERVICE_WORKER_VERSION = ${d0(V2)};
|
|
997
997
|
const frame = document.getElementById("view");
|
|
998
998
|
const status = document.getElementById("status");
|
|
999
999
|
const showError = (error) => {
|
|
@@ -1034,7 +1034,7 @@ html,body,#view{border:0;margin:0;width:100%;height:100%;overflow:hidden;backgro
|
|
|
1034
1034
|
navigator.serviceWorker.addEventListener("controllerchange", changed);
|
|
1035
1035
|
});
|
|
1036
1036
|
};
|
|
1037
|
-
navigator.serviceWorker.register(${d0(`/browser-kit/sw.js?v=${
|
|
1037
|
+
navigator.serviceWorker.register(${d0(`/browser-kit/sw.js?v=${V2}`)}, { scope: "/" })
|
|
1038
1038
|
.then(waitForCurrentWorker)
|
|
1039
1039
|
.then(() => {
|
|
1040
1040
|
frame.src = PROXY_PATH_PREFIX + INITIAL_URL;
|
|
@@ -1043,29 +1043,29 @@ html,body,#view{border:0;margin:0;width:100%;height:100%;overflow:hidden;backgro
|
|
|
1043
1043
|
})();
|
|
1044
1044
|
</script>
|
|
1045
1045
|
</body>
|
|
1046
|
-
</html>`}class VX{sessions=new Map;profiles=new Map;socketServer=new uZ({noServer:!0});sweepTimer;port=null;constructor(){this.sweepTimer=setInterval(()=>this.sweep(),60000),this.sweepTimer.unref?.()}setPort(X){this.port=X}profileForOrigin(X){let W=this.profiles.get(X);if(W)return W;let Z={frontendOrigin:X,wrapperHost:`iw-browser-${AZ(X)}`,cookies:new Map};return this.profiles.set(X,Z),Z}wrapperOrigin(X){if(!this.port)throw Error("Browser kit is not ready");return`http://${X.profile.wrapperHost}.localhost:${this.port}`}sessionPath(X){return`${YX}${encodeURIComponent(X.id)}`}proxyPathPrefix(X){return`${this.sessionPath(X)}/proxy/`}proxyUrlPrefix(X){return`${this.wrapperOrigin(X)}${this.proxyPathPrefix(X)}`}result(X){let W=this.wrapperOrigin(X),Z=this.sessionPath(X);return{proxySessionId:X.id,wrapperUrl:`${W}${Z}/wrapper`,bridgeToken:X.bridgeToken,navigateUrlPrefix:`${W}${Z}/navigate?url=`}}async handleRpc(X,W,Z){if(Z.method==="open_proxy_session"){let K=Z.params;if(typeof K.browserNodeId!=="string"||typeof K.url!=="string")throw Error("Browser proxy session input is invalid");let J=i0(K.url),V=TZ(W),H=this.profileForOrigin(V),U=[...this.sessions.values()].find((w)=>w.frontendOrigin===V&&w.browserNodeId===K.browserNodeId);if(U)return U.frontendSessionIds.add(X),U.currentUrl=J,U.lastUsedAt=Date.now(),this.result(U);let F={id:l4(),frontendSessionIds:new Set([X]),frontendOrigin:V,browserNodeId:K.browserNodeId,profile:H,bridgeToken:kZ(24).toString("base64url"),currentUrl:J,lastUsedAt:Date.now()};return this.sessions.set(F.id,F),this.result(F)}if(Z.method==="close_proxy_session"){let K=Z.params;if(typeof K.proxySessionId!=="string")throw Error("Browser proxy session input is invalid");let J=this.sessions.get(K.proxySessionId);if(J&&!J.frontendSessionIds.has(X))throw Error("Browser proxy session belongs to another frontend session");if(J)J.frontendSessionIds.delete(X),J.lastUsedAt=Date.now();return{closed:!0}}if(Z.method==="build_snapshot"){let K=Z.params;if(typeof K.proxySessionId!=="string"||typeof K.revision!=="string"||K.revision.length===0||K.revision.length>200||typeof K.html!=="string"||typeof K.sourceUrl!=="string"||K.title!==void 0&&typeof K.title!=="string"||K.scrollX!==void 0&&(typeof K.scrollX!=="number"||!Number.isFinite(K.scrollX))||K.scrollY!==void 0&&(typeof K.scrollY!=="number"||!Number.isFinite(K.scrollY)))throw Error("Browser snapshot input is invalid");let J=this.sessions.get(K.proxySessionId);if(!J||!J.frontendSessionIds.has(X))throw Error("Browser proxy session is unavailable");return J.lastUsedAt=Date.now(),this.buildSnapshot(J,{revision:K.revision,html:K.html,sourceUrl:i0(K.sourceUrl),title:K.title??"",scrollX:K.scrollX??0,scrollY:K.scrollY??0})}throw Error("Unsupported browser-kit RPC operation")}closeFrontendSession(X){for(let W of this.sessions.values())if(W.frontendSessionIds.delete(X))W.lastUsedAt=Date.now()}async close(){clearInterval(this.sweepTimer),this.sessions.clear(),this.profiles.clear(),this.socketServer.close()}sweep(){let X=Date.now()-IZ;for(let W of this.sessions.values())if(W.frontendSessionIds.size===0&&W.lastUsedAt<X)this.sessions.delete(W.id)}profileForRequest(X){let W=lZ(X.headers.host);return[...this.profiles.values()].find((Z)=>W===`${Z.wrapperHost}.localhost`)??null}escapedSessionForProfile(X){let W=[...this.sessions.values()].filter((K)=>K.profile===X),Z=W.filter((K)=>K.frontendSessionIds.size>0);if(Z.length===1)return Z[0]??null;if(Z.length===0&&W.length===1)return W[0]??null;return null}storeCookies(X,W,Z){for(let K of W){let[J="",...V]=K.split(";"),H=J.indexOf("=");if(H<0)continue;let U=J.slice(0,H).trim(),F=J.slice(H+1).trim(),w=Z.toLowerCase();for(let v of V){let R=v.indexOf("="),O=(R<0?v:v.slice(0,R)).trim().toLowerCase(),b=R<0?"":v.slice(R+1).trim();if(O==="domain"&&b)w=b.replace(/^\./,"").toLowerCase()}if(!X.cookies.has(w))X.cookies.set(w,new Map);let B=X.cookies.get(w);if(!B)continue;if(F===""||/(^|;)\s*max-age=0/i.test(K))B.delete(U);else B.set(U,F)}}storeClientCookies(X,W){if(!W)return;for(let Z of W.split(";")){let K=Z.trim(),J=K.indexOf("=");if(J<1)continue;let V=K.slice(0,J);if(!V.startsWith(T4))continue;let H=V.slice(T4.length).split(".");if(H.length!==2)continue;try{let U=Buffer.from(H[0]??"","base64url").toString(),F=Buffer.from(H[1]??"","base64url").toString(),w=JSON.parse(decodeURIComponent(K.slice(J+1))),B=new URL(U).hostname.toLowerCase();if(!F||w.name!==F||typeof w.value!=="string")continue;if(!X.cookies.has(B))X.cookies.set(B,new Map);let v=X.cookies.get(B);if(!v)continue;if(w.deleted===!0)v.delete(F);else v.set(F,w.value)}catch{}}}cookieHeader(X,W){let Z=W.toLowerCase(),K=[];for(let[J,V]of X.cookies)if(Z===J||Z.endsWith(`.${J}`))for(let[H,U]of V)K.push(`${H}=${U}`);return K.join("; ")}snapshotTarget(X,W,Z){let K=W.trim();if(!K||/^(?:data|blob|mailto|tel|javascript):/i.test(K))return null;try{let J=new URL(K,this.wrapperOrigin(X));if(J.origin===this.wrapperOrigin(X)&&J.pathname.startsWith(this.proxyPathPrefix(X)))return i0(J.pathname.slice(this.proxyPathPrefix(X).length)+J.search+J.hash);return i0(new URL(K,Z).href)}catch{return null}}async fetchSnapshotResource(X,W,Z){let K=i0(W),J=Z.resources.get(K);if(J)return J;let V=(async()=>{let H=K,U=null;for(let w=0;;w+=1){let B=new URL(H),v=new Headers({accept:"*/*",referer:`${B.origin}/`}),R=this.cookieHeader(X.profile,B.hostname);if(R)v.set("cookie",R);U=await fetch(H,{method:"GET",headers:v,redirect:"manual"});let O=U.headers.getSetCookie,b=typeof O==="function"?O.call(U.headers):[];if(b.length>0)this.storeCookies(X.profile,b,B.hostname);let f=U.headers.get("location");if(U.status>=300&&U.status<400&&f&&w<15){H=new URL(f,H).href;continue}break}if(!U?.ok)throw Error(`Snapshot resource returned ${U?.status??502}`);let F=Buffer.from(await U.arrayBuffer());if(F.byteLength>SZ)throw Error("Snapshot resource exceeds the 5 MiB limit");if(Z.totalBytes+F.byteLength>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");return Z.totalBytes+=F.byteLength,{url:H,headers:U.headers,body:F}})();return Z.resources.set(K,V),V}async inlineSnapshotCss(X,W,Z,K){try{let J=E0.parse(W,{context:"stylesheet",parseCustomProperty:!0,positions:!1}),V=new Set;E0.walk(J,(U)=>{if(U.type!=="Url")return;let F=this.snapshotTarget(X,U.value,Z);if(F)V.add(F)});let H=new Map;return await Promise.all([...V].map(async(U)=>{try{let F=await this.fetchSnapshotResource(X,U,K),w=c4(F);if(!w)return;K.inlinedUrls.add(F.url),H.set(U,w)}catch{}})),E0.walk(J,{enter:(U,F,w)=>{if(U.type==="Atrule"&&U.name.toLowerCase()==="import"){w.remove(F);return}if(U.type!=="Url")return;let B=this.snapshotTarget(X,U.value,Z);U.value=B?H.get(B)??"data:,":"data:,"}}),E0.generate(J)}catch{return""}}async inlineSnapshotTree(X,W,Z,K){let J=[];for(let V of W.childNodes){if(A4(V)){let H=V.tagName.toLowerCase();if(H==="link"&&(JX(V,"rel")??"").toLowerCase().split(/\s+/).includes("stylesheet")){let F=JX(V,"href"),w=F?this.snapshotTarget(X,F,Z):null;if(!w)continue;try{let B=await this.fetchSnapshotResource(X,w,K);if(a4(B.headers)!=="text/css")continue;V.tagName="style",V.nodeName="style",V.attrs=V.attrs.filter((v)=>v.name.toLowerCase()==="media"),V.childNodes=[{nodeName:"#text",value:await this.inlineSnapshotCss(X,B.body.toString("utf8"),B.url,K),parentNode:V}],K.inlinedUrls.add(B.url)}catch{continue}}else if(H==="style"){for(let F of V.childNodes)if("value"in F&&typeof F.value==="string")F.value=await this.inlineSnapshotCss(X,F.value,Z,K)}let U=JX(V,"style");if(U!==null){let F=await this.inlineSnapshotCss(X,`x{${U}}`,Z,K);q1(V,"style",F.replace(/^x\{/,"").replace(/\}$/,""))}if(H==="img"){let F=JX(V,"src"),w=F?this.snapshotTarget(X,F,Z):null;if(w)try{let B=await this.fetchSnapshotResource(X,w,K),v=c4(B);if(q1(V,"src",v??"data:,"),v)K.inlinedUrls.add(B.url)}catch{q1(V,"src","data:,")}}await this.inlineSnapshotTree(X,V,Z,K)}J.push(V)}W.childNodes=J}setSnapshotScroll(X,W,Z){for(let K of X.childNodes){if(!A4(K))continue;if(K.tagName.toLowerCase()==="html")return q1(K,"data-ideawave-scroll-x",String(W)),q1(K,"data-ideawave-scroll-y",String(Z)),!0;if(this.setSnapshotScroll(K,W,Z))return!0}return!1}async buildSnapshot(X,W){let Z=Buffer.byteLength(W.html,"utf8");if(Z>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");let K=ZX(W.html),J={resources:new Map,inlinedUrls:new Set,totalBytes:Z};this.setSnapshotScroll(K,W.scrollX,W.scrollY),await this.inlineSnapshotTree(X,K,W.sourceUrl,J);let V=U1(K),H=u4(V),U=W.title.trim().slice(0,500)||V.match(/<title[^>]*>([^<]*)<\/title>/i)?.[1]?.trim()||"";return{html:H,sourceUrl:W.sourceUrl,title:U,revision:W.revision,byteLength:Buffer.byteLength(H,"utf8"),resourceCount:J.inlinedUrls.size,createdAt:new Date().toISOString()}}async proxy(X,W,Z,K){let J=K.pathname.slice(this.proxyPathPrefix(Z).length)+K.search+K.hash;if(!/^https?:\/\//i.test(J)){W.writeHead(400,{"content-type":"text/plain"}),W.end(`Bad proxy target: ${J}`);return}let V=await aZ(X),H=X.method??"GET",U=J,F=V,w=null;this.storeClientCookies(Z.profile,X.headers.cookie);for(let f=0;;f+=1){let h=new URL(U),C=cZ(X);for(let P of["host","connection","origin","referer","cookie","accept-encoding"])C.delete(P);let g=this.cookieHeader(Z.profile,h.hostname);if(g)C.set("cookie",g);C.set("referer",`${h.origin}/`);let N={method:H,headers:C,redirect:"manual",...H!=="GET"&&H!=="HEAD"&&F?{body:F,duplex:"half"}:{}};try{w=await fetch(U,N)}catch(P){W.writeHead(502,{"content-type":"text/plain"}),W.end(`Proxy fetch error for ${U}: ${P instanceof Error?P.message:String(P)}`);return}let m=w.headers.getSetCookie,u=typeof m==="function"?m.call(w.headers):[];if(u.length>0)this.storeCookies(Z.profile,u,h.hostname);let M=w.headers.get("location");if(w.status>=300&&w.status<400&&M&&f<15){if(U=new URL(M,U).href,w.status===303||H==="POST"&&(w.status===301||w.status===302))H="GET",F=void 0;continue}break}if(!w)throw Error("Browser proxy received no response");Z.lastUsedAt=Date.now();let B=new Headers;w.headers.forEach((f,h)=>{if(!S4.has(h.toLowerCase()))B.set(h,f)}),B.set("access-control-allow-origin","*"),B.set("access-control-allow-credentials","true");for(let f of["location","content-location"]){let h=B.get(f);if(h)B.set(f,O0(h,U,this.proxyUrlPrefix(Z)))}let v=B.get("refresh");if(v){let f=v.toLowerCase().indexOf("url=");if(f>=0)B.set("refresh",v.slice(0,f+4)+O0(v.slice(f+4).trim(),U,this.proxyUrlPrefix(Z)))}let R=B.get("link");if(R){let f=R.replace(/<([^>]+)>/g,(h,C)=>`<${O0(C,U,this.proxyUrlPrefix(Z))}>`).replace(/;\s*integrity\s*=\s*(?:"[^"]*"|'[^']*'|[^;,\s]+)/gi,"");B.set("link",f)}let O=(w.headers.get("content-type")??"").toLowerCase(),b;if(O.includes("text/html")){let f=l4();b=J2({html:await w.text(),sourceUrl:U,proxyOrigin:this.wrapperOrigin(Z),proxyUrlPrefix:this.proxyUrlPrefix(Z),bridgeToken:Z.bridgeToken,revision:f,navigateUrlPrefix:`${this.wrapperOrigin(Z)}${this.sessionPath(Z)}/navigate?url=`,sessionStorageNamespace:Z.id}),B.delete("etag"),B.delete("last-modified"),B.set("cache-control","no-store"),B.append("set-cookie",`__browser_kit_origin_${Z.id}=${encodeURIComponent(new URL(U).origin)}; Path=/; SameSite=Lax`)}else if(O.includes("text/css"))b=K2({css:await w.text(),baseUrl:U,proxyUrlPrefix:this.proxyUrlPrefix(Z)}),B.delete("etag"),B.delete("last-modified"),B.set("cache-control","no-store");else b=Buffer.from(await w.arrayBuffer());if(W.writeHead(w.status,iZ(B)),X.method==="HEAD")W.end();else W.end(b)}async handleHttpRequest(X,W){let Z=new URL(X.url??"/","http://localhost"),K=Z.pathname.startsWith("/browser-kit/"),J=this.profileForRequest(X);if(!J){if(!K)return!1;return W.writeHead(404,{"content-type":"text/plain"}),W.end("Browser-kit profile not found"),!0}if(!K){let U=this.escapedSessionForProfile(J);if(!U)return W.writeHead(409,{"content-type":"text/plain"}),W.end("Browser-kit request could not be assigned to one active card"),!0;let F=null,w=X.headers.referer;if(w)try{let v=new URL(w),R=z2(v.pathname);if(R?.sessionId===U.id&&R.route.startsWith("/proxy/"))F=new URL(R.route.slice(7)).origin}catch{}if(!F){let v=`__browser_kit_origin_${U.id}=`,R=X.headers.cookie?.split(";").map((O)=>O.trim()).find((O)=>O.startsWith(v));if(R)try{F=decodeURIComponent(R.slice(v.length))}catch{}}if(!F)F=new URL(U.currentUrl).origin;let B=`${F}${Z.pathname}${Z.search}`;return W.writeHead(307,{location:`${this.proxyUrlPrefix(U)}${B}`,"cache-control":"no-store"}),W.end(),!0}if(Z.pathname==="/browser-kit/sw.js"){if(X.method!=="GET"&&X.method!=="HEAD")return W.writeHead(405),W.end(),!0;if(W.writeHead(200,{"content-type":"text/javascript; charset=utf-8","service-worker-allowed":"/","cache-control":"no-store"}),X.method==="HEAD")W.end();else W.end(V2());return!0}let V=z2(Z.pathname),H=V?this.sessions.get(V.sessionId):void 0;if(!V||!H||H.profile!==J)return W.writeHead(404,{"content-type":"text/plain"}),W.end("Browser-kit session not found"),!0;if(H.lastUsedAt=Date.now(),V.route==="/wrapper"){if(X.method!=="GET"&&X.method!=="HEAD")return W.writeHead(405),W.end(),!0;let U=dZ(H,H.currentUrl);if(W.writeHead(200,{"content-type":"text/html; charset=utf-8","cache-control":"no-store","content-security-policy":`default-src 'self'; script-src 'self' 'unsafe-inline'; worker-src 'self'; style-src 'unsafe-inline'; frame-src 'self'; connect-src 'self'; frame-ancestors ${H.frontendOrigin}`,"access-control-allow-origin":H.frontendOrigin,vary:"Origin"}),X.method==="HEAD")W.end();else W.end(U);return!0}if(V.route==="/navigate"){if(X.method!=="GET"&&X.method!=="HEAD")return W.writeHead(405),W.end(),!0;let U=Z.searchParams.get("url");if(!U)return W.writeHead(400),W.end(),!0;return H.currentUrl=i0(U),W.writeHead(307,{location:`${this.proxyUrlPrefix(H)}${H.currentUrl}`,"cache-control":"no-store"}),W.end(),!0}if(V.route.startsWith("/proxy/"))return await this.proxy(X,W,H,Z),!0;return W.writeHead(404),W.end(),!0}handleUpgrade(X,W,Z){let K=new URL(X.url??"/","http://localhost"),J=z2(K.pathname);if(!J?.route.startsWith("/proxy/"))return!1;let V=this.profileForRequest(X),H=this.sessions.get(J.sessionId);if(!V||!H||H.profile!==V)return W.destroy(),!0;let U=J.route.slice(7)+K.search+K.hash;if(!/^wss?:\/\//i.test(U))return W.destroy(),!0;return this.socketServer.handleUpgrade(X,W,Z,(F)=>{let w;try{let v=new URL(U),R={origin:v.origin},O=this.cookieHeader(H.profile,v.hostname);if(O)R.cookie=O;w=new KX(U,{headers:R})}catch{F.close(1011,"bad target");return}let B=[];w.binaryType="arraybuffer",w.on("open",()=>{for(let v of B)w.send(v);B.length=0}),F.on("message",(v)=>{if(w.readyState===KX.OPEN)w.send(v);else B.push(v)}),w.on("message",(v)=>{if(F.readyState===KX.OPEN)F.send(v)}),F.on("close",()=>w.close()),F.on("error",()=>w.close()),w.on("close",(v,R)=>{if(F.readyState===KX.OPEN)F.close(v>=1000&&v<=4999?v:1000,R.toString())}),w.on("error",()=>F.close(1011,"upstream error"))}),!0}}function pZ(X){if(!X)return null;let W=X.indexOf("/");if(W<=0)return null;return X.slice(0,W)}function zX(X){let W=[...X.models];if(X.adapterId!=="opencode"||W.length===0)return W;let Z=pZ(X.currentModelId)??(W.some((J)=>J.id.startsWith("opencode/"))?"opencode":null);if(!Z)return W;let K=W.filter((J)=>J.id===X.currentModelId||J.id.startsWith(`${Z}/`));return K.length>0?K:W}import{Readable as j5,Writable as H5}from"node:stream";import{ClientSideConnection as W3,ndJsonStream as Z3}from"@agentclientprotocol/sdk";import R0 from"node:fs/promises";import W0 from"node:path";class L1 extends Error{constructor(X){super(X);this.name="PathTraversalError"}}class H2 extends Error{constructor(X){super(X);this.name="HiddenPathError"}}class w2 extends Error{constructor(X){super(X);this.name="RunFolderFileTooLargeError"}}class B1 extends Error{constructor(X){super(X);this.name="RunFolderBinaryFileError"}}var rZ=new Set([".bzr",".cache",".claude",".config",".env",".git",".hg",".idea",".obsidian",".svn",".vscode","node_modules"]),i4=1e6,sZ=4096,oZ=new TextDecoder("utf-8",{fatal:!0});function nZ(X){return X.split(/[\\/]+/).filter((W)=>W.length>0)}function jX(X){if(W0.isAbsolute(X))throw new L1("Absolute paths are not allowed");for(let W of nZ(X)){if(W===".")continue;if(W==="..")throw new L1("Parent-directory traversal is not allowed");if(W.startsWith(".")||rZ.has(W))throw new H2(`Path segment "${W}" is hidden or configuration data`)}}function tZ(X){jX(X);let W=W0.normalize(X||".");return W==="."?"":W}function eZ(X,W,Z){let K=W0.relative(X,W);if(K===".."||K.startsWith(`..${W0.sep}`)||W0.isAbsolute(K))throw new L1(`Path "${Z}" resolves outside the run folder`);if(K.length>0)jX(K);return K}async function j2(X,W){jX(W);let Z=W0.resolve(X,W||"."),K;try{K=await R0.realpath(Z)}catch(J){if(J.code!=="ENOENT")throw J;let V=W0.dirname(Z),H=[W0.basename(Z)];while(V!==X&&V!==W0.dirname(V))try{V=await R0.realpath(V);break}catch(U){if(U.code!=="ENOENT")throw U;H.unshift(W0.basename(V)),V=W0.dirname(V)}K=W0.join(V,...H)}return eZ(X,K,W),K}async function X5(X,W){let Z=await R0.realpath(X);return j2(Z,W)}function W5(X){let W=X.subarray(0,Math.min(X.length,sZ));if(W.length===0)return!1;let Z=0;for(let K of W){if(K===0)return!0;let J=K===9||K===10||K===12||K===13;if(K<32&&!J)Z+=1}return Z/W.length>0.3}async function HX(X,W){let Z=await X5(X,W),K=await R0.stat(Z);if(!K.isFile())throw new B1(`Path "${W}" is not a text file`);if(K.size>i4)throw new w2(`File "${W}" is too large to read (${K.size} bytes, max ${i4} bytes)`);let J=await R0.readFile(Z);if(W5(J))throw new B1(`File "${W}" appears to be binary, not text`);try{return oZ.decode(J)}catch{throw new B1(`File "${W}" is not valid UTF-8 text`)}}function Z5(X){if(X.isDirectory())return"directory";if(X.isFile())return"file";if(X.isSymbolicLink())return"symlink";return"other"}function d4(X){return X.split(W0.sep).join("/")}async function p4(X,W=""){let Z=await R0.realpath(X),K=tZ(W),J=await j2(Z,K),V=await R0.readdir(J,{withFileTypes:!0}),H=[];for(let U of V){let F=K?W0.join(K,U.name):U.name;try{jX(F);let w=await j2(Z,F),B=await R0.stat(w);H.push({name:U.name,path:d4(F),type:Z5(U),size:U.isFile()?B.size:null})}catch{}}return H.sort((U,F)=>{if(U.type==="directory"&&F.type!=="directory")return-1;if(U.type!=="directory"&&F.type==="directory")return 1;return U.name.localeCompare(F.name)}),{path:d4(K),absolutePath:J,entries:H}}var U2={fs:{readTextFile:!0,writeTextFile:!1},terminal:!1};function r4(X){return{readTextFile:async(W)=>{return{content:await HX(X,W.path)}}}}import{spawn as Q5}from"node:child_process";function F2(X){let W=Q5(X.command,X.args,{cwd:X.cwd,env:X.env,stdio:["pipe","pipe","pipe"],...E1(X.command)});if(!W.stdin||!W.stdout||!W.stderr)throw Error("Failed to allocate stdio streams for ACP subprocess");let{stdin:Z,stdout:K,stderr:J}=W,V=4096,H=[],U=0;J.on("data",(h)=>{H.push(h),U+=h.length;while(U>V*2&&H.length>1){let C=H.shift();if(C)U-=C.length}});let F=()=>{let h=Buffer.concat(H).toString("utf8");return h.length>V?h.slice(-V):h},w=!1,B=!1,v,R,O=new Promise((h)=>{v=h}),b=new Promise((h)=>{R=h}),f=(h)=>{if(B)return;if(B=!0,v(h),!w)R(h)};return W.on("exit",(h,C)=>{f({code:h,signal:C,stderr:F()})}),W.on("error",(h)=>{let C=F(),g=h?.message??String(h);f({code:null,signal:null,stderr:C?`${g}
|
|
1047
|
-
${C}`:g})}),{stdin:Z,stdout:K,stderr:J,kill:(h="SIGTERM")=>{if(w)return;w=!0;try{W.kill(h)}catch{}},waitForExit:
|
|
1046
|
+
</html>`}class YX{sessions=new Map;profiles=new Map;socketServer=new IZ({noServer:!0});sweepTimer;port=null;constructor(){this.sweepTimer=setInterval(()=>this.sweep(),60000),this.sweepTimer.unref?.()}setPort(X){this.port=X}profileForOrigin(X){let W=this.profiles.get(X);if(W)return W;let Z={frontendOrigin:X,wrapperHost:`iw-browser-${cZ(X)}`,cookies:new Map};return this.profiles.set(X,Z),Z}wrapperOrigin(X){if(!this.port)throw Error("Browser kit is not ready");return`http://${X.profile.wrapperHost}.localhost:${this.port}`}sessionPath(X){return`${VX}${encodeURIComponent(X.id)}`}proxyPathPrefix(X){return`${this.sessionPath(X)}/proxy/`}proxyUrlPrefix(X){return`${this.wrapperOrigin(X)}${this.proxyPathPrefix(X)}`}result(X){let W=this.wrapperOrigin(X),Z=this.sessionPath(X);return{proxySessionId:X.id,wrapperUrl:`${W}${Z}/wrapper`,bridgeToken:X.bridgeToken,navigateUrlPrefix:`${W}${Z}/navigate?url=`}}async handleRpc(X,W,Z){if(Z.method==="open_proxy_session"){let K=Z.params;if(typeof K.browserNodeId!=="string"||typeof K.url!=="string")throw Error("Browser proxy session input is invalid");let J=i0(K.url),Y=AZ(W),H=this.profileForOrigin(Y),U=[...this.sessions.values()].find((w)=>w.frontendOrigin===Y&&w.browserNodeId===K.browserNodeId);if(U)return U.frontendSessionIds.add(X),U.currentUrl=J,U.lastUsedAt=Date.now(),this.result(U);let F={id:T4(),frontendSessionIds:new Set([X]),frontendOrigin:Y,browserNodeId:K.browserNodeId,profile:H,bridgeToken:uZ(24).toString("base64url"),currentUrl:J,lastUsedAt:Date.now()};return this.sessions.set(F.id,F),this.result(F)}if(Z.method==="close_proxy_session"){let K=Z.params;if(typeof K.proxySessionId!=="string")throw Error("Browser proxy session input is invalid");let J=this.sessions.get(K.proxySessionId);if(J&&!J.frontendSessionIds.has(X))throw Error("Browser proxy session belongs to another frontend session");if(J)J.frontendSessionIds.delete(X),J.lastUsedAt=Date.now();return{closed:!0}}if(Z.method==="build_snapshot"){let K=Z.params;if(typeof K.proxySessionId!=="string"||typeof K.revision!=="string"||K.revision.length===0||K.revision.length>200||typeof K.html!=="string"||typeof K.sourceUrl!=="string"||K.title!==void 0&&typeof K.title!=="string"||K.scrollX!==void 0&&(typeof K.scrollX!=="number"||!Number.isFinite(K.scrollX))||K.scrollY!==void 0&&(typeof K.scrollY!=="number"||!Number.isFinite(K.scrollY)))throw Error("Browser snapshot input is invalid");let J=this.sessions.get(K.proxySessionId);if(!J||!J.frontendSessionIds.has(X))throw Error("Browser proxy session is unavailable");return J.lastUsedAt=Date.now(),this.buildSnapshot(J,{revision:K.revision,html:K.html,sourceUrl:i0(K.sourceUrl),title:K.title??"",scrollX:K.scrollX??0,scrollY:K.scrollY??0})}throw Error("Unsupported browser-kit RPC operation")}closeFrontendSession(X){for(let W of this.sessions.values())if(W.frontendSessionIds.delete(X))W.lastUsedAt=Date.now()}async close(){clearInterval(this.sweepTimer),this.sessions.clear(),this.profiles.clear(),this.socketServer.close()}sweep(){let X=Date.now()-SZ;for(let W of this.sessions.values())if(W.frontendSessionIds.size===0&&W.lastUsedAt<X)this.sessions.delete(W.id)}profileForRequest(X){let W=TZ(X.headers.host);return[...this.profiles.values()].find((Z)=>W===`${Z.wrapperHost}.localhost`)??null}escapedSessionForProfile(X){let W=[...this.sessions.values()].filter((K)=>K.profile===X),Z=W.filter((K)=>K.frontendSessionIds.size>0);if(Z.length===1)return Z[0]??null;if(Z.length===0&&W.length===1)return W[0]??null;return null}storeCookies(X,W,Z){for(let K of W){let[J="",...Y]=K.split(";"),H=J.indexOf("=");if(H<0)continue;let U=J.slice(0,H).trim(),F=J.slice(H+1).trim(),w=Z.toLowerCase();for(let b of Y){let R=b.indexOf("="),f=(R<0?b:b.slice(0,R)).trim().toLowerCase(),v=R<0?"":b.slice(R+1).trim();if(f==="domain"&&v)w=v.replace(/^\./,"").toLowerCase()}if(!X.cookies.has(w))X.cookies.set(w,new Map);let B=X.cookies.get(w);if(!B)continue;if(F===""||/(^|;)\s*max-age=0/i.test(K))B.delete(U);else B.set(U,F)}}storeClientCookies(X,W){if(!W)return;for(let Z of W.split(";")){let K=Z.trim(),J=K.indexOf("=");if(J<1)continue;let Y=K.slice(0,J);if(!Y.startsWith(A4))continue;let H=Y.slice(A4.length).split(".");if(H.length!==2)continue;try{let U=Buffer.from(H[0]??"","base64url").toString(),F=Buffer.from(H[1]??"","base64url").toString(),w=JSON.parse(decodeURIComponent(K.slice(J+1))),B=new URL(U).hostname.toLowerCase();if(!F||w.name!==F||typeof w.value!=="string")continue;if(!X.cookies.has(B))X.cookies.set(B,new Map);let b=X.cookies.get(B);if(!b)continue;if(w.deleted===!0)b.delete(F);else b.set(F,w.value)}catch{}}}cookieHeader(X,W){let Z=W.toLowerCase(),K=[];for(let[J,Y]of X.cookies)if(Z===J||Z.endsWith(`.${J}`))for(let[H,U]of Y)K.push(`${H}=${U}`);return K.join("; ")}snapshotTarget(X,W,Z){let K=W.trim();if(!K||/^(?:data|blob|mailto|tel|javascript):/i.test(K))return null;try{let J=new URL(K,this.wrapperOrigin(X));if(J.origin===this.wrapperOrigin(X)&&J.pathname.startsWith(this.proxyPathPrefix(X)))return i0(J.pathname.slice(this.proxyPathPrefix(X).length)+J.search+J.hash);return i0(new URL(K,Z).href)}catch{return null}}async fetchSnapshotResource(X,W,Z){let K=i0(W),J=Z.resources.get(K);if(J)return J;let Y=(async()=>{let H=K,U=null;for(let w=0;;w+=1){let B=new URL(H),b=new Headers({accept:"*/*",referer:`${B.origin}/`}),R=this.cookieHeader(X.profile,B.hostname);if(R)b.set("cookie",R);U=await fetch(H,{method:"GET",headers:b,redirect:"manual"});let f=U.headers.getSetCookie,v=typeof f==="function"?f.call(U.headers):[];if(v.length>0)this.storeCookies(X.profile,v,B.hostname);let O=U.headers.get("location");if(U.status>=300&&U.status<400&&O&&w<15){H=new URL(O,H).href;continue}break}if(!U?.ok)throw Error(`Snapshot resource returned ${U?.status??502}`);let F=Buffer.from(await U.arrayBuffer());if(F.byteLength>lZ)throw Error("Snapshot resource exceeds the 5 MiB limit");if(Z.totalBytes+F.byteLength>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");return Z.totalBytes+=F.byteLength,{url:H,headers:U.headers,body:F}})();return Z.resources.set(K,Y),Y}async inlineSnapshotCss(X,W,Z,K){try{let J=E0.parse(W,{context:"stylesheet",parseCustomProperty:!0,positions:!1}),Y=new Set;E0.walk(J,(U)=>{if(U.type!=="Url")return;let F=this.snapshotTarget(X,U.value,Z);if(F)Y.add(F)});let H=new Map;return await Promise.all([...Y].map(async(U)=>{try{let F=await this.fetchSnapshotResource(X,U,K),w=a4(F);if(!w)return;K.inlinedUrls.add(F.url),H.set(U,w)}catch{}})),E0.walk(J,{enter:(U,F,w)=>{if(U.type==="Atrule"&&U.name.toLowerCase()==="import"){w.remove(F);return}if(U.type!=="Url")return;let B=this.snapshotTarget(X,U.value,Z);U.value=B?H.get(B)??"data:,":"data:,"}}),E0.generate(J)}catch{return""}}async inlineSnapshotTree(X,W,Z,K){let J=[];for(let Y of W.childNodes){if(c4(Y)){let H=Y.tagName.toLowerCase();if(H==="link"&&(JX(Y,"rel")??"").toLowerCase().split(/\s+/).includes("stylesheet")){let F=JX(Y,"href"),w=F?this.snapshotTarget(X,F,Z):null;if(!w)continue;try{let B=await this.fetchSnapshotResource(X,w,K);if(i4(B.headers)!=="text/css")continue;Y.tagName="style",Y.nodeName="style",Y.attrs=Y.attrs.filter((b)=>b.name.toLowerCase()==="media"),Y.childNodes=[{nodeName:"#text",value:await this.inlineSnapshotCss(X,B.body.toString("utf8"),B.url,K),parentNode:Y}],K.inlinedUrls.add(B.url)}catch{continue}}else if(H==="style"){for(let F of Y.childNodes)if("value"in F&&typeof F.value==="string")F.value=await this.inlineSnapshotCss(X,F.value,Z,K)}let U=JX(Y,"style");if(U!==null){let F=await this.inlineSnapshotCss(X,`x{${U}}`,Z,K);q1(Y,"style",F.replace(/^x\{/,"").replace(/\}$/,""))}if(H==="img"){let F=JX(Y,"src"),w=F?this.snapshotTarget(X,F,Z):null;if(w)try{let B=await this.fetchSnapshotResource(X,w,K),b=a4(B);if(q1(Y,"src",b??"data:,"),b)K.inlinedUrls.add(B.url)}catch{q1(Y,"src","data:,")}}await this.inlineSnapshotTree(X,Y,Z,K)}J.push(Y)}W.childNodes=J}setSnapshotScroll(X,W,Z){for(let K of X.childNodes){if(!c4(K))continue;if(K.tagName.toLowerCase()==="html")return q1(K,"data-ideawave-scroll-x",String(W)),q1(K,"data-ideawave-scroll-y",String(Z)),!0;if(this.setSnapshotScroll(K,W,Z))return!0}return!1}async buildSnapshot(X,W){let Z=Buffer.byteLength(W.html,"utf8");if(Z>F1)throw Error("Browser snapshot exceeds the 20 MiB limit");let K=ZX(W.html),J={resources:new Map,inlinedUrls:new Set,totalBytes:Z};this.setSnapshotScroll(K,W.scrollX,W.scrollY),await this.inlineSnapshotTree(X,K,W.sourceUrl,J);let Y=U1(K),H=I4(Y),U=W.title.trim().slice(0,500)||Y.match(/<title[^>]*>([^<]*)<\/title>/i)?.[1]?.trim()||"";return{html:H,sourceUrl:W.sourceUrl,title:U,revision:W.revision,byteLength:Buffer.byteLength(H,"utf8"),resourceCount:J.inlinedUrls.size,createdAt:new Date().toISOString()}}async proxy(X,W,Z,K){let J=K.pathname.slice(this.proxyPathPrefix(Z).length)+K.search+K.hash;if(!/^https?:\/\//i.test(J)){W.writeHead(400,{"content-type":"text/plain"}),W.end(`Bad proxy target: ${J}`);return}let Y=await iZ(X),H=X.method??"GET",U=J,F=Y,w=null;this.storeClientCookies(Z.profile,X.headers.cookie);for(let O=0;;O+=1){let h=new URL(U),C=aZ(X);for(let P of["host","connection","origin","referer","cookie","accept-encoding"])C.delete(P);let g=this.cookieHeader(Z.profile,h.hostname);if(g)C.set("cookie",g);C.set("referer",`${h.origin}/`);let N={method:H,headers:C,redirect:"manual",...H!=="GET"&&H!=="HEAD"&&F?{body:F,duplex:"half"}:{}};try{w=await fetch(U,N)}catch(P){W.writeHead(502,{"content-type":"text/plain"}),W.end(`Proxy fetch error for ${U}: ${P instanceof Error?P.message:String(P)}`);return}let m=w.headers.getSetCookie,u=typeof m==="function"?m.call(w.headers):[];if(u.length>0)this.storeCookies(Z.profile,u,h.hostname);let M=w.headers.get("location");if(w.status>=300&&w.status<400&&M&&O<15){if(U=new URL(M,U).href,w.status===303||H==="POST"&&(w.status===301||w.status===302))H="GET",F=void 0;continue}break}if(!w)throw Error("Browser proxy received no response");Z.lastUsedAt=Date.now();let B=new Headers;w.headers.forEach((O,h)=>{if(!l4.has(h.toLowerCase()))B.set(h,O)}),B.set("access-control-allow-origin","*"),B.set("access-control-allow-credentials","true");for(let O of["location","content-location"]){let h=B.get(O);if(h)B.set(O,f0(h,U,this.proxyUrlPrefix(Z)))}let b=B.get("refresh");if(b){let O=b.toLowerCase().indexOf("url=");if(O>=0)B.set("refresh",b.slice(0,O+4)+f0(b.slice(O+4).trim(),U,this.proxyUrlPrefix(Z)))}let R=B.get("link");if(R){let O=R.replace(/<([^>]+)>/g,(h,C)=>`<${f0(C,U,this.proxyUrlPrefix(Z))}>`).replace(/;\s*integrity\s*=\s*(?:"[^"]*"|'[^']*'|[^;,\s]+)/gi,"");B.set("link",O)}let f=(w.headers.get("content-type")??"").toLowerCase(),v;if(f.includes("text/html")){let O=T4();v=J2({html:await w.text(),sourceUrl:U,proxyOrigin:this.wrapperOrigin(Z),proxyUrlPrefix:this.proxyUrlPrefix(Z),bridgeToken:Z.bridgeToken,revision:O,navigateUrlPrefix:`${this.wrapperOrigin(Z)}${this.sessionPath(Z)}/navigate?url=`,sessionStorageNamespace:Z.id}),B.delete("etag"),B.delete("last-modified"),B.set("cache-control","no-store"),B.append("set-cookie",`__browser_kit_origin_${Z.id}=${encodeURIComponent(new URL(U).origin)}; Path=/; SameSite=Lax`)}else if(f.includes("text/css"))v=K2({css:await w.text(),baseUrl:U,proxyUrlPrefix:this.proxyUrlPrefix(Z)}),B.delete("etag"),B.delete("last-modified"),B.set("cache-control","no-store");else v=Buffer.from(await w.arrayBuffer());if(W.writeHead(w.status,dZ(B)),X.method==="HEAD")W.end();else W.end(v)}async handleHttpRequest(X,W){let Z=new URL(X.url??"/","http://localhost"),K=Z.pathname.startsWith("/browser-kit/"),J=this.profileForRequest(X);if(!J){if(!K)return!1;return W.writeHead(404,{"content-type":"text/plain"}),W.end("Browser-kit profile not found"),!0}if(!K){let U=this.escapedSessionForProfile(J);if(!U)return W.writeHead(409,{"content-type":"text/plain"}),W.end("Browser-kit request could not be assigned to one active card"),!0;let F=null,w=X.headers.referer;if(w)try{let b=new URL(w),R=z2(b.pathname);if(R?.sessionId===U.id&&R.route.startsWith("/proxy/"))F=new URL(R.route.slice(7)).origin}catch{}if(!F){let b=`__browser_kit_origin_${U.id}=`,R=X.headers.cookie?.split(";").map((f)=>f.trim()).find((f)=>f.startsWith(b));if(R)try{F=decodeURIComponent(R.slice(b.length))}catch{}}if(!F)F=new URL(U.currentUrl).origin;let B=`${F}${Z.pathname}${Z.search}`;return W.writeHead(307,{location:`${this.proxyUrlPrefix(U)}${B}`,"cache-control":"no-store"}),W.end(),!0}if(Z.pathname==="/browser-kit/sw.js"){if(X.method!=="GET"&&X.method!=="HEAD")return W.writeHead(405),W.end(),!0;if(W.writeHead(200,{"content-type":"text/javascript; charset=utf-8","service-worker-allowed":"/","cache-control":"no-store"}),X.method==="HEAD")W.end();else W.end(Y2());return!0}let Y=z2(Z.pathname),H=Y?this.sessions.get(Y.sessionId):void 0;if(!Y||!H||H.profile!==J)return W.writeHead(404,{"content-type":"text/plain"}),W.end("Browser-kit session not found"),!0;if(H.lastUsedAt=Date.now(),Y.route==="/wrapper"){if(X.method!=="GET"&&X.method!=="HEAD")return W.writeHead(405),W.end(),!0;let U=pZ(H,H.currentUrl);if(W.writeHead(200,{"content-type":"text/html; charset=utf-8","cache-control":"no-store","content-security-policy":`default-src 'self'; script-src 'self' 'unsafe-inline'; worker-src 'self'; style-src 'unsafe-inline'; frame-src 'self'; connect-src 'self'; frame-ancestors ${H.frontendOrigin}`,"access-control-allow-origin":H.frontendOrigin,vary:"Origin"}),X.method==="HEAD")W.end();else W.end(U);return!0}if(Y.route==="/navigate"){if(X.method!=="GET"&&X.method!=="HEAD")return W.writeHead(405),W.end(),!0;let U=Z.searchParams.get("url");if(!U)return W.writeHead(400),W.end(),!0;return H.currentUrl=i0(U),W.writeHead(307,{location:`${this.proxyUrlPrefix(H)}${H.currentUrl}`,"cache-control":"no-store"}),W.end(),!0}if(Y.route.startsWith("/proxy/"))return await this.proxy(X,W,H,Z),!0;return W.writeHead(404),W.end(),!0}handleUpgrade(X,W,Z){let K=new URL(X.url??"/","http://localhost"),J=z2(K.pathname);if(!J?.route.startsWith("/proxy/"))return!1;let Y=this.profileForRequest(X),H=this.sessions.get(J.sessionId);if(!Y||!H||H.profile!==Y)return W.destroy(),!0;let U=J.route.slice(7)+K.search+K.hash;if(!/^wss?:\/\//i.test(U))return W.destroy(),!0;return this.socketServer.handleUpgrade(X,W,Z,(F)=>{let w;try{let b=new URL(U),R={origin:b.origin},f=this.cookieHeader(H.profile,b.hostname);if(f)R.cookie=f;w=new KX(U,{headers:R})}catch{F.close(1011,"bad target");return}let B=[];w.binaryType="arraybuffer",w.on("open",()=>{for(let b of B)w.send(b);B.length=0}),F.on("message",(b)=>{if(w.readyState===KX.OPEN)w.send(b);else B.push(b)}),w.on("message",(b)=>{if(F.readyState===KX.OPEN)F.send(b)}),F.on("close",()=>w.close()),F.on("error",()=>w.close()),w.on("close",(b,R)=>{if(F.readyState===KX.OPEN)F.close(b>=1000&&b<=4999?b:1000,R.toString())}),w.on("error",()=>F.close(1011,"upstream error"))}),!0}}function rZ(X){if(!X)return null;let W=X.indexOf("/");if(W<=0)return null;return X.slice(0,W)}function zX(X){let W=[...X.models];if(X.adapterId!=="opencode"||W.length===0)return W;let Z=rZ(X.currentModelId)??(W.some((J)=>J.id.startsWith("opencode/"))?"opencode":null);if(!Z)return W;let K=W.filter((J)=>J.id===X.currentModelId||J.id.startsWith(`${Z}/`));return K.length>0?K:W}import{Readable as H5,Writable as w5}from"node:stream";import{ClientSideConnection as Z3,ndJsonStream as Q3}from"@agentclientprotocol/sdk";import R0 from"node:fs/promises";import W0 from"node:path";class L1 extends Error{constructor(X){super(X);this.name="PathTraversalError"}}class H2 extends Error{constructor(X){super(X);this.name="HiddenPathError"}}class w2 extends Error{constructor(X){super(X);this.name="RunFolderFileTooLargeError"}}class B1 extends Error{constructor(X){super(X);this.name="RunFolderBinaryFileError"}}var sZ=new Set([".bzr",".cache",".claude",".config",".env",".git",".hg",".idea",".obsidian",".svn",".vscode","node_modules"]),d4=1e6,oZ=4096,nZ=new TextDecoder("utf-8",{fatal:!0});function tZ(X){return X.split(/[\\/]+/).filter((W)=>W.length>0)}function jX(X){if(W0.isAbsolute(X))throw new L1("Absolute paths are not allowed");for(let W of tZ(X)){if(W===".")continue;if(W==="..")throw new L1("Parent-directory traversal is not allowed");if(W.startsWith(".")||sZ.has(W))throw new H2(`Path segment "${W}" is hidden or configuration data`)}}function eZ(X){jX(X);let W=W0.normalize(X||".");return W==="."?"":W}function X5(X,W,Z){let K=W0.relative(X,W);if(K===".."||K.startsWith(`..${W0.sep}`)||W0.isAbsolute(K))throw new L1(`Path "${Z}" resolves outside the run folder`);if(K.length>0)jX(K);return K}async function j2(X,W){jX(W);let Z=W0.resolve(X,W||"."),K;try{K=await R0.realpath(Z)}catch(J){if(J.code!=="ENOENT")throw J;let Y=W0.dirname(Z),H=[W0.basename(Z)];while(Y!==X&&Y!==W0.dirname(Y))try{Y=await R0.realpath(Y);break}catch(U){if(U.code!=="ENOENT")throw U;H.unshift(W0.basename(Y)),Y=W0.dirname(Y)}K=W0.join(Y,...H)}return X5(X,K,W),K}async function W5(X,W){let Z=await R0.realpath(X);return j2(Z,W)}function Z5(X){let W=X.subarray(0,Math.min(X.length,oZ));if(W.length===0)return!1;let Z=0;for(let K of W){if(K===0)return!0;let J=K===9||K===10||K===12||K===13;if(K<32&&!J)Z+=1}return Z/W.length>0.3}async function HX(X,W){let Z=await W5(X,W),K=await R0.stat(Z);if(!K.isFile())throw new B1(`Path "${W}" is not a text file`);if(K.size>d4)throw new w2(`File "${W}" is too large to read (${K.size} bytes, max ${d4} bytes)`);let J=await R0.readFile(Z);if(Z5(J))throw new B1(`File "${W}" appears to be binary, not text`);try{return nZ.decode(J)}catch{throw new B1(`File "${W}" is not valid UTF-8 text`)}}function Q5(X){if(X.isDirectory())return"directory";if(X.isFile())return"file";if(X.isSymbolicLink())return"symlink";return"other"}function p4(X){return X.split(W0.sep).join("/")}async function r4(X,W=""){let Z=await R0.realpath(X),K=eZ(W),J=await j2(Z,K),Y=await R0.readdir(J,{withFileTypes:!0}),H=[];for(let U of Y){let F=K?W0.join(K,U.name):U.name;try{jX(F);let w=await j2(Z,F),B=await R0.stat(w);H.push({name:U.name,path:p4(F),type:Q5(U),size:U.isFile()?B.size:null})}catch{}}return H.sort((U,F)=>{if(U.type==="directory"&&F.type!=="directory")return-1;if(U.type!=="directory"&&F.type==="directory")return 1;return U.name.localeCompare(F.name)}),{path:p4(K),absolutePath:J,entries:H}}var U2={fs:{readTextFile:!0,writeTextFile:!1},terminal:!1};function s4(X){return{readTextFile:async(W)=>{return{content:await HX(X,W.path)}}}}import{spawn as K5}from"node:child_process";function F2(X){let W=K5(X.command,X.args,{cwd:X.cwd,env:X.env,stdio:["pipe","pipe","pipe"],...E1(X.command)});if(!W.stdin||!W.stdout||!W.stderr)throw Error("Failed to allocate stdio streams for ACP subprocess");let{stdin:Z,stdout:K,stderr:J}=W,Y=4096,H=[],U=0;J.on("data",(h)=>{H.push(h),U+=h.length;while(U>Y*2&&H.length>1){let C=H.shift();if(C)U-=C.length}});let F=()=>{let h=Buffer.concat(H).toString("utf8");return h.length>Y?h.slice(-Y):h},w=!1,B=!1,b,R,f=new Promise((h)=>{b=h}),v=new Promise((h)=>{R=h}),O=(h)=>{if(B)return;if(B=!0,b(h),!w)R(h)};return W.on("exit",(h,C)=>{O({code:h,signal:C,stderr:F()})}),W.on("error",(h)=>{let C=F(),g=h?.message??String(h);O({code:null,signal:null,stderr:C?`${g}
|
|
1047
|
+
${C}`:g})}),{stdin:Z,stdout:K,stderr:J,kill:(h="SIGTERM")=>{if(w)return;w=!0;try{W.kill(h)}catch{}},waitForExit:f,processCrashed:v}}var J5=["mcp_ideawave_board_","ideawave_board_","ideawave-board_","ideawave-board.","ideawave.board."];function V5(X){let W=X.toLowerCase();for(let Z of J5)if(W.startsWith(Z))return X.slice(Z.length);if(/^mcp[-_.]/i.test(X))return X.slice(4);return X}function wX(X){return V5(X.trim())}function q2(X){let W=wX(X);if(!W)return"Tool";if(!/[-_.]/.test(W))return W.charAt(0).toUpperCase()+W.slice(1);let Z=W.replace(/[-_.]+/g," ").replace(/\s+/g," ").trim();if(!Z)return"Tool";return Z.charAt(0).toUpperCase()+Z.slice(1)}function B2(X){let W=X?.toLowerCase();if(W==="completed"||W==="complete"||W==="done"||W==="success"||W==="succeeded")return"completed";if(W==="failed"||W==="error"||W==="errored")return"failed";return"running"}function L2(X){if(typeof X!=="string")return null;let W=X.trim();return W?W:null}function o4(X){if(typeof X!=="string")return"Tool";let W=X.trim();return W?W:"Tool"}function Y5(X,W){if(!X||typeof X!=="object"||Array.isArray(X))return null;let Z=X;for(let K of W){let J=Z[K];if(typeof J==="string"&&J.trim())return J.trim()}return null}function P2(X,W){let Z=X.trim().toLowerCase();if(Z==="skill"||Z==="workflow"||Z==="tool"||Z==="invalid"){let K=Y5(W,["skillName","workflowName","toolName","name","title"]);if(K){let J=Z==="skill"?" skill":Z==="workflow"?" workflow":"";return`${q2(K)}${J}`}}if(Z==="invalid")return"Tool call";return q2(X)}var z5=33,n4=1600;function _0(X){if(X.length<=n4)return X;return`${X.slice(0,n4-22)}
|
|
1048
1048
|
... truncated`}function FX(X){let W=X.replace(/\r\n?/g,`
|
|
1049
1049
|
`),Z=W.trim();if(Z.startsWith('"')&&Z.endsWith('"')||Z.startsWith("'")&&Z.endsWith("'"))try{let J=JSON.parse(Z);if(typeof J==="string")return J.replace(/\r\n?/g,`
|
|
1050
1050
|
`)}catch{return W}if(!W.includes("\\\""))return W;let K=W.replace(/\\r\\n/g,`
|
|
1051
1051
|
`).replace(/\\n/g,`
|
|
1052
1052
|
`).replace(/\\r/g,`
|
|
1053
|
-
`).replace(/\\t/g,"\t").replace(/\\"/g,'"');try{let J=JSON.parse(K);if(J!==null&&typeof J==="object")return K}catch{return W}return W}function P0(X){if(X===void 0||X===null)return null;if(typeof X==="string"){let W=FX(X).trim();return W?_0(W):null}if(typeof X==="number"||typeof X==="boolean"||typeof X==="bigint")return String(X);try{return _0(JSON.stringify(X,null,2))}catch{return _0(FX(String(X)))}}function
|
|
1053
|
+
`).replace(/\\t/g,"\t").replace(/\\"/g,'"');try{let J=JSON.parse(K);if(J!==null&&typeof J==="object")return K}catch{return W}return W}function P0(X){if(X===void 0||X===null)return null;if(typeof X==="string"){let W=FX(X).trim();return W?_0(W):null}if(typeof X==="number"||typeof X==="boolean"||typeof X==="bigint")return String(X);try{return _0(JSON.stringify(X,null,2))}catch{return _0(FX(String(X)))}}function j5(X){if(!X||typeof X!=="object")return null;let W=X;if(W.type==="text"&&typeof W.text==="string")return FX(W.text);if(W.type==="image")return"[image]";if(W.type==="resource")return"[resource]";if(W.type==="content"){let Z=W.content;if(Z&&typeof Z==="object"){let K=Z;if(K.type==="text"&&typeof K.text==="string")return FX(K.text);if(K.type==="image")return"[image]";if(K.type==="resource")return"[resource]"}}if(W.type==="diff")return`Diff: ${typeof W.path==="string"?W.path:"unknown file"}`;if(W.type==="terminal")return`Terminal: ${typeof W.terminalId==="string"?W.terminalId:"terminal"}`;return P0(X)}function UX(X){if(!Array.isArray(X))return null;let W=X.map(j5).filter((Z)=>Boolean(Z?.trim()));if(W.length===0)return null;return _0(W.join(`
|
|
1054
1054
|
|
|
1055
|
-
`))}function x2(X){if(!X||typeof X!=="object"||Array.isArray(X))return P0(X);let W=X,Z=UX(W.content);if(Z)return Z;for(let
|
|
1055
|
+
`))}function x2(X){if(!X||typeof X!=="object"||Array.isArray(X))return P0(X);let W=X,Z=UX(W.content);if(Z)return Z;for(let Y of["output","result","text","message"]){let H=P0(W[Y]);if(H)return H}let K=P0(W.stdout),J=P0(W.stderr);if(K||J)return _0([K?`stdout:
|
|
1056
1056
|
${K}`:null,J?`stderr:
|
|
1057
1057
|
${J}`:null].filter(Boolean).join(`
|
|
1058
1058
|
|
|
1059
|
-
`));return P0(X)}function
|
|
1059
|
+
`));return P0(X)}function t4(X,W){if(!W)return X;if(!X)return W;if(X===W||X.endsWith(W))return X;if(W.startsWith(X))return W;return _0(`${X}
|
|
1060
1060
|
|
|
1061
|
-
${W}`)}function b2(X){if(!Array.isArray(X))return null;let W=X.flatMap((Z)=>{if(!Z||typeof Z!=="object")return[];let K=Z;if(typeof K.path!=="string"||!K.path.trim())return[];let J=typeof K.line==="number"?`:${K.line}`:"";return[`${K.path}${J}`]});return W.length>0?W.slice(0,5):null}function t4(X){let{ctx:W,appendText:Z,appendToolActivity:K}=X,J=X.flushIntervalMs??V5,V="",H="",U=0,F=null,w={},B=new Map,v=(M)=>{if(B.set(M.toolCallId,M),!K)return;K({boardId:W.boardId,cardId:W.cardId,runId:W.runId,entry:M}).catch((P)=>{console.warn("[streamAdapter] appendToolActivity failed",P)})},R=(M)=>{let P=`${W.runId}:thought`,$=B.get(P);if(!$||$.status!=="running")return;v({...$,status:"completed",completedAt:$.completedAt??M})},O=(M)=>{for(let P of B.values()){if(P.status!=="running"||P.rawTitle.toLowerCase()!=="toolsearch")continue;v({...P,status:"completed",completedAt:P.completedAt??M})}},b=(M)=>{for(let P of Array.from(B.values())){if(P.status!=="running")continue;if(P.kind==="thought"||P.rawTitle==="agent_thought")continue;v({...P,status:"completed",completedAt:P.completedAt??M})}},f="",h=0,C=null,g=null,N=(M)=>{if(M===f)return;f=M,h=Date.now(),Z({boardId:W.boardId,cardId:W.cardId,runId:W.runId,text:M}).catch((P)=>{console.warn("[streamAdapter] appendText failed",P)})},m=()=>{if(C!==null)clearTimeout(C),C=null;if(g!==null){let M=g;g=null,N(M)}},u=(M)=>{let P=Date.now()-h;if(P>=J&&C===null){N(M);return}if(g=M,C===null){let $=Math.max(0,J-P);C=setTimeout(()=>{C=null,m()},$)}};return{onSessionUpdate:async(M)=>{let P=M.update;switch(w[P.sessionUpdate]=(w[P.sessionUpdate]??0)+1,P.sessionUpdate){case"agent_message_chunk":{let $=new Date().toISOString();if(R($),P.content.type==="text")V+=P.content.text,u(V);else{let E=`agent_message_chunk:${P.content.type}`;w[E]=(w[E]??0)+1}return}case"agent_thought_chunk":{if(P.content.type!=="text")return;H+=P.content.text;let $=new Date().toISOString(),E=`${W.runId}:thought`,A=B.get(E);v({toolCallId:E,rawTitle:"agent_thought",title:"Thought",kind:"thought",status:"running",startedAt:A?.startedAt??$,completedAt:null,contentPreview:_0(H.trim())});return}case"user_message_chunk":return;case"tool_call":{U+=1;let $=s4(P.title),E=B2(P.status),A=new Date().toISOString();R(A),O(A),v({toolCallId:P.toolCallId,rawTitle:$,title:P2($,P.rawInput),kind:L2(P.kind),status:E,startedAt:A,completedAt:E==="running"?null:A,inputPreview:P0(P.rawInput),outputPreview:x2(P.rawOutput),contentPreview:UX(P.content),locations:b2(P.locations)});return}case"tool_call_update":{let $=B.get(P.toolCallId);if(!$){let T=s4(P.title),X0=B2(P.status),r=new Date().toISOString();v({toolCallId:P.toolCallId,rawTitle:T,title:P2(T,P.rawInput),kind:L2(P.kind),status:X0,startedAt:r,completedAt:X0==="running"?null:r,inputPreview:P0(P.rawInput),outputPreview:x2(P.rawOutput),contentPreview:UX(P.content),locations:b2(P.locations)});return}let E=P.status===void 0||P.status===null?$.status:B2(P.status),A=typeof P.title==="string"&&P.title.trim().length>0?P.title:$.rawTitle,q0=typeof P.title==="string"&&P.title.trim().length>0,x0=E==="running"?$.completedAt:$.completedAt??new Date().toISOString(),k=P.content===void 0?$.contentPreview:n4($.contentPreview,UX(P.content)),d=P.rawOutput===void 0?$.outputPreview:n4($.outputPreview,x2(P.rawOutput));v({...$,rawTitle:A,title:q0?P2(A,P.rawInput):$.title,kind:P.kind===void 0?$.kind:L2(P.kind),status:E,completedAt:x0,inputPreview:P.rawInput===void 0?$.inputPreview:P0(P.rawInput),outputPreview:d,contentPreview:k,locations:P.locations===void 0?$.locations:b2(P.locations)});return}case"plan":F=P.entries;return;case"available_commands_update":return;case"current_mode_update":return;default:return}},getFinalText:()=>V,getToolCallCount:()=>U,getLatestPlan:()=>F,getUpdateTypeCounts:()=>({...w}),flush:(M)=>{let P=new Date().toISOString();if(R(P),M?.completeOpenToolCalls)b(P);m()}}}var P1=1,e4=-32000;function X3(X){if(X.awaitingInput)return!1;return X.nowMs-X.lastUpdateMs>=X.windowMs}function Q3(X){if(!X||typeof X!=="object")return!1;return X.code===e4}var w5=60000,U5=w5,F5=5000;function q5(X){let W=Math.max(1,Math.round(X/1000));return`Runtime has not responded for ${W} ${W===1?"second":"seconds"}. Retry the agent run.`}function K3(){return{name:"ideawave-cli",title:"IdeaWave CLI",version:"0.0.77".trim()?"0.0.77":"dev"}}function J3(X){if(X===P1)return;throw new I(`Unsupported ACP protocol version ${X}; expected ${P1}`)}function Y3(X){return j5.toWeb(X)}function V3(X){return H5.toWeb(X)}function v2(X){return X!==null&&typeof X==="object"}function B5(X){if(!Array.isArray(X))return[];let W=[];for(let Z of X){if(!v2(Z))continue;if(typeof Z.group==="string"&&Array.isArray(Z.options)){let K=typeof Z.name==="string"?Z.name:Z.group;for(let J of Z.options){if(!v2(J))continue;if(typeof J.value!=="string"||typeof J.name!=="string")continue;W.push({value:J.value,name:J.name,description:typeof J.description==="string"?J.description:null,group:Z.group,groupName:K})}continue}if(typeof Z.value!=="string"||typeof Z.name!=="string")continue;W.push({value:Z.value,name:Z.name,description:typeof Z.description==="string"?Z.description:null,group:null,groupName:null})}return W}function L5(X){if(!v2(X))return null;if(typeof X.id!=="string"||typeof X.name!=="string")return null;let W=typeof X.category==="string"?X.category:null,Z=typeof X.description==="string"?X.description:null;if(X.type==="select"){let K=typeof X.currentValue==="string"?X.currentValue:null;return{id:X.id,name:X.name,category:W,description:Z,type:"select",currentValue:K,options:B5(X.options)}}if(X.type==="boolean"){let K=typeof X.currentValue==="boolean"?X.currentValue:typeof X.value==="boolean"?X.value:null;return{id:X.id,name:X.name,category:W,description:Z,type:"boolean",currentValue:K,options:[]}}return null}function y2(X){let W=(X.configOptions??[]).map(L5).filter((U)=>U!==null),Z=W.find((U)=>U.type==="select"&&U.category==="model")??W.find((U)=>U.type==="select"&&U.id==="model")??null,K=Z?.options.map((U)=>({id:U.value,name:U.name,description:U.description??null})),J=P5(X.models),V=K&&K.length>0?K:J&&J.length>0?J:null,H=(typeof Z?.currentValue==="string"?Z.currentValue:null)??x5(X.models)??null;return{models:V,currentModelId:H,configOptions:W,modelConfigId:Z?.id??null}}function P5(X){if(!X||!Array.isArray(X.availableModels))return null;let W=[];for(let Z of X.availableModels){if(typeof Z.modelId!=="string")continue;W.push({id:Z.modelId,name:typeof Z.name==="string"?Z.name:null,description:typeof Z.description==="string"?Z.description:null})}return W.length>0?W:null}function x5(X){return typeof X?.currentModelId==="string"?X.currentModelId:null}function b5(X,W){let Z=[];if(X.trim())Z.push({type:"text",text:X});for(let K of W)if(K.content.trim())Z.push({type:"text",text:K.content});return Z}function v5(X){if(typeof X.value==="boolean")return{sessionId:X.sessionId,configId:X.configId,type:"boolean",value:X.value};return{sessionId:X.sessionId,configId:X.configId,value:X.value}}function y5(X,W){let Z=y2({configOptions:W.configOptions});return{models:Z.models??X.models,currentModelId:Z.currentModelId??X.currentModelId,configOptions:Z.configOptions,modelConfigId:Z.modelConfigId??X.modelConfigId}}function z3(X,W){if(X==="default")return null;if(!W||W.length===0)return X;let Z=W.find((w)=>w.id===X);if(Z)return Z.id;let K=X.toLowerCase(),J=K.includes("opus")?"opus":K.includes("sonnet")?"sonnet":K.includes("haiku")?"haiku":null;if(!J)return X;let V=(w)=>`${w.id} ${w.name??""} ${w.description??""}`.toLowerCase(),H=W.filter((w)=>V(w).includes(J));if(H.length===0)return X;let F=(K.includes("1m")?H.find((w)=>V(w).includes("1m")):void 0)??H[0];return F?F.id:X}async function qX(X){try{let W=await X.conn.setSessionConfigOption(v5({sessionId:X.sessionId,configId:X.configId,value:X.value}));return y5(X.metadata,W)}catch(W){return console.warn(`[acp] setSessionConfigOption(${X.label}) failed; using agent default.`,W instanceof Error?W.message:W),X.metadata}}async function O2(X){let W=F2(X.spawn),Z=[],K=0,J=4096;W.stderr.on("data",(k)=>{Z.push(k),K+=k.length;while(K>J*2&&Z.length>1){let d=Z.shift();if(d)K-=d.length}});let V=()=>{let k=Buffer.concat(Z).toString("utf8");return k.length>J?k.slice(-J):k},H=r4(X.spawn.cwd),U={current:null},F={current:null},w={at:Date.now()},B=null,v=V3(W.stdin),R=Y3(W.stdout),O=Z3(v,R),f=new W3((k)=>({requestPermission:async(d)=>{let T=d.options,X0=T?.find((r)=>r.kind==="allow_once")??T?.find((r)=>r.kind==="allow_always");if(X0)return{outcome:{outcome:"selected",optionId:X0.optionId}};return{outcome:{outcome:"cancelled"}}},sessionUpdate:async(d)=>{w.at=Date.now();let T=F.current;if(T){let r=d.update.sessionUpdate;if(T.updateCount+=1,T.updateCount===1||T.lastUpdateType!==r||r==="tool_call"||r==="tool_call_update")G("acp.session_update",{runId:T.runId,cardId:T.cardId,sessionId:B,updateType:r,updateCount:T.updateCount,elapsedMs:Date.now()-T.startedAt});T.lastUpdateType=r}let X0=U.current;if(X0)await X0.onSessionUpdate(d)},readTextFile:H.readTextFile}),O),h=()=>W.kill();if(X.signal)X.signal.addEventListener("abort",h);let C=()=>{if(X.signal)X.signal.removeEventListener("abort",h)},g=async(k,d)=>{if(C(),W.kill(),Q3(k))throw new l0(k.message??"Authentication required",d);if(k instanceof Error&&k.message==="ACP connection closed"){if(X.signal?.aborted)throw new I("ACP session cancelled: abort signal received");let T=await Promise.race([W.processCrashed,W.waitForExit,new Promise((X0)=>setTimeout(()=>X0({stderr:""}),500))]);throw new I(`Runtime process exited before completion: ${T.stderr?.trim()??""}`)}throw k},N;try{N=await f.initialize({protocolVersion:P1,clientCapabilities:U2,clientInfo:K3()})}catch(k){throw await g(k,[]),Error("unreachable")}try{J3(N.protocolVersion)}catch(k){throw C(),W.kill(),k}let m=N.authMethods?.map((k)=>k.id)??[],u;try{u=await f.newSession({cwd:X.spawn.cwd,mcpServers:X.mcpServers??[]})}catch(k){throw await g(k,m),Error("unreachable")}let M=u.sessionId;B=M;let P=y2(u),$=X.modelId??null,E=$?z3($,P.models):null;if(E&&E!==P.currentModelId)if(P.modelConfigId)P=await qX({conn:f,sessionId:M,configId:P.modelConfigId,value:E,metadata:P,label:`${P.modelConfigId}=${E}`});else console.warn(`[acp] runtime did not advertise a model config option for ${E}; using agent default.`);for(let[k,d]of Object.entries(X.configValues??{}).sort(([T],[X0])=>T.localeCompare(X0))){if(k===P.modelConfigId)continue;if(!P.configOptions.some((T)=>T.id===k))continue;P=await qX({conn:f,sessionId:M,configId:k,value:d,metadata:P,label:`${k}=${String(d)}`})}C();let A=!1,q0=async()=>{if(A)return;A=!0,W.kill(),await Promise.race([W.waitForExit,new Promise((k)=>setTimeout(k,2000))])},x0=!1;return W.processCrashed.then(()=>{x0=!0}),{sessionId:M,availableModels:P.models,currentModelId:P.currentModelId,availableConfigOptions:P.configOptions,isAlive:()=>!A&&!x0,dispose:q0,prompt:(k)=>O5({proc:W,conn:f,sessionId:M,activeAdapter:U,activeTrace:F,lastUpdate:w,collectStderrTail:V},k)}}async function O5(X,W){let{proc:Z,conn:K,sessionId:J,activeAdapter:V,activeTrace:H,lastUpdate:U}=X,F=Date.now(),w=W.heartbeatMs??U5,B=q5(w),v={boardId:W.boardId,cardId:W.cardId,runId:W.runId},R=t4({ctx:v,appendText:W.appendText,appendToolActivity:W.appendToolActivity});V.current=R,H.current={runId:W.runId,cardId:W.cardId,startedAt:F,updateCount:0,lastUpdateType:null},U.at=Date.now(),G("acp.prompt_started",{runId:W.runId,cardId:W.cardId,sessionId:J,heartbeatWindowMs:w});let O=!1,b=null,f=()=>Z.kill();W.signal.addEventListener("abort",f);try{let h=async()=>{let m=Math.min(F5,Math.max(50,Math.floor(w/2)));b=setInterval(()=>{let M=W.isAwaitingInput?.()??!1;if(M){U.at=Date.now();return}if(X3({nowMs:Date.now(),lastUpdateMs:U.at,windowMs:w,awaitingInput:M}))O=!0,G("acp.inactivity_timeout",{runId:W.runId,cardId:W.cardId,sessionId:J,windowMs:w,silentForMs:Date.now()-U.at}),K.cancel({sessionId:J}).catch(()=>{return}),Z.kill()},m);let u=b5(W.prompt.systemPrompt,W.prompt.messages);await K.prompt({sessionId:J,prompt:u}),G("acp.prompt_resolved",{runId:W.runId,cardId:W.cardId,sessionId:J,elapsedMs:Date.now()-F}),R.flush({completeOpenToolCalls:!0})},C=Z.waitForExit.then((m)=>({kind:"exited",exit:m})),g=h().then(()=>({kind:"ok"})).catch(async(m)=>{if(m instanceof Error&&m.message==="ACP connection closed")return{kind:"crashed",exit:await Promise.race([Z.processCrashed,Z.waitForExit])};throw m}),N;try{N=await Promise.race([g,Z.processCrashed.then((m)=>({kind:"crashed",exit:m})),C])}catch(m){if(O)throw new H0(B);throw m}if(O)throw new H0(B);if(N.kind==="crashed")throw new I(`Runtime process exited before completion: ${N.exit.stderr.trim()}`);if(N.kind==="exited"){if(W.signal.aborted)throw new I("ACP session cancelled: abort signal received");if(O)throw new H0(B);throw new I(`Runtime process exited unexpectedly: ${N.exit.stderr.trim()}`)}return{modelReported:"unknown",finalText:R.getFinalText(),toolCallsExecuted:R.getToolCallCount(),stderrTail:X.collectStderrTail(),updateTypeCounts:R.getUpdateTypeCounts()}}finally{if(G("acp.prompt_finished",{runId:W.runId,cardId:W.cardId,sessionId:J,elapsedMs:Date.now()-F,timedOut:O,updateCount:H.current?.updateCount??0}),b!==null)clearInterval(b);W.signal.removeEventListener("abort",f),R.flush({completeOpenToolCalls:!0}),V.current=null,H.current=null}}var R5=30000;async function j3(X){let W=F2(X.spawn),Z=V3(W.stdin),K=Y3(W.stdout),J=Z3(Z,K),H=new W3((w)=>({requestPermission:async()=>({outcome:{outcome:"cancelled"}}),sessionUpdate:async()=>{return},readTextFile:async()=>({content:""})}),J),U=()=>W.kill();if(X.signal)X.signal.addEventListener("abort",U);let F=null;try{let w=(async()=>{let v=await H.initialize({protocolVersion:P1,clientCapabilities:U2,clientInfo:K3()});J3(v.protocolVersion);let R=v.authMethods?.map((N)=>N.id)??[],O;try{O=await H.newSession({cwd:X.spawn.cwd,mcpServers:[]})}catch(N){if(Q3(N))throw new l0(N.message??"Authentication required",R);throw N}let b=y2(O),f=X.modelId??null,h=f?z3(f,b.models):null;if(h&&h!==b.currentModelId)if(b.modelConfigId)b=await qX({conn:H,sessionId:O.sessionId,configId:b.modelConfigId,value:h,metadata:b,label:`${b.modelConfigId}=${h}`});else console.warn(`[acp] runtime did not advertise a model config option for ${h}; discovering agent default models.`);for(let[N,m]of Object.entries(X.configValues??{}).sort(([u],[M])=>u.localeCompare(M))){if(N===b.modelConfigId)continue;if(!b.configOptions.some((u)=>u.id===N))continue;b=await qX({conn:H,sessionId:O.sessionId,configId:N,value:m,metadata:b,label:`${N}=${String(m)}`})}let C=b.models??[],g=b.currentModelId;return H.cancel({sessionId:O.sessionId}).catch(()=>{return}),{models:C,configOptions:b.configOptions,currentModelId:g}})(),B=new Promise((v,R)=>{F=setTimeout(()=>{R(new H0)},R5)});return await Promise.race([w,B])}catch(w){if(w instanceof Error&&w.message==="ACP connection closed"){if(X.signal?.aborted)throw new I("ACP model discovery cancelled: abort signal received");throw new I("Runtime process exited during model discovery.")}throw w}finally{if(F)clearTimeout(F);if(X.signal)X.signal.removeEventListener("abort",U);W.kill()}}import f5 from"node:fs/promises";import BX from"node:os";async function H3(X){let W={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},Z;try{Z=await f5.readFile(X,"utf-8")}catch(K){if(K.code==="ENOENT")return structuredClone(W);throw K}return m1.parse(JSON.parse(Z))}function R2(X,W,Z){return{...X.defaultConfigValues??{},...W?.configValues??{},...Z?.configValues??{}}}async function f0(X){let W=X.configPath?await H3(X.configPath):await Q0(),Z=X.cardId?W.cardOverrides[X.cardId]:void 0;if(Z?.runtimeConfigId){let J=W.runtimes.find((V)=>V.id===Z.runtimeConfigId);if(J)return{entry:J,adapter:w0(J),runFolder:Z.runFolder??J.runFolder??BX.homedir(),modelId:Z.modelId??J.defaultModelId??null,configValues:R2(J,void 0,Z)}}let K=W.boardOverrides[X.boardId];if(K?.runtimeConfigId){let J=W.runtimes.find((V)=>V.id===K.runtimeConfigId);if(J)return{entry:J,adapter:w0(J),runFolder:K.runFolder??J.runFolder??BX.homedir(),modelId:K.modelId??J.defaultModelId??null,configValues:R2(J,K)}}if(W.globalDefaultConfigId){let J=W.runtimes.find((V)=>V.id===W.globalDefaultConfigId);if(J)return{entry:J,adapter:w0(J),runFolder:Z?.runFolder??K?.runFolder??J.runFolder??BX.homedir(),modelId:Z?.modelId??K?.modelId??J.defaultModelId??null,configValues:R2(J,K,Z)}}throw new D0}async function w3(X,W={}){let K=(W.configPath?await H3(W.configPath):await Q0()).runtimes.find((J)=>J.id===X);if(!K)return null;return{entry:K,adapter:w0(K),runFolder:K.runFolder??BX.homedir(),modelId:W.modelId??K.defaultModelId??null,configValues:{...K.defaultConfigValues??{},...W.configValues??{}}}}var U3=new Map;function f2(X,W){if(!X)return;U3.set(X,W)}function F3(X){if(!X)return!1;return U3.get(X)??!1}var k0=new Map,C2=new Set;function h2(X){k0.get(X)?.controller.abort()}function q3(X){for(let[W,Z]of k0){if(Z.frontendSessionId!==X)continue;Z.controller.abort(),k0.delete(W)}}function B3(){for(let X of k0.values())X.controller.abort();k0.clear()}function L3(X,W){if(W?.aborted)return!0;return X instanceof Error&&/abort signal received|session cancelled/i.test(X.message)}function P3(X,W,Z,K){if((!W.availableModels||W.availableModels.length===0)&&W.availableConfigOptions.length===0)return;V0((J)=>{let V=J.runtimes.find((H)=>H.id===X);if(V){if(W.availableModels&&W.availableModels.length>0)V.discoveredModels=zX({adapterId:Z,models:W.availableModels,currentModelId:W.currentModelId??K});if(W.availableConfigOptions.length>0)V.discoveredConfigOptions=W.availableConfigOptions}}).catch(()=>{return})}function C5(X,W){return`${X}
|
|
1061
|
+
${W}`)}function v2(X){if(!Array.isArray(X))return null;let W=X.flatMap((Z)=>{if(!Z||typeof Z!=="object")return[];let K=Z;if(typeof K.path!=="string"||!K.path.trim())return[];let J=typeof K.line==="number"?`:${K.line}`:"";return[`${K.path}${J}`]});return W.length>0?W.slice(0,5):null}function e4(X){let{ctx:W,appendText:Z,appendToolActivity:K}=X,J=X.flushIntervalMs??z5,Y="",H="",U=0,F=null,w={},B=new Map,b=(M)=>{if(B.set(M.toolCallId,M),!K)return;K({boardId:W.boardId,cardId:W.cardId,runId:W.runId,entry:M}).catch((P)=>{console.warn("[streamAdapter] appendToolActivity failed",P)})},R=(M)=>{let P=`${W.runId}:thought`,$=B.get(P);if(!$||$.status!=="running")return;b({...$,status:"completed",completedAt:$.completedAt??M})},f=(M)=>{for(let P of B.values()){if(P.status!=="running"||P.rawTitle.toLowerCase()!=="toolsearch")continue;b({...P,status:"completed",completedAt:P.completedAt??M})}},v=(M)=>{for(let P of Array.from(B.values())){if(P.status!=="running")continue;if(P.kind==="thought"||P.rawTitle==="agent_thought")continue;b({...P,status:"completed",completedAt:P.completedAt??M})}},O="",h=0,C=null,g=null,N=(M)=>{if(M===O)return;O=M,h=Date.now(),Z({boardId:W.boardId,cardId:W.cardId,runId:W.runId,text:M}).catch((P)=>{console.warn("[streamAdapter] appendText failed",P)})},m=()=>{if(C!==null)clearTimeout(C),C=null;if(g!==null){let M=g;g=null,N(M)}},u=(M)=>{let P=Date.now()-h;if(P>=J&&C===null){N(M);return}if(g=M,C===null){let $=Math.max(0,J-P);C=setTimeout(()=>{C=null,m()},$)}};return{onSessionUpdate:async(M)=>{let P=M.update;switch(w[P.sessionUpdate]=(w[P.sessionUpdate]??0)+1,P.sessionUpdate){case"agent_message_chunk":{let $=new Date().toISOString();if(R($),P.content.type==="text")Y+=P.content.text,u(Y);else{let E=`agent_message_chunk:${P.content.type}`;w[E]=(w[E]??0)+1}return}case"agent_thought_chunk":{if(P.content.type!=="text")return;H+=P.content.text;let $=new Date().toISOString(),E=`${W.runId}:thought`,A=B.get(E);b({toolCallId:E,rawTitle:"agent_thought",title:"Thought",kind:"thought",status:"running",startedAt:A?.startedAt??$,completedAt:null,contentPreview:_0(H.trim())});return}case"user_message_chunk":return;case"tool_call":{U+=1;let $=o4(P.title),E=B2(P.status),A=new Date().toISOString();R(A),f(A),b({toolCallId:P.toolCallId,rawTitle:$,title:P2($,P.rawInput),kind:L2(P.kind),status:E,startedAt:A,completedAt:E==="running"?null:A,inputPreview:P0(P.rawInput),outputPreview:x2(P.rawOutput),contentPreview:UX(P.content),locations:v2(P.locations)});return}case"tool_call_update":{let $=B.get(P.toolCallId);if(!$){let T=o4(P.title),X0=B2(P.status),r=new Date().toISOString();b({toolCallId:P.toolCallId,rawTitle:T,title:P2(T,P.rawInput),kind:L2(P.kind),status:X0,startedAt:r,completedAt:X0==="running"?null:r,inputPreview:P0(P.rawInput),outputPreview:x2(P.rawOutput),contentPreview:UX(P.content),locations:v2(P.locations)});return}let E=P.status===void 0||P.status===null?$.status:B2(P.status),A=typeof P.title==="string"&&P.title.trim().length>0?P.title:$.rawTitle,q0=typeof P.title==="string"&&P.title.trim().length>0,x0=E==="running"?$.completedAt:$.completedAt??new Date().toISOString(),k=P.content===void 0?$.contentPreview:t4($.contentPreview,UX(P.content)),d=P.rawOutput===void 0?$.outputPreview:t4($.outputPreview,x2(P.rawOutput));b({...$,rawTitle:A,title:q0?P2(A,P.rawInput):$.title,kind:P.kind===void 0?$.kind:L2(P.kind),status:E,completedAt:x0,inputPreview:P.rawInput===void 0?$.inputPreview:P0(P.rawInput),outputPreview:d,contentPreview:k,locations:P.locations===void 0?$.locations:v2(P.locations)});return}case"plan":F=P.entries;return;case"available_commands_update":return;case"current_mode_update":return;default:return}},getFinalText:()=>Y,getToolCallCount:()=>U,getLatestPlan:()=>F,getUpdateTypeCounts:()=>({...w}),flush:(M)=>{let P=new Date().toISOString();if(R(P),M?.completeOpenToolCalls)v(P);m()}}}var P1=1,X3=-32000;function W3(X){if(X.awaitingInput)return!1;return X.nowMs-X.lastUpdateMs>=X.windowMs}function K3(X){if(!X||typeof X!=="object")return!1;return X.code===X3}var U5=60000,F5=U5,q5=5000;function B5(X){let W=Math.max(1,Math.round(X/1000));return`Runtime has not responded for ${W} ${W===1?"second":"seconds"}. Retry the agent run.`}function J3(){return{name:"ideawave-cli",title:"IdeaWave CLI",version:"0.0.79".trim()?"0.0.79":"dev"}}function V3(X){if(X===P1)return;throw new I(`Unsupported ACP protocol version ${X}; expected ${P1}`)}function Y3(X){return H5.toWeb(X)}function z3(X){return w5.toWeb(X)}function b2(X){return X!==null&&typeof X==="object"}function L5(X){if(!Array.isArray(X))return[];let W=[];for(let Z of X){if(!b2(Z))continue;if(typeof Z.group==="string"&&Array.isArray(Z.options)){let K=typeof Z.name==="string"?Z.name:Z.group;for(let J of Z.options){if(!b2(J))continue;if(typeof J.value!=="string"||typeof J.name!=="string")continue;W.push({value:J.value,name:J.name,description:typeof J.description==="string"?J.description:null,group:Z.group,groupName:K})}continue}if(typeof Z.value!=="string"||typeof Z.name!=="string")continue;W.push({value:Z.value,name:Z.name,description:typeof Z.description==="string"?Z.description:null,group:null,groupName:null})}return W}function P5(X){if(!b2(X))return null;if(typeof X.id!=="string"||typeof X.name!=="string")return null;let W=typeof X.category==="string"?X.category:null,Z=typeof X.description==="string"?X.description:null;if(X.type==="select"){let K=typeof X.currentValue==="string"?X.currentValue:null;return{id:X.id,name:X.name,category:W,description:Z,type:"select",currentValue:K,options:L5(X.options)}}if(X.type==="boolean"){let K=typeof X.currentValue==="boolean"?X.currentValue:typeof X.value==="boolean"?X.value:null;return{id:X.id,name:X.name,category:W,description:Z,type:"boolean",currentValue:K,options:[]}}return null}function y2(X){let W=(X.configOptions??[]).map(P5).filter((U)=>U!==null),Z=W.find((U)=>U.type==="select"&&U.category==="model")??W.find((U)=>U.type==="select"&&U.id==="model")??null,K=Z?.options.map((U)=>({id:U.value,name:U.name,description:U.description??null})),J=x5(X.models),Y=K&&K.length>0?K:J&&J.length>0?J:null,H=(typeof Z?.currentValue==="string"?Z.currentValue:null)??v5(X.models)??null;return{models:Y,currentModelId:H,configOptions:W,modelConfigId:Z?.id??null}}function x5(X){if(!X||!Array.isArray(X.availableModels))return null;let W=[];for(let Z of X.availableModels){if(typeof Z.modelId!=="string")continue;W.push({id:Z.modelId,name:typeof Z.name==="string"?Z.name:null,description:typeof Z.description==="string"?Z.description:null})}return W.length>0?W:null}function v5(X){return typeof X?.currentModelId==="string"?X.currentModelId:null}function b5(X,W){let Z=[];if(X.trim())Z.push({type:"text",text:X});for(let K of W)if(K.content.trim())Z.push({type:"text",text:K.content});return Z}function y5(X){if(typeof X.value==="boolean")return{sessionId:X.sessionId,configId:X.configId,type:"boolean",value:X.value};return{sessionId:X.sessionId,configId:X.configId,value:X.value}}function f5(X,W){let Z=y2({configOptions:W.configOptions});return{models:Z.models??X.models,currentModelId:Z.currentModelId??X.currentModelId,configOptions:Z.configOptions,modelConfigId:Z.modelConfigId??X.modelConfigId}}function j3(X,W){if(X==="default")return null;if(!W||W.length===0)return X;let Z=W.find((w)=>w.id===X);if(Z)return Z.id;let K=X.toLowerCase(),J=K.includes("opus")?"opus":K.includes("sonnet")?"sonnet":K.includes("haiku")?"haiku":null;if(!J)return X;let Y=(w)=>`${w.id} ${w.name??""} ${w.description??""}`.toLowerCase(),H=W.filter((w)=>Y(w).includes(J));if(H.length===0)return X;let F=(K.includes("1m")?H.find((w)=>Y(w).includes("1m")):void 0)??H[0];return F?F.id:X}async function qX(X){try{let W=await X.conn.setSessionConfigOption(y5({sessionId:X.sessionId,configId:X.configId,value:X.value}));return f5(X.metadata,W)}catch(W){return console.warn(`[acp] setSessionConfigOption(${X.label}) failed; using agent default.`,W instanceof Error?W.message:W),X.metadata}}async function f2(X){let W=F2(X.spawn),Z=[],K=0,J=4096;W.stderr.on("data",(k)=>{Z.push(k),K+=k.length;while(K>J*2&&Z.length>1){let d=Z.shift();if(d)K-=d.length}});let Y=()=>{let k=Buffer.concat(Z).toString("utf8");return k.length>J?k.slice(-J):k},H=s4(X.spawn.cwd),U={current:null},F={current:null},w={at:Date.now()},B=null,b=z3(W.stdin),R=Y3(W.stdout),f=Q3(b,R),O=new Z3((k)=>({requestPermission:async(d)=>{let T=d.options,X0=T?.find((r)=>r.kind==="allow_once")??T?.find((r)=>r.kind==="allow_always");if(X0)return{outcome:{outcome:"selected",optionId:X0.optionId}};return{outcome:{outcome:"cancelled"}}},sessionUpdate:async(d)=>{w.at=Date.now();let T=F.current;if(T){let r=d.update.sessionUpdate;if(T.updateCount+=1,T.updateCount===1||T.lastUpdateType!==r||r==="tool_call"||r==="tool_call_update")G("acp.session_update",{runId:T.runId,cardId:T.cardId,sessionId:B,updateType:r,updateCount:T.updateCount,elapsedMs:Date.now()-T.startedAt});T.lastUpdateType=r}let X0=U.current;if(X0)await X0.onSessionUpdate(d)},readTextFile:H.readTextFile}),f),h=()=>W.kill();if(X.signal)X.signal.addEventListener("abort",h);let C=()=>{if(X.signal)X.signal.removeEventListener("abort",h)},g=async(k,d)=>{if(C(),W.kill(),K3(k))throw new l0(k.message??"Authentication required",d);if(k instanceof Error&&k.message==="ACP connection closed"){if(X.signal?.aborted)throw new I("ACP session cancelled: abort signal received");let T=await Promise.race([W.processCrashed,W.waitForExit,new Promise((X0)=>setTimeout(()=>X0({stderr:""}),500))]);throw new I(`Runtime process exited before completion: ${T.stderr?.trim()??""}`)}throw k},N;try{N=await O.initialize({protocolVersion:P1,clientCapabilities:U2,clientInfo:J3()})}catch(k){throw await g(k,[]),Error("unreachable")}try{V3(N.protocolVersion)}catch(k){throw C(),W.kill(),k}let m=N.authMethods?.map((k)=>k.id)??[],u;try{u=await O.newSession({cwd:X.spawn.cwd,mcpServers:X.mcpServers??[]})}catch(k){throw await g(k,m),Error("unreachable")}let M=u.sessionId;B=M;let P=y2(u),$=X.modelId??null,E=$?j3($,P.models):null;if(E&&E!==P.currentModelId)if(P.modelConfigId)P=await qX({conn:O,sessionId:M,configId:P.modelConfigId,value:E,metadata:P,label:`${P.modelConfigId}=${E}`});else console.warn(`[acp] runtime did not advertise a model config option for ${E}; using agent default.`);for(let[k,d]of Object.entries(X.configValues??{}).sort(([T],[X0])=>T.localeCompare(X0))){if(k===P.modelConfigId)continue;if(!P.configOptions.some((T)=>T.id===k))continue;P=await qX({conn:O,sessionId:M,configId:k,value:d,metadata:P,label:`${k}=${String(d)}`})}C();let A=!1,q0=async()=>{if(A)return;A=!0,W.kill(),await Promise.race([W.waitForExit,new Promise((k)=>setTimeout(k,2000))])},x0=!1;return W.processCrashed.then(()=>{x0=!0}),{sessionId:M,availableModels:P.models,currentModelId:P.currentModelId,availableConfigOptions:P.configOptions,isAlive:()=>!A&&!x0,dispose:q0,prompt:(k)=>R5({proc:W,conn:O,sessionId:M,activeAdapter:U,activeTrace:F,lastUpdate:w,collectStderrTail:Y},k)}}async function R5(X,W){let{proc:Z,conn:K,sessionId:J,activeAdapter:Y,activeTrace:H,lastUpdate:U}=X,F=Date.now(),w=W.heartbeatMs??F5,B=B5(w),b={boardId:W.boardId,cardId:W.cardId,runId:W.runId},R=e4({ctx:b,appendText:W.appendText,appendToolActivity:W.appendToolActivity});Y.current=R,H.current={runId:W.runId,cardId:W.cardId,startedAt:F,updateCount:0,lastUpdateType:null},U.at=Date.now(),G("acp.prompt_started",{runId:W.runId,cardId:W.cardId,sessionId:J,heartbeatWindowMs:w});let f=!1,v=null,O=()=>Z.kill();W.signal.addEventListener("abort",O);try{let h=async()=>{let m=Math.min(q5,Math.max(50,Math.floor(w/2)));v=setInterval(()=>{let M=W.isAwaitingInput?.()??!1;if(M){U.at=Date.now();return}if(W3({nowMs:Date.now(),lastUpdateMs:U.at,windowMs:w,awaitingInput:M}))f=!0,G("acp.inactivity_timeout",{runId:W.runId,cardId:W.cardId,sessionId:J,windowMs:w,silentForMs:Date.now()-U.at}),K.cancel({sessionId:J}).catch(()=>{return}),Z.kill()},m);let u=b5(W.prompt.systemPrompt,W.prompt.messages);await K.prompt({sessionId:J,prompt:u}),G("acp.prompt_resolved",{runId:W.runId,cardId:W.cardId,sessionId:J,elapsedMs:Date.now()-F}),R.flush({completeOpenToolCalls:!0})},C=Z.waitForExit.then((m)=>({kind:"exited",exit:m})),g=h().then(()=>({kind:"ok"})).catch(async(m)=>{if(m instanceof Error&&m.message==="ACP connection closed")return{kind:"crashed",exit:await Promise.race([Z.processCrashed,Z.waitForExit])};throw m}),N;try{N=await Promise.race([g,Z.processCrashed.then((m)=>({kind:"crashed",exit:m})),C])}catch(m){if(f)throw new H0(B);throw m}if(f)throw new H0(B);if(N.kind==="crashed")throw new I(`Runtime process exited before completion: ${N.exit.stderr.trim()}`);if(N.kind==="exited"){if(W.signal.aborted)throw new I("ACP session cancelled: abort signal received");if(f)throw new H0(B);throw new I(`Runtime process exited unexpectedly: ${N.exit.stderr.trim()}`)}return{modelReported:"unknown",finalText:R.getFinalText(),toolCallsExecuted:R.getToolCallCount(),stderrTail:X.collectStderrTail(),updateTypeCounts:R.getUpdateTypeCounts()}}finally{if(G("acp.prompt_finished",{runId:W.runId,cardId:W.cardId,sessionId:J,elapsedMs:Date.now()-F,timedOut:f,updateCount:H.current?.updateCount??0}),v!==null)clearInterval(v);W.signal.removeEventListener("abort",O),R.flush({completeOpenToolCalls:!0}),Y.current=null,H.current=null}}var O5=30000;async function H3(X){let W=F2(X.spawn),Z=z3(W.stdin),K=Y3(W.stdout),J=Q3(Z,K),H=new Z3((w)=>({requestPermission:async()=>({outcome:{outcome:"cancelled"}}),sessionUpdate:async()=>{return},readTextFile:async()=>({content:""})}),J),U=()=>W.kill();if(X.signal)X.signal.addEventListener("abort",U);let F=null;try{let w=(async()=>{let b=await H.initialize({protocolVersion:P1,clientCapabilities:U2,clientInfo:J3()});V3(b.protocolVersion);let R=b.authMethods?.map((N)=>N.id)??[],f;try{f=await H.newSession({cwd:X.spawn.cwd,mcpServers:[]})}catch(N){if(K3(N))throw new l0(N.message??"Authentication required",R);throw N}let v=y2(f),O=X.modelId??null,h=O?j3(O,v.models):null;if(h&&h!==v.currentModelId)if(v.modelConfigId)v=await qX({conn:H,sessionId:f.sessionId,configId:v.modelConfigId,value:h,metadata:v,label:`${v.modelConfigId}=${h}`});else console.warn(`[acp] runtime did not advertise a model config option for ${h}; discovering agent default models.`);for(let[N,m]of Object.entries(X.configValues??{}).sort(([u],[M])=>u.localeCompare(M))){if(N===v.modelConfigId)continue;if(!v.configOptions.some((u)=>u.id===N))continue;v=await qX({conn:H,sessionId:f.sessionId,configId:N,value:m,metadata:v,label:`${N}=${String(m)}`})}let C=v.models??[],g=v.currentModelId;return H.cancel({sessionId:f.sessionId}).catch(()=>{return}),{models:C,configOptions:v.configOptions,currentModelId:g}})(),B=new Promise((b,R)=>{F=setTimeout(()=>{R(new H0)},O5)});return await Promise.race([w,B])}catch(w){if(w instanceof Error&&w.message==="ACP connection closed"){if(X.signal?.aborted)throw new I("ACP model discovery cancelled: abort signal received");throw new I("Runtime process exited during model discovery.")}throw w}finally{if(F)clearTimeout(F);if(X.signal)X.signal.removeEventListener("abort",U);W.kill()}}import C5 from"node:fs/promises";import BX from"node:os";async function w3(X){let W={version:1,globalDefaultConfigId:null,runtimes:[],boardOverrides:{},cardOverrides:{}},Z;try{Z=await C5.readFile(X,"utf-8")}catch(K){if(K.code==="ENOENT")return structuredClone(W);throw K}return m1.parse(JSON.parse(Z))}function R2(X,W,Z){return{...X.defaultConfigValues??{},...W?.configValues??{},...Z?.configValues??{}}}async function O0(X){let W=X.configPath?await w3(X.configPath):await Q0(),Z=X.cardId?W.cardOverrides[X.cardId]:void 0;if(Z?.runtimeConfigId){let J=W.runtimes.find((Y)=>Y.id===Z.runtimeConfigId);if(J)return{entry:J,adapter:w0(J),runFolder:Z.runFolder??J.runFolder??BX.homedir(),modelId:Z.modelId??J.defaultModelId??null,configValues:R2(J,void 0,Z)}}let K=W.boardOverrides[X.boardId];if(K?.runtimeConfigId){let J=W.runtimes.find((Y)=>Y.id===K.runtimeConfigId);if(J)return{entry:J,adapter:w0(J),runFolder:K.runFolder??J.runFolder??BX.homedir(),modelId:K.modelId??J.defaultModelId??null,configValues:R2(J,K)}}if(W.globalDefaultConfigId){let J=W.runtimes.find((Y)=>Y.id===W.globalDefaultConfigId);if(J)return{entry:J,adapter:w0(J),runFolder:Z?.runFolder??K?.runFolder??J.runFolder??BX.homedir(),modelId:Z?.modelId??K?.modelId??J.defaultModelId??null,configValues:R2(J,K,Z)}}throw new D0}async function U3(X,W={}){let K=(W.configPath?await w3(W.configPath):await Q0()).runtimes.find((J)=>J.id===X);if(!K)return null;return{entry:K,adapter:w0(K),runFolder:K.runFolder??BX.homedir(),modelId:W.modelId??K.defaultModelId??null,configValues:{...K.defaultConfigValues??{},...W.configValues??{}}}}var F3=new Map;function O2(X,W){if(!X)return;F3.set(X,W)}function q3(X){if(!X)return!1;return F3.get(X)??!1}var k0=new Map,C2=new Set;function h2(X){k0.get(X)?.controller.abort()}function B3(X){for(let[W,Z]of k0){if(Z.frontendSessionId!==X)continue;Z.controller.abort(),k0.delete(W)}}function L3(){for(let X of k0.values())X.controller.abort();k0.clear()}function P3(X,W){if(W?.aborted)return!0;return X instanceof Error&&/abort signal received|session cancelled/i.test(X.message)}function x3(X,W,Z,K){if((!W.availableModels||W.availableModels.length===0)&&W.availableConfigOptions.length===0)return;Y0((J)=>{let Y=J.runtimes.find((H)=>H.id===X);if(Y){if(W.availableModels&&W.availableModels.length>0)Y.discoveredModels=zX({adapterId:Z,models:W.availableModels,currentModelId:W.currentModelId??K});if(W.availableConfigOptions.length>0)Y.discoveredConfigOptions=W.availableConfigOptions}}).catch(()=>{return})}function h5(X,W){return`${X}
|
|
1062
1062
|
|
|
1063
1063
|
Runtime run folder:
|
|
1064
1064
|
- Effective run folder: ${W}
|
|
1065
1065
|
- When the user says "my folder", "current folder", or "run folder", they mean this selected runtime folder.
|
|
1066
1066
|
- Use list_run_folder and read_run_folder_file for run-folder inspection. Do not use attached context-card tools for this unless the user asks about attached board context.
|
|
1067
|
-
- Filesystem access is read-only and limited to this folder. Hidden/config folders and outside-folder paths are unavailable.`}async function x3(X,W){let Z=Date.now(),K=new AbortController;k0.set(X.runId,{controller:K,frontendSessionId:X.frontendSessionId}),C2.add(X.cardId),G("cli.run_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let J=CX(X.userId,X.frontendSessionId,X.cardId),V=!1,H=null;try{let F=(X.runtimeConfigIdHint?await w3(X.runtimeConfigIdHint,{modelId:X.modelHint??null}):null)??await f0({boardId:X.boardId,cardId:X.cardId}),w=await F.adapter.resolveSpawnConfig(F.entry),B=X.toolSurface??"full",v=F.adapter.supportsImages===!0;H=w;let R=MX({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:B,imagesSupported:v,cardId:X.cardId,runFolder:F.runFolder}),O=R?[R]:[];f2(X.cardId,v);let b=X.modelHint??F.modelId,f=NX({adapterId:F.adapter.id,configId:F.entry.id,modelId:b,configValues:F.configValues,mcpUrl:R?.url??null,runFolder:F.runFolder,toolSurface:B});G("cli.session_acquire_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let h=await N1({key:J,frontendSessionId:X.frontendSessionId,fingerprint:f,open:()=>O2({spawn:{...w,cwd:F.runFolder},mcpServers:O,modelId:b,configValues:F.configValues,signal:K.signal})});G("cli.session_acquired",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId,elapsedMs:Date.now()-Z}),P3(F.entry.id,h,F.adapter.id,b);let C;try{let g=0,N="";G("cli.prompt_started",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-Z}),C=await h.prompt({runId:X.runId,boardId:X.boardId,cardId:X.cardId,prompt:{systemPrompt:C5(X.systemPrompt,F.runFolder),messages:X.promptMessages.map((m)=>({role:m.role,content:m.content}))},signal:K.signal,appendText:async({text:m})=>{if(g+=1,g===1)G("cli.first_partial_text_forwarded",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-Z,textLength:m.length});W({type:"partial_text",runId:X.runId,cardId:X.cardId,text:m})},appendToolActivity:async({entry:m})=>{let u=`${m.toolCallId}:${m.status}`;if(u!==N)N=u,G("cli.tool_activity_forwarded",{runId:X.runId,cardId:X.cardId,toolCallId:m.toolCallId,toolStatus:m.status,elapsedMs:Date.now()-Z});W({type:"tool_activity",runId:X.runId,cardId:X.cardId,activity:m})}})}catch(g){if(!h.isAlive()||g instanceof I||g instanceof H0)V=!0;throw g}W({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:C.finalText,model:C.modelReported??null,latencyMs:Date.now()-Z,errorText:null,partialText:null}}),G("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-Z,hasError:!1})}catch(U){let F=U instanceof Error?U.message:"Agent run failed",w=L3(U,K.signal);if(U instanceof I&&H&&!w)IX(H,F);if(!w)console.error(`[ideawave-cli] run ${X.runId} failed:`,F);W({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:"",model:null,latencyMs:Date.now()-Z,errorText:w?null:F,partialText:null,cancelled:w}}),G("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-Z,hasError:!0,errorName:U instanceof Error?U.name:"unknown"})}finally{hX(J,V),k0.delete(X.runId),C2.delete(X.cardId),G("cli.run_released",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-Z,sessionDead:V})}}async function b3(X){if(C2.has(X.cardId))return{status:"skipped"};let W=CX(X.userId,X.frontendSessionId,X.cardId),Z=null;try{let K=await f0({boardId:X.boardId,cardId:X.cardId}),J=await K.adapter.resolveSpawnConfig(K.entry);Z=J;let V=MX({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,cardId:X.cardId,runFolder:K.runFolder}),H=V?[V]:[];f2(X.cardId,K.adapter.supportsImages===!0);let U=NX({adapterId:K.adapter.id,configId:K.entry.id,modelId:K.modelId,configValues:K.configValues,mcpUrl:V?.url??null,runFolder:K.runFolder}),F=new AbortController,w=await N1({key:W,frontendSessionId:X.frontendSessionId,fingerprint:U,open:()=>O2({spawn:{...J,cwd:K.runFolder},mcpServers:H,modelId:K.modelId,configValues:K.configValues,signal:F.signal})});return P3(K.entry.id,w,K.adapter.id,K.modelId),hX(W,!1),console.log(`[ideawave-cli] warmed runtime for card ${X.cardId}`),{status:"ready"}}catch(K){if(K instanceof D0)return{status:"skipped"};let J=K instanceof Error?K.message:String(K);if(K instanceof I&&Z&&!L3(K))IX(Z,J);if(K instanceof I&&/(not ready|installing|warming|retry in a moment)/i.test(J))return{status:"retryable",error:J};return console.warn(`[ideawave-cli] warmup failed for card ${X.cardId}:`,J),{status:"failed",error:J}}}import{chromium as S5}from"playwright-core";import{spawn as h5}from"node:child_process";import{existsSync as x1,readFileSync as N5}from"node:fs";import{createRequire as v3}from"node:module";import LX from"node:os";import i from"node:path";var C0={phase:"checking"},p0=null,N2=0,M5=60000,g5=["install","--only-shell","chromium"];class b1 extends Error{constructor(){super("The lightweight screenshot engine is being installed in the background. Live browsing remains available; retry the screenshot shortly.");this.name="CaptureEngineInstallingError"}}class y3 extends Error{constructor(X){super(X?`The screenshot engine could not be installed: ${X}`:"The screenshot engine is unavailable. Retry after checking network access and disk space.");this.name="CaptureEngineUnavailableError"}}function D5(X){return X.phase==="failed"?new y3(X.error):new b1}function r0(){return{...C0}}function m5(X){let W=X.exists??x1;for(let[Z,K]of[[X.override,"explicit"],[X.managedShell,"headless-shell"],[X.system,"system-chromium"]])if(Z&&W(Z))return{path:Z,engine:K};return null}function O3(X,W){let Z=[],K=W.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??W.IDEAWAVE_CHROMIUM_PATH;if(K)Z.push(K);if(X==="win32"){let J=W.ProgramFiles??"C:\\Program Files",V=W["ProgramFiles(x86)"]??"C:\\Program Files (x86)";if(Z.push(i.win32.join(J,"Google\\Chrome\\Application\\chrome.exe"),i.win32.join(V,"Google\\Chrome\\Application\\chrome.exe")),W.LOCALAPPDATA)Z.push(i.win32.join(W.LOCALAPPDATA,"Google\\Chrome\\Application\\chrome.exe"));Z.push(i.win32.join(V,"Microsoft\\Edge\\Application\\msedge.exe"),i.win32.join(J,"Microsoft\\Edge\\Application\\msedge.exe"))}else if(X==="darwin")Z.push("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Chromium.app/Contents/MacOS/Chromium","google-chrome","chromium");else Z.push("google-chrome","google-chrome-stable","chromium","chromium-browser","msedge");return Z}function $5(X){let W=(process.env.PATH??"").split(i.delimiter),Z=process.platform==="win32"?[".exe",".cmd",".bat",""]:[""];for(let K of W){if(!K)continue;for(let J of Z){let V=i.join(K,`${X}${J}`);if(x1(V))return V}}return null}function G5(){let X=new Set([process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH,process.env.IDEAWAVE_CHROMIUM_PATH]);for(let W of O3(process.platform,process.env)){if(X.has(W))continue;if(i.isAbsolute(W)){if(x1(W))return W}else{let Z=$5(W);if(Z)return Z}}return null}function E5(){try{let X=v3(import.meta.url);return i.dirname(X.resolve("playwright-core/package.json"))}catch{return null}}function _5(X){let W=process.env.PLAYWRIGHT_BROWSERS_PATH?.trim();if(W==="0")return i.join(X,".local-browsers");if(W)return W.startsWith("~")?i.join(LX.homedir(),W.slice(1)):i.resolve(W);if(process.platform==="win32")return i.join(process.env.LOCALAPPDATA??i.join(LX.homedir(),"AppData","Local"),"ms-playwright");if(process.platform==="darwin")return i.join(LX.homedir(),"Library","Caches","ms-playwright");return i.join(LX.homedir(),".cache","ms-playwright")}function k5(){if(process.platform==="win32")return"win64";if(process.platform==="darwin")return process.arch==="arm64"?"mac-arm64":"mac-x64";return process.arch==="arm64"?"linux-arm64":"linux64"}function M2(){let X=E5();if(!X)return null;try{let Z=JSON.parse(N5(i.join(X,"browsers.json"),"utf8")).browsers?.find((U)=>U.name==="chromium-headless-shell");if(!Z?.revision)return null;let K=k5(),J=Z.revisionOverrides?.[K]??Z.revision,V=i.join(_5(X),`chromium_headless_shell-${J}`),H=process.platform==="win32"?["chrome-headless-shell-win64/chrome-headless-shell.exe","chrome-headless-shell-win32/chrome-headless-shell.exe"]:process.platform==="darwin"?[`chrome-headless-shell-${K}/chrome-headless-shell`,"chrome-headless-shell-mac-x64/chrome-headless-shell","chrome-headless-shell-mac-arm64/chrome-headless-shell"]:[`chrome-headless-shell-${K}/chrome-headless-shell`,"chrome-headless-shell-linux64/chrome-headless-shell"];for(let U of H){let F=i.join(V,...U.split("/"));if(x1(F))return F}}catch{return null}return null}function u5(){let X=process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??process.env.IDEAWAVE_CHROMIUM_PATH;return X&&x1(X)?X:null}function R3(){return m5({override:u5(),managedShell:M2(),system:G5()})}function I5(){let W=v3(import.meta.url).resolve("playwright-core/package.json"),Z=i.join(i.dirname(W),"cli.js");return new Promise((K,J)=>{let V=h5(process.execPath,[Z,...g5],{stdio:"ignore",windowsHide:!0});V.once("error",J),V.once("exit",(H)=>{if(H===0)K();else J(Error(`Playwright headless-shell installer exited with code ${H}`))})})}function g2(X){let W=M2();if(W)return C0={phase:"ready",engine:"headless-shell",executablePath:W},Promise.resolve(r0());if(p0)return p0;if(N2>0&&Date.now()-N2<M5)return Promise.resolve(r0());return C0=X?{phase:"ready",engine:X.engine,executablePath:X.path,installingManagedShell:!0}:{phase:"installing",installingManagedShell:!0},p0=(async()=>{try{await I5();let Z=M2();if(!Z)throw Error("Headless Shell finished installing but its executable was not found");C0={phase:"ready",engine:"headless-shell",executablePath:Z}}catch(Z){N2=Date.now(),C0=X?{phase:"ready",engine:X.engine,executablePath:X.path,error:Z instanceof Error?Z.message:String(Z)}:{phase:"failed",error:Z instanceof Error?Z.message:String(Z)}}finally{p0=null}return r0()})(),p0}function f3(){let X=R3();if(X?.engine==="explicit"||X?.engine==="headless-shell")return C0={phase:"ready",engine:X.engine,executablePath:X.path},Promise.resolve(r0());return g2(X)}async function C3(){let X=R3();if(X){if(C0={phase:"ready",engine:X.engine,executablePath:X.path,...X.engine==="system-chromium"&&p0?{installingManagedShell:!0}:{}},X.engine==="system-chromium")g2(X);return X.path}throw g2(null),D5(C0)}var l5=60000,T5=16,u0=null,PX=null,s0=null,D2=Promise.resolve(),xX=0,m2=0,A5=0;class bX extends Error{constructor(){super("The capture queue is busy; retry shortly.");this.name="CaptureQueueFullError"}}function $2(){if(s0)clearTimeout(s0);s0=null}async function G2(){$2();let X=u0;if(u0=null,PX=null,X)await X.close().catch(()=>{return})}function c5(X=l5){$2(),s0=setTimeout(()=>{if(s0=null,m2===0&&xX===0)G2()},X),s0.unref?.()}async function a5(){let X=await C3();if(u0?.isConnected()&&PX===X)return u0;await G2();let W=await S5.launch({headless:!0,executablePath:X,handleSIGHUP:!1,handleSIGINT:!1,handleSIGTERM:!1});return A5+=1,u0=W,PX=X,W.on("disconnected",()=>{if(u0===W)u0=null,PX=null}),W}function h3(X,W){if(xX>=T5)return Promise.reject(new bX);xX+=1;let Z,K,J=new Promise((V,H)=>{Z=V,K=H});return D2=D2.then(async()=>{xX-=1,m2+=1,$2();let V=null,H;try{V=await(await a5()).newContext(X.context);let F=await V.newPage();H={ok:!0,value:await W(F)}}catch(U){H={ok:!1,error:U}}finally{if(V)await V.close().catch(()=>{return});m2-=1,c5()}if(H.ok)Z(H.value);else K(H.error)}),J}async function N3(){await D2.catch(()=>{return}),await G2()}import{randomUUID as X7}from"node:crypto";import{createServer as W7}from"node:http";import{WebSocket as u3,WebSocketServer as Z7}from"ws";var E2="/cli-bridge",M3="/ping";function _2(X=43275,W=43277){let Z=[];for(let K=X;K<=W;K+=1)Z.push(K);return Z}function g3(X=_2(),W="127.0.0.1",Z="/cli-bridge"){return X.map((K)=>`ws://${W}:${K}${Z}`)}var i5=800;function D3({candidates:X,createWebSocket:W,timeoutMs:Z=i5,maxConcurrent:K=1,staggerMs:J=0,setTimeoutFn:V=setTimeout,clearTimeoutFn:H=clearTimeout}){return new Promise((U,F)=>{let w=0,B=!1,v=null,R=new Map,O=Math.max(1,Math.floor(K)),b=()=>{if(v===null)return;H(v),v=null},f=(M)=>{let{socket:P,listeners:$,timer:E}=M;P.removeEventListener("open",$.open),P.removeEventListener("message",$.message),P.removeEventListener("error",$.error),P.removeEventListener("close",$.close),H(E),R.delete(P)},h=(M)=>{b();for(let P of Array.from(R.values()))if(f(P),P.socket!==M)try{P.socket.close()}catch{}},C=()=>{if(B)return;if(w<X.length)return;if(R.size>0)return;if(v!==null)return;B=!0,F(Error("No IdeaWave CLI bridge is reachable"))},g=(M)=>{if(B)return;if(w>=X.length){C();return}if(R.size>=O)return;if(M<=0){b(),u();return}if(v!==null)return;v=V(()=>{v=null,u()},M)},N=()=>{if(B)return;if(R.size>=O)return;if(R.size===0||J<=0||O===1){g(0);return}g(J)},m=(M)=>{if(B)return;let P=R.get(M);if(!P)return;f(P);try{M.close()}catch{}N(),C()};function u(){if(B)return;if(R.size>=O)return;let M=X[w];if(w+=1,!M){C();return}let P;try{P=W(M)}catch{N(),C();return}let $={open:()=>{if(B||!R.has(P))return;P.send(D1({type:"bridge_probe",protocolVersion:1}))},message:(A)=>{if(B||!R.has(P))return;if(g1(String(A?.data??""))?.type!=="bridge_probe_ack")return;B=!0,h(P),U({url:M,socket:P})},error:()=>m(P),close:()=>m(P)};P.addEventListener("open",$.open),P.addEventListener("message",$.message),P.addEventListener("error",$.error),P.addEventListener("close",$.close);let E=V(()=>m(P),Z);R.set(P,{url:M,socket:P,listeners:$,timer:E}),N()}u()})}import{randomBytes as d5}from"node:crypto";import{mkdir as p5,writeFile as r5}from"node:fs/promises";import s5 from"node:os";import m3 from"node:path";var o5=30000,n5=1024;function $3(X){let W;try{W=new URL(X)}catch{return!1}if(W.protocol!=="http:"&&W.protocol!=="https:")return!1;let Z=W.hostname.toLowerCase().replace(/^\[|\]$/g,"");if(Z==="localhost"||Z==="127.0.0.1"||Z==="::1")return!0;let J=Z==="ideawave.app"||Z.endsWith(".ideawave.app");return W.protocol==="https:"&&J&&W.pathname.startsWith("/static_boards/")}async function t5(X,W){let Z=m3.join(s5.tmpdir(),"ideawave-screenshots");await p5(Z,{recursive:!0});let K=m3.join(Z,`board-${Date.now()}-${d5(4).toString("hex")}.png`);return await r5(K,X),{path:K,engine:W}}async function G3(X){let W=X.timeoutMs??o5;return h3({context:{viewport:{width:X.width,height:X.height},deviceScaleFactor:1}},async(Z)=>{Z.setDefaultTimeout(W),Z.setDefaultNavigationTimeout(W);let K=await Z.goto(X.url,{waitUntil:"networkidle",timeout:W});if(!K?.ok())throw Error(`Static board responded with HTTP ${K?.status()??"unknown"}; request a fresh one-time token before retrying`);await Z.locator('[data-ideawave-static-board-ready="true"]').waitFor({state:"attached",timeout:W}),await Z.evaluate(async()=>{if(document.fonts?.ready)await document.fonts.ready});let J=await Z.screenshot({type:"png",animations:"disabled",caret:"hide",scale:"css"});if(J.byteLength<n5)throw Error("Headless Shell returned an empty screenshot");return t5(Buffer.from(J),r0().engine??"system-chromium")})}var v1="IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS";function e5(X){return X==="1"||X?.toLowerCase()==="true"}function E3(X,W){let K=X.includes("--dev")||e5(W.IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS),J=W.APP_ENV==="development"||K;return{cliArgs:X.filter((V)=>V!=="--dev"),browserKitEnabled:!0,captureEngineEnabled:!J,allowRailwayPrPreviews:K}}var Q7=0,K7=30000,J7=15000,Y7="/screenshot",V7=65536,I3="http://127.0.0.1";async function S3(X=g3(),W=(Z)=>new u3(Z,{headers:{origin:I3}})){try{let{url:Z,socket:K}=await D3({candidates:X,createWebSocket:W});try{K.close()}catch{}return Z}catch{return null}}var z7=new Set(["https://ideawave-app-production.up.railway.app"]);function j7(X){return X==="ideawave.app"||X.endsWith(".ideawave.app")}function H7(X){return X==="1"||X?.toLowerCase()==="true"}function w7(X){return/^ideawave-app-ideawave-app-pr-\d+\.up\.railway\.app$/i.test(X)}function U7(){let X=process.env.IDEAWAVE_CLI_ALLOWED_ORIGINS;if(!X)return F7;let W=new Set;for(let Z of X.split(",")){let K=Z.trim();if(!K)continue;try{W.add(new URL(K).origin)}catch{}}return W}var F7=new Set;function k2(X){if(!X)return!1;let W;try{W=new URL(X)}catch{return!1}if(z7.has(W.origin))return!0;if(U7().has(W.origin))return!0;if(W.protocol==="https:"&&H7(process.env[v1])&&w7(W.hostname))return!0;if(W.protocol==="https:"&&j7(W.hostname))return!0;if(W.protocol!=="http:"&&W.protocol!=="https:")return!1;return W.hostname==="localhost"||W.hostname==="127.0.0.1"||W.hostname==="::1"}function o0(X,W){if(X.readyState!==u3.OPEN)return;try{X.send(D1(W))}catch{}}function q7(X){if(typeof X==="string")return X;if(Buffer.isBuffer(X))return X.toString("utf8");if(Array.isArray(X))return Buffer.concat(X).toString("utf8");return Buffer.from(X).toString("utf8")}function vX(X){if(typeof X==="string")return X;if(Array.isArray(X))return X[0]??null;return null}function _3(X,W,Z){X.write(`HTTP/1.1 ${W} ${Z}\r
|
|
1067
|
+
- Filesystem access is read-only and limited to this folder. Hidden/config folders and outside-folder paths are unavailable.`}async function v3(X,W){let Z=Date.now(),K=new AbortController;k0.set(X.runId,{controller:K,frontendSessionId:X.frontendSessionId}),C2.add(X.cardId),G("cli.run_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let J=CX(X.userId,X.frontendSessionId,X.cardId),Y=!1,H=null;try{let F=(X.runtimeConfigIdHint?await U3(X.runtimeConfigIdHint,{modelId:X.modelHint??null}):null)??await O0({boardId:X.boardId,cardId:X.cardId}),w=await F.adapter.resolveSpawnConfig(F.entry),B=X.toolSurface??"full",b=F.adapter.supportsImages===!0;H=w;let R=MX({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,toolSurface:B,imagesSupported:b,cardId:X.cardId,runFolder:F.runFolder}),f=R?[R]:[];O2(X.cardId,b);let v=X.modelHint??F.modelId,O=NX({adapterId:F.adapter.id,configId:F.entry.id,modelId:v,configValues:F.configValues,mcpUrl:R?.url??null,runFolder:F.runFolder,toolSurface:B});G("cli.session_acquire_started",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId});let h=await N1({key:J,frontendSessionId:X.frontendSessionId,fingerprint:O,open:()=>f2({spawn:{...w,cwd:F.runFolder},mcpServers:f,modelId:v,configValues:F.configValues,signal:K.signal})});G("cli.session_acquired",{runId:X.runId,cardId:X.cardId,frontendSessionId:X.frontendSessionId,elapsedMs:Date.now()-Z}),x3(F.entry.id,h,F.adapter.id,v);let C;try{let g=0,N="";G("cli.prompt_started",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-Z}),C=await h.prompt({runId:X.runId,boardId:X.boardId,cardId:X.cardId,prompt:{systemPrompt:h5(X.systemPrompt,F.runFolder),messages:X.promptMessages.map((m)=>({role:m.role,content:m.content}))},signal:K.signal,appendText:async({text:m})=>{if(g+=1,g===1)G("cli.first_partial_text_forwarded",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-Z,textLength:m.length});W({type:"partial_text",runId:X.runId,cardId:X.cardId,text:m})},appendToolActivity:async({entry:m})=>{let u=`${m.toolCallId}:${m.status}`;if(u!==N)N=u,G("cli.tool_activity_forwarded",{runId:X.runId,cardId:X.cardId,toolCallId:m.toolCallId,toolStatus:m.status,elapsedMs:Date.now()-Z});W({type:"tool_activity",runId:X.runId,cardId:X.cardId,activity:m})}})}catch(g){if(!h.isAlive()||g instanceof I||g instanceof H0)Y=!0;throw g}W({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:C.finalText,model:C.modelReported??null,latencyMs:Date.now()-Z,errorText:null,partialText:null}}),G("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-Z,hasError:!1})}catch(U){let F=U instanceof Error?U.message:"Agent run failed",w=P3(U,K.signal);if(U instanceof I&&H&&!w)IX(H,F);if(!w)console.error(`[ideawave-cli] run ${X.runId} failed:`,F);W({type:"run_settled",runId:X.runId,cardId:X.cardId,result:{assistantContent:"",model:null,latencyMs:Date.now()-Z,errorText:w?null:F,partialText:null,cancelled:w}}),G("cli.run_settled",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-Z,hasError:!0,errorName:U instanceof Error?U.name:"unknown"})}finally{hX(J,Y),k0.delete(X.runId),C2.delete(X.cardId),G("cli.run_released",{runId:X.runId,cardId:X.cardId,elapsedMs:Date.now()-Z,sessionDead:Y})}}async function b3(X){if(C2.has(X.cardId))return{status:"skipped"};let W=CX(X.userId,X.frontendSessionId,X.cardId),Z=null;try{let K=await O0({boardId:X.boardId,cardId:X.cardId}),J=await K.adapter.resolveSpawnConfig(K.entry);Z=J;let Y=MX({userId:X.userId,frontendSessionId:X.frontendSessionId,boardId:X.boardId,cardId:X.cardId,runFolder:K.runFolder}),H=Y?[Y]:[];O2(X.cardId,K.adapter.supportsImages===!0);let U=NX({adapterId:K.adapter.id,configId:K.entry.id,modelId:K.modelId,configValues:K.configValues,mcpUrl:Y?.url??null,runFolder:K.runFolder}),F=new AbortController,w=await N1({key:W,frontendSessionId:X.frontendSessionId,fingerprint:U,open:()=>f2({spawn:{...J,cwd:K.runFolder},mcpServers:H,modelId:K.modelId,configValues:K.configValues,signal:F.signal})});return x3(K.entry.id,w,K.adapter.id,K.modelId),hX(W,!1),console.log(`[ideawave-cli] warmed runtime for card ${X.cardId}`),{status:"ready"}}catch(K){if(K instanceof D0)return{status:"skipped"};let J=K instanceof Error?K.message:String(K);if(K instanceof I&&Z&&!P3(K))IX(Z,J);if(K instanceof I&&/(not ready|installing|warming|retry in a moment)/i.test(J))return{status:"retryable",error:J};return console.warn(`[ideawave-cli] warmup failed for card ${X.cardId}:`,J),{status:"failed",error:J}}}import{chromium as l5}from"playwright-core";import{spawn as N5}from"node:child_process";import{existsSync as x1,readFileSync as M5}from"node:fs";import{createRequire as y3}from"node:module";import LX from"node:os";import i from"node:path";var C0={phase:"checking"},p0=null,N2=0,g5=60000,D5=["install","--only-shell","chromium"];class v1 extends Error{constructor(){super("The lightweight screenshot engine is being installed in the background. Live browsing remains available; retry the screenshot shortly.");this.name="CaptureEngineInstallingError"}}class f3 extends Error{constructor(X){super(X?`The screenshot engine could not be installed: ${X}`:"The screenshot engine is unavailable. Retry after checking network access and disk space.");this.name="CaptureEngineUnavailableError"}}function m5(X){return X.phase==="failed"?new f3(X.error):new v1}function r0(){return{...C0}}function $5(X){let W=X.exists??x1;for(let[Z,K]of[[X.override,"explicit"],[X.managedShell,"headless-shell"],[X.system,"system-chromium"]])if(Z&&W(Z))return{path:Z,engine:K};return null}function R3(X,W){let Z=[],K=W.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??W.IDEAWAVE_CHROMIUM_PATH;if(K)Z.push(K);if(X==="win32"){let J=W.ProgramFiles??"C:\\Program Files",Y=W["ProgramFiles(x86)"]??"C:\\Program Files (x86)";if(Z.push(i.win32.join(J,"Google\\Chrome\\Application\\chrome.exe"),i.win32.join(Y,"Google\\Chrome\\Application\\chrome.exe")),W.LOCALAPPDATA)Z.push(i.win32.join(W.LOCALAPPDATA,"Google\\Chrome\\Application\\chrome.exe"));Z.push(i.win32.join(Y,"Microsoft\\Edge\\Application\\msedge.exe"),i.win32.join(J,"Microsoft\\Edge\\Application\\msedge.exe"))}else if(X==="darwin")Z.push("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Chromium.app/Contents/MacOS/Chromium","google-chrome","chromium");else Z.push("google-chrome","google-chrome-stable","chromium","chromium-browser","msedge");return Z}function G5(X){let W=(process.env.PATH??"").split(i.delimiter),Z=process.platform==="win32"?[".exe",".cmd",".bat",""]:[""];for(let K of W){if(!K)continue;for(let J of Z){let Y=i.join(K,`${X}${J}`);if(x1(Y))return Y}}return null}function E5(){let X=new Set([process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH,process.env.IDEAWAVE_CHROMIUM_PATH]);for(let W of R3(process.platform,process.env)){if(X.has(W))continue;if(i.isAbsolute(W)){if(x1(W))return W}else{let Z=G5(W);if(Z)return Z}}return null}function _5(){try{let X=y3(import.meta.url);return i.dirname(X.resolve("playwright-core/package.json"))}catch{return null}}function k5(X){let W=process.env.PLAYWRIGHT_BROWSERS_PATH?.trim();if(W==="0")return i.join(X,".local-browsers");if(W)return W.startsWith("~")?i.join(LX.homedir(),W.slice(1)):i.resolve(W);if(process.platform==="win32")return i.join(process.env.LOCALAPPDATA??i.join(LX.homedir(),"AppData","Local"),"ms-playwright");if(process.platform==="darwin")return i.join(LX.homedir(),"Library","Caches","ms-playwright");return i.join(LX.homedir(),".cache","ms-playwright")}function u5(){if(process.platform==="win32")return"win64";if(process.platform==="darwin")return process.arch==="arm64"?"mac-arm64":"mac-x64";return process.arch==="arm64"?"linux-arm64":"linux64"}function M2(){let X=_5();if(!X)return null;try{let Z=JSON.parse(M5(i.join(X,"browsers.json"),"utf8")).browsers?.find((U)=>U.name==="chromium-headless-shell");if(!Z?.revision)return null;let K=u5(),J=Z.revisionOverrides?.[K]??Z.revision,Y=i.join(k5(X),`chromium_headless_shell-${J}`),H=process.platform==="win32"?["chrome-headless-shell-win64/chrome-headless-shell.exe","chrome-headless-shell-win32/chrome-headless-shell.exe"]:process.platform==="darwin"?[`chrome-headless-shell-${K}/chrome-headless-shell`,"chrome-headless-shell-mac-x64/chrome-headless-shell","chrome-headless-shell-mac-arm64/chrome-headless-shell"]:[`chrome-headless-shell-${K}/chrome-headless-shell`,"chrome-headless-shell-linux64/chrome-headless-shell"];for(let U of H){let F=i.join(Y,...U.split("/"));if(x1(F))return F}}catch{return null}return null}function I5(){let X=process.env.IDEAWAVE_CAPTURE_EXECUTABLE_PATH??process.env.IDEAWAVE_CHROMIUM_PATH;return X&&x1(X)?X:null}function O3(){return $5({override:I5(),managedShell:M2(),system:E5()})}function S5(){let W=y3(import.meta.url).resolve("playwright-core/package.json"),Z=i.join(i.dirname(W),"cli.js");return new Promise((K,J)=>{let Y=N5(process.execPath,[Z,...D5],{stdio:"ignore",windowsHide:!0});Y.once("error",J),Y.once("exit",(H)=>{if(H===0)K();else J(Error(`Playwright headless-shell installer exited with code ${H}`))})})}function g2(X){let W=M2();if(W)return C0={phase:"ready",engine:"headless-shell",executablePath:W},Promise.resolve(r0());if(p0)return p0;if(N2>0&&Date.now()-N2<g5)return Promise.resolve(r0());return C0=X?{phase:"ready",engine:X.engine,executablePath:X.path,installingManagedShell:!0}:{phase:"installing",installingManagedShell:!0},p0=(async()=>{try{await S5();let Z=M2();if(!Z)throw Error("Headless Shell finished installing but its executable was not found");C0={phase:"ready",engine:"headless-shell",executablePath:Z}}catch(Z){N2=Date.now(),C0=X?{phase:"ready",engine:X.engine,executablePath:X.path,error:Z instanceof Error?Z.message:String(Z)}:{phase:"failed",error:Z instanceof Error?Z.message:String(Z)}}finally{p0=null}return r0()})(),p0}function C3(){let X=O3();if(X?.engine==="explicit"||X?.engine==="headless-shell")return C0={phase:"ready",engine:X.engine,executablePath:X.path},Promise.resolve(r0());return g2(X)}async function h3(){let X=O3();if(X){if(C0={phase:"ready",engine:X.engine,executablePath:X.path,...X.engine==="system-chromium"&&p0?{installingManagedShell:!0}:{}},X.engine==="system-chromium")g2(X);return X.path}throw g2(null),m5(C0)}var T5=60000,A5=16,u0=null,PX=null,s0=null,D2=Promise.resolve(),xX=0,m2=0,c5=0;class vX extends Error{constructor(){super("The capture queue is busy; retry shortly.");this.name="CaptureQueueFullError"}}function $2(){if(s0)clearTimeout(s0);s0=null}async function G2(){$2();let X=u0;if(u0=null,PX=null,X)await X.close().catch(()=>{return})}function a5(X=T5){$2(),s0=setTimeout(()=>{if(s0=null,m2===0&&xX===0)G2()},X),s0.unref?.()}async function i5(){let X=await h3();if(u0?.isConnected()&&PX===X)return u0;await G2();let W=await l5.launch({headless:!0,executablePath:X,handleSIGHUP:!1,handleSIGINT:!1,handleSIGTERM:!1});return c5+=1,u0=W,PX=X,W.on("disconnected",()=>{if(u0===W)u0=null,PX=null}),W}function N3(X,W){if(xX>=A5)return Promise.reject(new vX);xX+=1;let Z,K,J=new Promise((Y,H)=>{Z=Y,K=H});return D2=D2.then(async()=>{xX-=1,m2+=1,$2();let Y=null,H;try{Y=await(await i5()).newContext(X.context);let F=await Y.newPage();H={ok:!0,value:await W(F)}}catch(U){H={ok:!1,error:U}}finally{if(Y)await Y.close().catch(()=>{return});m2-=1,a5()}if(H.ok)Z(H.value);else K(H.error)}),J}async function M3(){await D2.catch(()=>{return}),await G2()}import{randomUUID as W7}from"node:crypto";import{createServer as Z7}from"node:http";import{WebSocket as I3,WebSocketServer as Q7}from"ws";var E2="/cli-bridge",g3="/ping";function _2(X=43275,W=43277){let Z=[];for(let K=X;K<=W;K+=1)Z.push(K);return Z}function D3(X=_2(),W="127.0.0.1",Z="/cli-bridge"){return X.map((K)=>`ws://${W}:${K}${Z}`)}var d5=800;function m3({candidates:X,createWebSocket:W,timeoutMs:Z=d5,maxConcurrent:K=1,staggerMs:J=0,setTimeoutFn:Y=setTimeout,clearTimeoutFn:H=clearTimeout}){return new Promise((U,F)=>{let w=0,B=!1,b=null,R=new Map,f=Math.max(1,Math.floor(K)),v=()=>{if(b===null)return;H(b),b=null},O=(M)=>{let{socket:P,listeners:$,timer:E}=M;P.removeEventListener("open",$.open),P.removeEventListener("message",$.message),P.removeEventListener("error",$.error),P.removeEventListener("close",$.close),H(E),R.delete(P)},h=(M)=>{v();for(let P of Array.from(R.values()))if(O(P),P.socket!==M)try{P.socket.close()}catch{}},C=()=>{if(B)return;if(w<X.length)return;if(R.size>0)return;if(b!==null)return;B=!0,F(Error("No IdeaWave CLI bridge is reachable"))},g=(M)=>{if(B)return;if(w>=X.length){C();return}if(R.size>=f)return;if(M<=0){v(),u();return}if(b!==null)return;b=Y(()=>{b=null,u()},M)},N=()=>{if(B)return;if(R.size>=f)return;if(R.size===0||J<=0||f===1){g(0);return}g(J)},m=(M)=>{if(B)return;let P=R.get(M);if(!P)return;O(P);try{M.close()}catch{}N(),C()};function u(){if(B)return;if(R.size>=f)return;let M=X[w];if(w+=1,!M){C();return}let P;try{P=W(M)}catch{N(),C();return}let $={open:()=>{if(B||!R.has(P))return;P.send(D1({type:"bridge_probe",protocolVersion:1}))},message:(A)=>{if(B||!R.has(P))return;if(g1(String(A?.data??""))?.type!=="bridge_probe_ack")return;B=!0,h(P),U({url:M,socket:P})},error:()=>m(P),close:()=>m(P)};P.addEventListener("open",$.open),P.addEventListener("message",$.message),P.addEventListener("error",$.error),P.addEventListener("close",$.close);let E=Y(()=>m(P),Z);R.set(P,{url:M,socket:P,listeners:$,timer:E}),N()}u()})}import{randomBytes as p5}from"node:crypto";import{mkdir as r5,writeFile as s5}from"node:fs/promises";import o5 from"node:os";import $3 from"node:path";var n5=30000,t5=1024;function G3(X){let W;try{W=new URL(X)}catch{return!1}if(W.protocol!=="http:"&&W.protocol!=="https:")return!1;let Z=W.hostname.toLowerCase().replace(/^\[|\]$/g,"");if(Z==="localhost"||Z==="127.0.0.1"||Z==="::1")return!0;let J=Z==="ideawave.app"||Z.endsWith(".ideawave.app");return W.protocol==="https:"&&J&&W.pathname.startsWith("/static_boards/")}async function e5(X,W){let Z=$3.join(o5.tmpdir(),"ideawave-screenshots");await r5(Z,{recursive:!0});let K=$3.join(Z,`board-${Date.now()}-${p5(4).toString("hex")}.png`);return await s5(K,X),{path:K,engine:W}}async function E3(X){let W=X.timeoutMs??n5;return N3({context:{viewport:{width:X.width,height:X.height},deviceScaleFactor:1}},async(Z)=>{Z.setDefaultTimeout(W),Z.setDefaultNavigationTimeout(W);let K=await Z.goto(X.url,{waitUntil:"networkidle",timeout:W});if(!K?.ok())throw Error(`Static board responded with HTTP ${K?.status()??"unknown"}; request a fresh one-time token before retrying`);await Z.locator('[data-ideawave-static-board-ready="true"]').waitFor({state:"attached",timeout:W}),await Z.evaluate(async()=>{if(document.fonts?.ready)await document.fonts.ready});let J=await Z.screenshot({type:"png",animations:"disabled",caret:"hide",scale:"css"});if(J.byteLength<t5)throw Error("Headless Shell returned an empty screenshot");return e5(Buffer.from(J),r0().engine??"system-chromium")})}var b1="IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS";function X7(X){return X==="1"||X?.toLowerCase()==="true"}function _3(X,W){let K=X.includes("--dev")||X7(W.IDEAWAVE_CLI_ALLOW_RAILWAY_PR_PREVIEWS),J=W.APP_ENV==="development"||K;return{cliArgs:X.filter((Y)=>Y!=="--dev"),browserKitEnabled:!0,captureEngineEnabled:!J,allowRailwayPrPreviews:K}}var K7=0,J7=30000,V7=15000,Y7="/screenshot",z7=65536,S3="http://127.0.0.1";async function l3(X=D3(),W=(Z)=>new I3(Z,{headers:{origin:S3}})){try{let{url:Z,socket:K}=await m3({candidates:X,createWebSocket:W});try{K.close()}catch{}return Z}catch{return null}}var j7=new Set(["https://ideawave-app-production.up.railway.app"]);function H7(X){return X==="ideawave.app"||X.endsWith(".ideawave.app")}function w7(X){return X==="1"||X?.toLowerCase()==="true"}function U7(X){return/^ideawave-app-ideawave-app-pr-\d+\.up\.railway\.app$/i.test(X)}function F7(){let X=process.env.IDEAWAVE_CLI_ALLOWED_ORIGINS;if(!X)return q7;let W=new Set;for(let Z of X.split(",")){let K=Z.trim();if(!K)continue;try{W.add(new URL(K).origin)}catch{}}return W}var q7=new Set;function k2(X){if(!X)return!1;let W;try{W=new URL(X)}catch{return!1}if(j7.has(W.origin))return!0;if(F7().has(W.origin))return!0;if(W.protocol==="https:"&&w7(process.env[b1])&&U7(W.hostname))return!0;if(W.protocol==="https:"&&H7(W.hostname))return!0;if(W.protocol!=="http:"&&W.protocol!=="https:")return!1;return W.hostname==="localhost"||W.hostname==="127.0.0.1"||W.hostname==="::1"}function o0(X,W){if(X.readyState!==I3.OPEN)return;try{X.send(D1(W))}catch{}}function B7(X){if(typeof X==="string")return X;if(Buffer.isBuffer(X))return X.toString("utf8");if(Array.isArray(X))return Buffer.concat(X).toString("utf8");return Buffer.from(X).toString("utf8")}function bX(X){if(typeof X==="string")return X;if(Array.isArray(X))return X[0]??null;return null}function k3(X,W,Z){X.write(`HTTP/1.1 ${W} ${Z}\r
|
|
1068
1068
|
Connection: close\r
|
|
1069
1069
|
Content-Length: ${Buffer.byteLength(Z)}\r
|
|
1070
1070
|
\r
|
|
1071
|
-
${Z}`),X.destroy()}function B7(X,W){return new Promise((Z,K)=>{let J=(H)=>{X.off("listening",V),K(H)},V=()=>{X.off("error",J);let H=X.address();if(!H||typeof H==="string"){K(Error("Failed to read CLI bridge server address"));return}Z(H.port)};X.once("error",J),X.once("listening",V),X.listen(W,"127.0.0.1")})}function k3(X){return new Promise((W,Z)=>{X.close((K)=>{if(K)Z(K);else W()})})}async function l3(X,W=_2()){let Z=new Map,K=new Map,J=X.maxMessageSize??Q7,V=!1,H=(O)=>{let b=K.get(O);if(b)clearTimeout(b);K.delete(O)},U=(O)=>{K.delete(O);let{activeRunIds:b}=X.registry.disconnect(O);X.onDisconnect(O,b)},F=(O,b)=>{let f={type:"cli_status",connected:!0,runtime:X.runtime,mcpReady:X.mcpReady(),error:b,capabilities:X.capabilities??[],cliVersion:X.cliVersion,browserRuntime:X.browserRuntimeStatus?.()};if(O){let h=Z.get(O);if(h)o0(h,f);return}for(let h of Z.values())o0(h,f)},w=(O,b)=>{let f=b.sessionId.trim(),h=b.userId.trim();if(!f||!h){o0(O,{type:"cli_status",connected:!1,runtime:X.runtime,mcpReady:X.mcpReady(),error:"Missing frontend session or user id"}),O.close();return}H(f);let C=Z.get(f);if(C&&C!==O)C.close();O.data.frontendSessionId=f,Z.set(f,O),X.registry.register({frontendSessionId:f,userId:h,tools:b.tools,send:(g)=>o0(O,g)}),F(f),X.onToolMetadata?.(f)},B=(O,b)=>{let f=X.registry.getUserId(O);if(!f)return;switch(b.type){case"bridge_ping":{let h=Z.get(O);if(h)o0(h,{type:"bridge_pong"});break}case"tool_metadata":X.registry.setMetadata(O,b.tools),X.onToolMetadata?.(O);break;case"tool_result":X.registry.handleToolResult(O,b);break;case"run_turn":G("bridge.run_received",{runId:b.run.runId,cardId:b.run.cardId,frontendSessionId:O}),X.registry.markRunActive(O,b.run.runId,b.run.cardId),X.onRunTurn(O,{...b.run,frontendSessionId:O,userId:f});break;case"cancel_run":if(X.registry.ownsRun(O,b.runId))X.onCancelRun(O,b.runId);break;case"runtime_rpc":X.onRuntimeRpc(O,b);break;case"browser_rpc":X.onBrowserRpc?.(O,Z.get(O)?.data.frontendOrigin??"",b);break;case"warmup_run":X.onWarmupRun(O,{...b,frontendSessionId:O},f);break;default:break}},v=(O,b)=>{let f=vX(O.headers.origin),h=k2(f),C={Vary:"Origin"};if(h&&f)C["Access-Control-Allow-Origin"]=f,C["Access-Control-Allow-Private-Network"]="true";if(O.method==="OPTIONS"){b.writeHead(204,{...C,"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*","Access-Control-Max-Age":"600"}),b.end();return}if(O.method!=="GET"){b.writeHead(405,C),b.end();return}b.writeHead(200,{...C,"content-type":"application/json","cache-control":"no-store"}),b.end(JSON.stringify({ideawave:!0,runtime:X.runtime,mcpReady:X.mcpReady(),capabilities:X.capabilities??[],cliVersion:X.cliVersion,browserRuntime:X.browserRuntimeStatus?.()}))},R=(O,b)=>{let f=vX(O.headers.origin),h=k2(f),C={Vary:"Origin"};if(h&&f)C["Access-Control-Allow-Origin"]=f,C["Access-Control-Allow-Private-Network"]="true";if(O.method==="OPTIONS"){b.writeHead(204,{...C,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"content-type","Access-Control-Max-Age":"600"}),b.end();return}if(!h){b.writeHead(403,C),b.end();return}if(O.method!=="POST"){b.writeHead(405,C),b.end();return}let g={...C,"content-type":"application/json"},N=(M,P)=>{b.writeHead(M,g),b.end(JSON.stringify(P))},m="",u=!1;O.on("data",(M)=>{if(m+=M.toString("utf8"),m.length>V7)u=!0,O.destroy()}),O.on("end",()=>{if(u){N(400,{ok:!1,error:"Request body too large"});return}let M;try{M=JSON.parse(m)}catch{N(400,{ok:!1,error:"Invalid JSON body"});return}let P=typeof M.url==="string"?M.url:"";if(!$3(P)){N(400,{ok:!1,error:"url must be an http(s) loopback or /static_boards/ page URL"});return}let $=(E,A)=>{let q0=typeof E==="number"?E:Number.NaN;if(!Number.isFinite(q0))return A;return Math.min(4000,Math.max(200,Math.round(q0)))};G3({url:P,width:$(M.width,1440),height:$(M.height,900)}).then((E)=>N(200,{ok:!0,path:E.path,engine:E.engine})).catch((E)=>{let A=E instanceof b1?503:E instanceof bX?429:500;N(A,{ok:!1,...E instanceof b1?{installing:!0}:{},error:E instanceof Error?E.message:String(E)})})})};for(let O of W){let b=W7((C,g)=>{(async()=>{let N=new URL(C.url??"/","http://127.0.0.1").pathname;if(N===M3){v(C,g);return}if(N===Y7){R(C,g);return}if(await X.onHttpRequest?.(C,g))return;g.writeHead(404,{"content-type":"text/plain"}),g.end("IdeaWave CLI bridge")})().catch((N)=>{if(g.headersSent){g.destroy(N instanceof Error?N:void 0);return}g.writeHead(500,{"content-type":"text/plain"}),g.end("IdeaWave CLI bridge request failed")})}),f=new Z7({noServer:!0,maxPayload:J}),h=(C)=>{if(C.idleTimer)clearTimeout(C.idleTimer);C.idleTimer=setTimeout(()=>{C.close()},K7),C.idleTimer.unref?.()};f.on("connection",(C,g)=>{let N=C;N.data={id:X7(),frontendSessionId:null,frontendOrigin:new URL(vX(g.headers.origin)??I3).origin},N.idleTimer=null,h(N),N.on("ping",()=>h(N)),N.on("pong",()=>h(N)),N.on("error",()=>{if(N.idleTimer)clearTimeout(N.idleTimer);N.close()}),N.on("message",(m)=>{h(N);let u=q7(m);if(J>0&&u.length>J)return;let M=g1(u);if(!M)return;let P=N.data.frontendSessionId;if(!P){if(M.type==="bridge_probe")o0(N,{type:"bridge_probe_ack",protocolVersion:M.protocolVersion});else if(M.type==="frontend_hello")w(N,M);return}B(P,M)}),N.on("close",()=>{if(N.idleTimer)clearTimeout(N.idleTimer);let m=N.data.frontendSessionId;if(!m)return;if(Z.get(m)!==N)return;if(Z.delete(m),H(m),V)return;K.set(m,setTimeout(()=>U(m),J7))})}),b.on("upgrade",(C,g,N)=>{let m=new URL(C.url??"/","http://127.0.0.1").pathname;if(X.onHttpUpgrade?.(C,g,N))return;if(m!==E2){_3(g,404,"Not Found");return}if(!k2(vX(C.headers.origin))){_3(g,403,"Forbidden");return}f.handleUpgrade(C,g,N,(u)=>{f.emit("connection",u,C)})});try{let C=await B7(b,O);return{url:`ws://127.0.0.1:${C}${E2}`,port:C,sendStatus:F,close:async()=>{V=!0;for(let g of K.values())clearTimeout(g);K.clear();for(let g of f.clients){let N=g;if(N.idleTimer)clearTimeout(N.idleTimer);N.close()}f.close(),await k3(b).catch(()=>{return})}}}catch(C){if(f.close(),await k3(b).catch(()=>{return}),C?.code==="EADDRINUSE")continue;throw C}}throw Error(`No free IdeaWave CLI bridge port found in ${W[0]}-${W.at(-1)}`)}import{lstat as g7,readFile as D7}from"node:fs/promises";import m7 from"node:os";import y1 from"node:path";import{Server as $7}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as G7,ListToolsRequestSchema as E7}from"@modelcontextprotocol/sdk/types.js";import{randomUUID as P7}from"node:crypto";import{createServer as x7}from"node:http";import{StreamableHTTPServerTransport as b7}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import{isInitializeRequest as a3}from"@modelcontextprotocol/sdk/types.js";var T3=new Set(["127.0.0.1","localhost","[::1]","::1"]);function L7(X){let W=X.trim();if(W.length===0)return null;if(W.startsWith("[")){let V=W.indexOf("]");if(V===-1)return null;let H=W.slice(0,V+1),U=W.slice(V+1);if(U.length===0)return{host:H,port:null};if(!U.startsWith(":"))return null;let F=Number(U.slice(1));if(!Number.isInteger(F)||F<=0||F>65535)return null;return{host:H,port:F}}let Z=W.lastIndexOf(":");if(Z===-1)return{host:W,port:null};let K=W.slice(Z+1),J=Number(K);if(!Number.isInteger(J)||J<=0||J>65535)return{host:W,port:null};return{host:W.slice(0,Z),port:J}}function A3(X){return T3.has(X)||T3.has(X.toLowerCase())}function c3(X,W){let Z=X.headers.host;if(typeof Z!=="string")return{ok:!1,status:403,reason:"missing-host"};let K=L7(Z);if(!K)return{ok:!1,status:403,reason:"bad-host"};if(!A3(K.host))return{ok:!1,status:403,reason:"non-loopback-host"};if(K.port!==null&&K.port!==W)return{ok:!1,status:403,reason:"host-port-mismatch"};let J=X.headers.origin;if(typeof J==="string"&&J.length>0){if(J!=="null"){let V;try{V=new URL(J)}catch{return{ok:!1,status:403,reason:"bad-origin"}}if(!A3(V.hostname))return{ok:!1,status:403,reason:"non-loopback-origin"}}}return{ok:!0}}var i3="/mcp",v7=43274,p3=16777216,y7=1800000,O7=300000,d3=200,R7=-32700,h0=-32600,u2=-32603;function Y0(X,W,Z,K,J){X.statusCode=W,X.setHeader("content-type","application/json"),X.end(JSON.stringify({jsonrpc:"2.0",error:{code:Z,message:K,...J?{data:J}:{}},id:null}))}class I2 extends Error{constructor(){super("expected application/json");this.name="BadContentTypeError"}}class S2 extends Error{constructor(){super(`body exceeds ${p3} bytes`);this.name="BodyTooLargeError"}}async function f7(X){if(X.method&&X.method!=="POST")return;let W=X.headers["content-type"];if(typeof W==="string"&&W.trim().length>0){if(!W.toLowerCase().includes("application/json"))throw new I2}let Z=0,K=[];for await(let V of X){let H=typeof V==="string"?Buffer.from(V):V;if(Z+=H.byteLength,Z>p3)throw new S2;K.push(H)}if(K.length===0)return;let J=Buffer.concat(K).toString("utf8");if(J.length===0)return;return JSON.parse(J)}function C7(X){if(Array.isArray(X))return X.some(a3);return a3(X)}function h7(X){if(typeof X==="number")return X;let W=process.env.IDEAWAVE_MCP_PORT;if(W&&W.trim().length>0){let Z=Number(W);if(Number.isInteger(Z)&&Z>=0&&Z<65536)return Z}return v7}async function N7(X,W){let Z=(J)=>new Promise((V,H)=>{let U=(w)=>{X.off("listening",F),H(w)},F=()=>{X.off("error",U),V()};X.once("error",U),X.once("listening",F),X.listen(J,"127.0.0.1")});try{await Z(W)}catch(J){if(J.code!=="EADDRINUSE"||W===0)throw J;console.warn(`[mcp] port ${W} in use, falling back to an OS-assigned port; external CLIs will need to re-paste the install command from Settings → External agents`),await Z(0)}let K=X.address();if(K==null||typeof K==="string")throw Error("[mcp] failed to read bound address");return K.port}function M7(X,W){if(W&&typeof W==="object"&&!Array.isArray(W)){let K=W.params;if(K&&typeof K==="object"&&!Array.isArray(K)){let J=K.clientInfo;if(J&&typeof J==="object"&&!Array.isArray(J)){let V=J.name;if(typeof V==="string"&&V.trim().length>0)return V.trim()}}}let Z=X.headers["user-agent"];if(typeof Z==="string"&&Z.trim().length>0)return Z.trim();return null}async function r3(X){let W=new Map,Z=0;function K(w){let B=W.get(w);if(B)B.lastActivity=Date.now()}async function J(w,B){W.delete(w),await B.transport.close().catch(()=>{return})}async function V(){let w=null,B=1/0;for(let[v,R]of W)if(R.lastActivity<B)B=R.lastActivity,w=v;if(w!==null){let v=W.get(w);if(v)console.warn(`[mcp] session cap of ${d3} reached; evicting ${w}`),await J(w,v)}}let H=setInterval(()=>{let w=Date.now()-y7;for(let[B,v]of W)if(v.lastActivity<w)console.log(`[mcp] sweeping idle session ${B}`),J(B,v)},O7);H.unref?.();let U=x7((w,B)=>{(async()=>{let v;try{v=new URL(w.url??"/","http://127.0.0.1").pathname}catch{Y0(B,400,h0,"bad-url");return}if(v!==i3){Y0(B,404,h0,"not-found");return}let R=w.method??"POST";if(R!=="POST"&&R!=="GET"&&R!=="DELETE"){B.setHeader("Allow","GET, POST, DELETE"),Y0(B,405,h0,"method-not-allowed");return}let O=c3(w,Z);if(!O.ok){Y0(B,O.status,h0,"forbidden",{reason:O.reason});return}let b=w.headers["mcp-session-id"],f=typeof b==="string"?b:void 0;if(R==="GET"||R==="DELETE"){if(!f||!W.has(f)){Y0(B,400,h0,"no-session",{hint:"Open a POST initialize first to receive an Mcp-Session-Id."});return}let g=W.get(f).transport;K(f);try{await g.handleRequest(w,B)}catch(N){if(console.error("[mcp] transport.handleRequest (GET/DELETE) threw",N),!B.headersSent)Y0(B,500,u2,"internal")}return}let h;try{h=await f7(w)}catch(g){if(g instanceof I2){Y0(B,415,h0,"expected-application-json");return}if(g instanceof S2){Y0(B,413,h0,"body-too-large");return}Y0(B,400,R7,"invalid-json");return}let C;if(f&&W.has(f))C=W.get(f).transport,K(f);else if(!f&&h!==void 0&&C7(h)){let g=w.headers["x-ideawave-user-id"],N=typeof g==="string"&&g.trim().length>0?g.trim():null,m=w.headers["x-ideawave-frontend-session-id"],u=typeof m==="string"&&m.trim().length>0?m.trim():null,M=w.headers["x-ideawave-tool-surface"],P=typeof M==="string"&&M.trim()==="read"?"read":"full",$=w.headers["x-ideawave-images-supported"],E=typeof $==="string"&&$.trim()==="1",A=w.headers["x-ideawave-card-id"],q0=typeof A==="string"&&A.trim().length>0?A.trim():null,x0=w.headers["x-ideawave-board-id"],k=typeof x0==="string"&&x0.trim().length>0?x0.trim():null,d=w.headers["x-ideawave-run-folder"],T=typeof d==="string"&&d.trim().length>0?d.trim():null,X0=M7(w,h);if(W.size>=d3)await V();let r=null,g0=new b7({sessionIdGenerator:()=>P7(),onsessioninitialized:(S0)=>{r=S0,W.set(S0,{transport:g0,lastActivity:Date.now()})},onsessionclosed:(S0)=>{W.delete(S0)}});g0.onclose=()=>{if(g0.sessionId)W.delete(g0.sessionId)};try{await X.buildServer({userId:N,frontendSessionId:u,boardId:k,toolSurface:P,imagesSupported:E,cardId:q0,runFolder:T,clientHint:X0}).connect(g0)}catch(S0){if(console.error("[mcp] buildServer/connect failed",S0),r)W.delete(r);await g0.close().catch(()=>{return}),Y0(B,500,u2,"server-init-failed");return}C=g0}else{Y0(B,400,h0,"no-session",{hint:"Non-initialize requests must include a valid Mcp-Session-Id header obtained from a prior initialize."});return}try{await C.handleRequest(w,B,h)}catch(g){if(console.error("[mcp] transport.handleRequest threw",g),!B.headersSent)Y0(B,500,u2,"internal")}})().catch((v)=>{console.error("[mcp] unhandled request handler error:",v)})});return Z=await N7(U,h7(X.port)),{url:`http://127.0.0.1:${Z}${i3}`,port:Z,close:async()=>{clearInterval(H);for(let w of W.values())await w.transport.close().catch(()=>{return});W.clear(),await new Promise((w)=>U.close(()=>w()))}}}var _7={name:"ideawave-board",version:"1.0.0"},yX="list_run_folder",OX="read_run_folder_file",n3=new Set(["list_boards","get_board","screenshot_board","list_nodes","list_edges","inspect_node","list_context_sources","read_context_card","read_context_file","read_context_image","list_context_folder","get_board_wiki","search_board","get_card_messages","list_agent_cards","inspect_neighbors",yX,OX]),t3=new Set(["inspect_diagram"]),k7=[{name:yX,description:"List visible files and folders under the selected runtime run folder. Hidden/config folders are omitted.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Optional relative path inside the selected run folder. Defaults to the run-folder root."}},additionalProperties:!1}},{name:OX,description:"Read a text file inside the selected runtime run folder. Hidden/config paths and outside-folder paths are denied.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Relative path to a text file inside the selected run folder."}},required:["path"],additionalProperties:!1}}];function l2(X){return{content:[{type:"text",text:X}]}}function u7(X){return l2(JSON.stringify(X,null,2))}function s3(X){return{...l2(X),isError:!0}}async function I7(X,W){if(!W||X.isError)return X;let Z=X.content.find((V)=>V.type==="text");if(!Z)return X;let K;try{let V=JSON.parse(Z.text);if(typeof V.path!=="string")return X;K=y1.resolve(V.path)}catch{return X}let J=y1.resolve(y1.join(m7.tmpdir(),"ideawave-screenshots"));if(y1.dirname(K)!==J||!/^board-[a-z0-9-]+\.png$/i.test(y1.basename(K)))return X;try{if(!(await g7(K)).isFile())return X;let H=await D7(K);if(H.byteLength<1024||H.byteLength>26214400||!H.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])))return X;return{...X,content:[...X.content,{type:"image",data:H.toString("base64"),mimeType:"image/png"}]}}catch{return X}}function S7(X,W,Z="full",K=!1){return X.getMetadata(W).filter((J)=>{let V=wX(J.name);if(Z==="read"&&!n3.has(V))return!1;if(!K&&t3.has(V))return!1;return!0}).map((J)=>({name:J.name,description:J.description,inputSchema:J.inputSchema}))}function l7(X,W,Z={}){let K=S7(X,W,Z.toolSurface??"full",Z.imagesSupported??!1);return Z.includeRunFolderTools?[...K,...k7]:K}function o3(X,W){if(!X||typeof X!=="object"||Array.isArray(X))return null;let Z=X[W];return typeof Z==="string"?Z:null}async function T7(X,W,Z){if(Z&&Z.trim().length>0)return Z.trim();if(!X||!W)throw Error("Run-folder tools require an active IdeaWave board and card.");return(await f0({boardId:X,cardId:W})).runFolder}async function A7(X){let W=await T7(X.boardId,X.cardId,X.runFolder);if(X.name===yX){let Z=o3(X.args,"path")??"",K=await p4(W,Z);return u7(K)}if(X.name===OX){let Z=o3(X.args,"path");if(!Z)return s3("read_run_folder_file requires a path.");return l2(await HX(W,Z))}return s3(`Unknown local tool "${X.name}"`)}function c7(X,W,Z,K,J,V="full",H=!1){let U=new $7(_7,{capabilities:{tools:{}}}),F=async()=>{if(H)return!0;if(F3(K))return!0;if(Z&&K)try{return(await f0({boardId:Z,cardId:K})).adapter.supportsImages===!0}catch{return!1}return!1};return U.setRequestHandler(E7,async()=>({tools:l7(X,W,{includeRunFolderTools:Boolean(J||Z&&K),toolSurface:V,imagesSupported:await F()})})),U.setRequestHandler(G7,async(w)=>{let{name:B,arguments:v}=w.params,R=wX(B),O=Date.now();G("mcp.tool_call_received",{frontendSessionId:W,cardId:K,toolName:R});try{if(R===yX||R===OX)return await A7({name:R,args:v,boardId:Z,cardId:K,runFolder:J});if(V==="read"&&!n3.has(R))throw Error(`Tool "${B}" is not available in read-only mode`);if(t3.has(R)&&!await F())throw Error(`Tool "${B}" requires a runtime that supports image input`);let b=await X.callTool(W,R,v??{},void 0,K??void 0);if(G("mcp.tool_result_returned",{frontendSessionId:W,cardId:K,toolName:R,elapsedMs:Date.now()-O}),b&&typeof b==="object"&&Array.isArray(b.content)){let f=b;return R==="screenshot_board"?await I7(f,await F()):f}return{content:[{type:"text",text:typeof b==="string"?b:JSON.stringify(b)}]}}catch(b){return G("mcp.tool_result_returned",{frontendSessionId:W,cardId:K,toolName:R,elapsedMs:Date.now()-O,hasError:!0}),{content:[{type:"text",text:b instanceof Error?b.message:"Tool call failed"}],isError:!0}}}),U}function e3(X,W){return r3({buildServer:(Z)=>c7(X,Z.frontendSessionId,Z.boardId,Z.cardId,Z.runFolder,Z.toolSurface,Z.imagesSupported),port:W})}import RX from"node:fs/promises";import T2 from"node:os";import fX from"node:path";function X8(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function a7(){let[X,W]=await Promise.all([Q0(),_6()]),Z=X.globalDefaultConfigId?X.runtimes.find((K)=>K.id===X.globalDefaultConfigId)??null:null;return{runtimes:X.runtimes,globalDefaultConfigId:X.globalDefaultConfigId,globalDefaultEffective:Z?{runFolder:Z.runFolder??T2.homedir(),modelId:Z.defaultModelId??null,configValues:Z.defaultConfigValues??{}}:null,knownAdapters:A0().map((K)=>({id:K.id,displayName:K.displayName})),readiness:W}}async function i7(X){try{let W=await f0({boardId:X.boardId,cardId:X.cardId});return{resolved:{configId:W.entry.id,adapterId:W.entry.kind==="registered"?W.entry.adapterId:null,displayName:W.entry.displayName,runFolder:W.runFolder,modelId:W.modelId,configValues:W.configValues}}}catch(W){if(W instanceof D0)return{resolved:null};throw W}}async function d7(X){return V0((W)=>{let Z=W.runtimes.find((V)=>V.kind==="registered"&&V.adapterId===X.adapterId);if(Z)return Z;let K=A0().find((V)=>V.id===X.adapterId);if(!K)throw Error(`Unknown adapterId: ${X.adapterId}`);let J={id:X8(),kind:"registered",adapterId:X.adapterId,displayName:K.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return W.runtimes.push(J),J})}async function p7(X){return V0((W)=>{let Z={id:X8(),kind:"custom",displayName:X.displayName,command:X.command,args:X.args,env:X.env,runFolder:X.runFolder,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return W.runtimes.push(Z),Z})}async function r7(X){await V0((W)=>{if(W.runtimes=W.runtimes.filter((Z)=>Z.id!==X.runtimeConfigId),W.globalDefaultConfigId===X.runtimeConfigId)W.globalDefaultConfigId=null;for(let Z of Object.keys(W.boardOverrides))if(W.boardOverrides[Z].runtimeConfigId===X.runtimeConfigId)delete W.boardOverrides[Z];for(let Z of Object.keys(W.cardOverrides))if(W.cardOverrides[Z].runtimeConfigId===X.runtimeConfigId)delete W.cardOverrides[Z]})}async function s7(X){await V0((W)=>{let Z=W.runtimes.find((K)=>K.id===X.runtimeConfigId);if(!Z)throw Error(`Runtime config not found: ${X.runtimeConfigId}`);if(W.globalDefaultConfigId=X.runtimeConfigId,X.runFolder!==void 0)Z.runFolder=X.runFolder;if(X.modelId!==void 0)Z.defaultModelId=X.modelId;if(X.configValues!==void 0)Z.defaultConfigValues=X.configValues})}async function o7(X){X.boardId,await V0((W)=>{if(X.runtimeConfigId===null){delete W.cardOverrides[X.cardId];return}if(!W.runtimes.some((J)=>J.id===X.runtimeConfigId))throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let K=W.cardOverrides[X.cardId];W.cardOverrides[X.cardId]={runtimeConfigId:X.runtimeConfigId,runFolder:X.runFolder!==void 0?X.runFolder:K?.runFolder??null,modelId:X.modelId!==void 0?X.modelId:K?.modelId??null,configValues:X.configValues!==void 0?X.configValues:K?.configValues??{}}})}async function n7(X){let Z=(await Q0()).runtimes.find((H)=>H.id===X.runtimeConfigId);if(!Z)throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let K=w0(Z),J=await K.resolveSpawnConfig(Z),V=Z.runFolder??T2.homedir();try{let H=await j3({spawn:{...J,cwd:V},modelId:X.modelId??Z.defaultModelId??null,configValues:X.configValues??Z.defaultConfigValues??{}}),U=zX({adapterId:K.id,models:H.models,currentModelId:H.currentModelId}),F=new Date().toISOString();return await V0((w)=>{let B=w.runtimes.find((v)=>v.id===X.runtimeConfigId);if(B)B.discoveredModels=U,B.discoveredConfigOptions=H.configOptions,B.discoveredAt=F}),{ok:!0,models:U,configOptions:H.configOptions,currentModelId:H.currentModelId}}catch(H){if(H instanceof l0)throw Error(`${H.message}${K.authHint?` ${K.authHint}`:""}`);if(H instanceof I||H instanceof H0)throw Error(H.message);throw H}}async function t7(X){let W=T2.homedir(),Z=X.path?.trim()?X.path.trim():W,K=fX.resolve(Z),J=!0;try{if(!(await RX.stat(K)).isDirectory())K=fX.dirname(K)}catch{J=!1,K=W}let V=[];try{V=(await RX.readdir(K,{withFileTypes:!0})).filter((F)=>F.isDirectory()&&!F.name.startsWith(".")).map((F)=>({name:F.name,path:fX.join(K,F.name)})).sort((F,w)=>F.name.localeCompare(w.name))}catch{V=[]}let H=fX.dirname(K);return{path:K,parent:H===K?null:H,home:W,exists:J,entries:V}}var W8={list:a7,getEffectiveForCard:i7,registerRegistered:d7,registerCustom:p7,unregister:r7,setUserDefault:s7,setCardOverride:o7,refreshModels:n7,browseFolder:t7};var e7=[{id:"claude-code",displayName:"Claude Code"},{id:"codex",displayName:"Codex"},{id:"copilot",displayName:"Copilot"},{id:"opencode",displayName:"OpenCode"}];function XQ(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function Z8(){try{let X=await Q0();if(X.globalDefaultConfigId){if(X.runtimes.some((Z)=>Z.id===X.globalDefaultConfigId))return X.globalDefaultConfigId}for(let W of e7){if((await k6(W.id))?.status!=="ready")continue;let K=null;if(await V0((J)=>{if(J.globalDefaultConfigId){if(J.runtimes.some((U)=>U.id===J.globalDefaultConfigId)){K=J.globalDefaultConfigId;return}}let V=J.runtimes.find((H)=>H.kind==="registered"&&H.adapterId===W.id);if(!V){let H={id:XQ(),kind:"registered",adapterId:W.id,displayName:W.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};J.runtimes.push(H),V=H}J.globalDefaultConfigId=V.id,K=V.id}),K)return console.log(`[ideawave-cli] using agent runtime: ${W.displayName}`),K}return console.warn("[ideawave-cli] no agent runtime detected on PATH (tried claude, codex, gh copilot, opencode). Install one to run agents."),null}catch(X){return console.warn("[ideawave-cli] runtime auto-seed failed",X),null}}var WQ=120000;function ZQ(){if(typeof crypto<"u"&&"randomUUID"in crypto)return`call_${crypto.randomUUID()}`;return`call_${Date.now()}_${Math.random().toString(16).slice(2)}`}class A2{sessions=new Map;createCallId;toolCallTimeoutMs;constructor(X={}){this.createCallId=X.createCallId??ZQ,this.toolCallTimeoutMs=X.toolCallTimeoutMs??WQ}register(X){let W=this.sessions.get(X.frontendSessionId);if(W){if(W.userId!==X.userId)this.rejectPending(W,"frontend session user changed"),W.activeRunIds.clear();this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:W.pendingToolCalls,activeRunIds:W.activeRunIds,activeRunCardIds:W.activeRunCardIds});return}this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:new Map,activeRunIds:new Set,activeRunCardIds:new Map})}disconnect(X,W="frontend session disconnected"){let Z=this.sessions.get(X);if(!Z)return{activeRunIds:[]};return this.sessions.delete(X),this.rejectPending(Z,W),{activeRunIds:Array.from(Z.activeRunIds)}}sessionCount(){return this.sessions.size}has(X){return this.sessions.has(X)}getUserId(X){return this.sessions.get(X)?.userId??null}setMetadata(X,W){let Z=this.sessions.get(X);if(Z)Z.tools=W}getMetadata(X){if(!X)return[];return this.sessions.get(X)?.tools??[]}sendToSession(X,W){let Z=this.sessions.get(X);if(!Z)return!1;return Z.send(W),!0}callTool(X,W,Z,K,J){if(!X)return Promise.reject(Error("MCP tool call is missing a frontend session id"));let V=this.sessions.get(X);if(!V)return Promise.reject(Error(`Frontend session ${X} is not connected`));let H=this.createCallId();return new Promise((U,F)=>{let w=K??(J?this.getActiveRunIdForCard(V,J):this.getSoleActiveRunId(V)),B=J??(w?V.activeRunCardIds.get(w):void 0),v=Date.now(),R=setTimeout(()=>{V.pendingToolCalls.delete(H),G("tool_queue.timeout",{frontendSessionId:X,runId:w,cardId:B,callId:H,toolName:W,elapsedMs:Date.now()-v,queueDepth:V.pendingToolCalls.size}),F(Error(`Tool "${W}" timed out waiting for the frontend`))},this.toolCallTimeoutMs);V.pendingToolCalls.set(H,{resolve:U,reject:F,timer:R,name:W,runId:w??null,cardId:B??null,startedAt:v}),G("tool_queue.forwarded_to_browser",{frontendSessionId:X,runId:w,cardId:B,callId:H,toolName:W,queueDepth:V.pendingToolCalls.size}),V.send({type:"tool_call",callId:H,name:W,args:Z,...w?{runId:w}:{},...B?{cardId:B}:{}})})}handleToolResult(X,W){let Z=this.sessions.get(X);if(!Z)return;let K=Z.pendingToolCalls.get(W.callId);if(!K)return;if(Z.pendingToolCalls.delete(W.callId),clearTimeout(K.timer),G("tool_queue.result_received",{frontendSessionId:X,runId:K.runId,cardId:K.cardId,callId:W.callId,toolName:K.name,elapsedMs:Date.now()-K.startedAt,queueDepth:Z.pendingToolCalls.size,ok:W.ok}),W.ok){K.resolve(W.result);return}let J=W.result;if(J&&typeof J==="object"&&Array.isArray(J.content)){K.resolve({...J,isError:!0});return}K.reject(Error(W.error??"Tool execution failed"))}markRunActive(X,W,Z){let K=this.sessions.get(X);if(!K)return;if(K.activeRunIds.add(W),Z)K.activeRunCardIds.set(W,Z)}markRunSettled(X,W){let Z=this.sessions.get(X);if(!Z)return;Z.activeRunIds.delete(W),Z.activeRunCardIds.delete(W)}ownsRun(X,W){return this.sessions.get(X)?.activeRunIds.has(W)??!1}rejectPending(X,W){for(let Z of X.pendingToolCalls.values())clearTimeout(Z.timer),G("tool_queue.rejected",{frontendSessionId:X.frontendSessionId,runId:Z.runId,cardId:Z.cardId,toolName:Z.name,elapsedMs:Date.now()-Z.startedAt}),Z.reject(Error(W));X.pendingToolCalls.clear()}getSoleActiveRunId(X){return X.activeRunIds.size===1?X.activeRunIds.values().next().value:void 0}getActiveRunIdForCard(X,W){let Z=[...X.activeRunCardIds.entries()].filter(([K,J])=>X.activeRunIds.has(K)&&J===W).map(([K])=>K);return Z.length===1?Z[0]:void 0}}function K8(){return"0.0.77".trim()?"0.0.77":"dev"}var QQ=process.argv.slice(2),a2=E3(QQ,process.env);if(a2.allowRailwayPrPreviews)process.env[v1]="1";var M0=a2.cliArgs[0],{browserKitEnabled:R1,captureEngineEnabled:KQ}=a2;if(M0==="--help"||M0==="-h"||M0==="help")console.log("ideawave — host the local bridge for a running ideawave.app session."),console.log(""),console.log("Usage:"),console.log(" ideawave Serve the browser bridge and MCP forwarder."),console.log(" ideawave --version Print the CLI version."),process.exit(0);if(M0==="--version"||M0==="-v"||M0==="version")console.log(K8()),process.exit(0);if(M0)console.error(`Unknown command: ${M0}`),console.error("Run `ideawave --help` for usage."),process.exit(1);var f1=new A2,I0=null,JQ=R1?{phase:"ready",message:"Local browser-kit proxy is ready"}:{phase:"idle"},n0=new VX;function N0(X,W){f1.sendToSession(X,W)}async function YQ(X,W){try{let Z=W8[W.method],K=await Z(W.params);N0(X,{type:"runtime_rpc_result",requestId:W.requestId,ok:!0,result:K})}catch(Z){N0(X,{type:"runtime_rpc_result",requestId:W.requestId,ok:!1,error:Z instanceof Error?Z.message:String(Z)})}}var C1=!1,O1=null;async function c2(){if(C1)return;if(O1)return O1;return O1=(async()=>{try{let X=await e3(f1);n2({...X,requestedPort:X.port}),console.log(`[ideawave-cli] MCP endpoint for the agent: ${X.url}`);try{await L6({onStatusChange:(W)=>{if(u6(),I0?.sendStatus(),W.status==="failed")console.warn(`[ideawave-cli] ACP bridge setup failed for ${W.packageName}: ${W.error??"unknown error"}`)}})}catch(W){console.warn("[ideawave-cli] ACP bridge setup skipped:",W instanceof Error?W.message:String(W))}await Z8(),C1=!0,console.log("[ideawave-cli] ready — agent runs will drive the board."),I0?.sendStatus()}catch(X){console.error("[ideawave-cli] failed to start agent host:",X),I0?.sendStatus(void 0,X instanceof Error?X.message:String(X))}finally{O1=null}})(),O1}if(process.env.APP_ENV!=="development"){let X=await S3();if(X)console.error(`[ideawave-cli] An IdeaWave CLI is already running at ${X}.`),console.error("[ideawave-cli] Only one CLI per machine is supported — it already serves every browser tab. Exiting."),process.exit(0)}if(KQ)f3().then((X)=>{if(X.phase==="ready")console.log("[ideawave-cli] screenshot engine ready");else if(X.phase==="failed")console.warn(`[ideawave-cli] screenshot engine setup failed: ${X.error??"unknown error"}`)});I0=await l3({registry:f1,runtime:null,mcpReady:()=>C1,capabilities:R1?[t2,e2,X6]:[],cliVersion:K8(),browserRuntimeStatus:()=>JQ,onToolMetadata:(X)=>{console.log(`[ideawave-cli] session ${X} advertised ${f1.getMetadata(X).length} tools`),c2()},onRunTurn:(X,W)=>{console.log(`[ideawave-cli] running agent turn for card ${W.cardId} (session ${X})`),(async()=>{if(await c2(),!C1){N0(X,{type:"run_settled",runId:W.runId,cardId:W.cardId,result:{assistantContent:"",model:null,latencyMs:0,errorText:"IdeaWave CLI agent host is not ready",partialText:null}});return}await x3(W,(Z)=>N0(X,Z))})().catch(()=>{return}).finally(()=>f1.markRunSettled(X,W.runId))},onCancelRun:(X,W)=>{h2(W)},onRuntimeRpc:(X,W)=>{YQ(X,W)},onBrowserRpc:(X,W,Z)=>{if(!R1){N0(X,{type:"browser_rpc_result",requestId:Z.requestId,ok:!1,error:"The development browser-kit proxy is not enabled"});return}n0.handleRpc(X,W,Z).then((K)=>{N0(X,{type:"browser_rpc_result",requestId:Z.requestId,ok:!0,result:K})},(K)=>{N0(X,{type:"browser_rpc_result",requestId:Z.requestId,ok:!1,error:K instanceof Error?K.message:String(K)})})},onHttpRequest:(X,W)=>R1?n0.handleHttpRequest(X,W):!1,onHttpUpgrade:(X,W,Z)=>R1?n0.handleUpgrade(X,W,Z):!1,onWarmupRun:(X,W,Z)=>{(async()=>{if(await c2(),!C1)return{status:"retryable",error:"agent host is not ready"};return b3({cardId:W.cardId,boardId:W.boardId,userId:Z,frontendSessionId:X})})().then((K)=>{if(!W.warmupId)return;N0(X,{type:"warmup_result",warmupId:W.warmupId,cardId:W.cardId,...K})})},onDisconnect:(X,W)=>{n0.closeFrontendSession(X),q3(X);for(let Z of W)h2(Z);G("bridge.frontend_disconnected",{frontendSessionId:X,activeRuns:W.length}),p2(X).catch((Z)=>{console.warn(`[ideawave-cli] failed to evict sessions for ${X}:`,Z instanceof Error?Z.message:String(Z))}),console.log(`[ideawave-cli] browser session ${X} disconnected`)}});n0.setPort(I0.port);console.log(`[ideawave-cli] browser bridge listening on ${I0.url}`);console.log("[ideawave-cli] waiting for ideawave.app browser sessions…");var Q8=!1;for(let X of["SIGINT","SIGTERM"])process.once(X,()=>{if(Q8)return;Q8=!0,B3(),(async()=>{await n0.close(),await N3(),await I0?.close().catch(()=>{return}),process.exit(0)})()});
|
|
1071
|
+
${Z}`),X.destroy()}function L7(X,W){return new Promise((Z,K)=>{let J=(H)=>{X.off("listening",Y),K(H)},Y=()=>{X.off("error",J);let H=X.address();if(!H||typeof H==="string"){K(Error("Failed to read CLI bridge server address"));return}Z(H.port)};X.once("error",J),X.once("listening",Y),X.listen(W,"127.0.0.1")})}function u3(X){return new Promise((W,Z)=>{X.close((K)=>{if(K)Z(K);else W()})})}async function T3(X,W=_2()){let Z=new Map,K=new Map,J=X.maxMessageSize??K7,Y=!1,H=(f)=>{let v=K.get(f);if(v)clearTimeout(v);K.delete(f)},U=(f)=>{K.delete(f);let{activeRunIds:v}=X.registry.disconnect(f);X.onDisconnect(f,v)},F=(f,v)=>{let O={type:"cli_status",connected:!0,runtime:X.runtime,mcpReady:X.mcpReady(),error:v,capabilities:X.capabilities??[],cliVersion:X.cliVersion,browserRuntime:X.browserRuntimeStatus?.()};if(f){let h=Z.get(f);if(h)o0(h,O);return}for(let h of Z.values())o0(h,O)},w=(f,v)=>{let O=v.sessionId.trim(),h=v.userId.trim();if(!O||!h){o0(f,{type:"cli_status",connected:!1,runtime:X.runtime,mcpReady:X.mcpReady(),error:"Missing frontend session or user id"}),f.close();return}H(O);let C=Z.get(O);if(C&&C!==f)C.close();f.data.frontendSessionId=O,Z.set(O,f),X.registry.register({frontendSessionId:O,userId:h,tools:v.tools,send:(g)=>o0(f,g)}),F(O),X.onToolMetadata?.(O)},B=(f,v)=>{let O=X.registry.getUserId(f);if(!O)return;switch(v.type){case"bridge_ping":{let h=Z.get(f);if(h)o0(h,{type:"bridge_pong"});break}case"tool_metadata":X.registry.setMetadata(f,v.tools),X.onToolMetadata?.(f);break;case"tool_result":X.registry.handleToolResult(f,v);break;case"run_turn":G("bridge.run_received",{runId:v.run.runId,cardId:v.run.cardId,frontendSessionId:f}),X.registry.markRunActive(f,v.run.runId,v.run.cardId),X.onRunTurn(f,{...v.run,frontendSessionId:f,userId:O});break;case"cancel_run":if(X.registry.ownsRun(f,v.runId))X.onCancelRun(f,v.runId);break;case"runtime_rpc":X.onRuntimeRpc(f,v);break;case"browser_rpc":X.onBrowserRpc?.(f,Z.get(f)?.data.frontendOrigin??"",v);break;case"warmup_run":X.onWarmupRun(f,{...v,frontendSessionId:f},O);break;default:break}},b=(f,v)=>{let O=bX(f.headers.origin),h=k2(O),C={Vary:"Origin"};if(h&&O)C["Access-Control-Allow-Origin"]=O,C["Access-Control-Allow-Private-Network"]="true";if(f.method==="OPTIONS"){v.writeHead(204,{...C,"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*","Access-Control-Max-Age":"600"}),v.end();return}if(f.method!=="GET"){v.writeHead(405,C),v.end();return}v.writeHead(200,{...C,"content-type":"application/json","cache-control":"no-store"}),v.end(JSON.stringify({ideawave:!0,runtime:X.runtime,mcpReady:X.mcpReady(),capabilities:X.capabilities??[],cliVersion:X.cliVersion,browserRuntime:X.browserRuntimeStatus?.()}))},R=(f,v)=>{let O=bX(f.headers.origin),h=k2(O),C={Vary:"Origin"};if(h&&O)C["Access-Control-Allow-Origin"]=O,C["Access-Control-Allow-Private-Network"]="true";if(f.method==="OPTIONS"){v.writeHead(204,{...C,"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"content-type","Access-Control-Max-Age":"600"}),v.end();return}if(!h){v.writeHead(403,C),v.end();return}if(f.method!=="POST"){v.writeHead(405,C),v.end();return}let g={...C,"content-type":"application/json"},N=(M,P)=>{v.writeHead(M,g),v.end(JSON.stringify(P))},m="",u=!1;f.on("data",(M)=>{if(m+=M.toString("utf8"),m.length>z7)u=!0,f.destroy()}),f.on("end",()=>{if(u){N(400,{ok:!1,error:"Request body too large"});return}let M;try{M=JSON.parse(m)}catch{N(400,{ok:!1,error:"Invalid JSON body"});return}let P=typeof M.url==="string"?M.url:"";if(!G3(P)){N(400,{ok:!1,error:"url must be an http(s) loopback or /static_boards/ page URL"});return}let $=(E,A)=>{let q0=typeof E==="number"?E:Number.NaN;if(!Number.isFinite(q0))return A;return Math.min(4000,Math.max(200,Math.round(q0)))};E3({url:P,width:$(M.width,1440),height:$(M.height,900)}).then((E)=>N(200,{ok:!0,path:E.path,engine:E.engine})).catch((E)=>{let A=E instanceof v1?503:E instanceof vX?429:500;N(A,{ok:!1,...E instanceof v1?{installing:!0}:{},error:E instanceof Error?E.message:String(E)})})})};for(let f of W){let v=Z7((C,g)=>{(async()=>{let N=new URL(C.url??"/","http://127.0.0.1").pathname;if(N===g3){b(C,g);return}if(N===Y7){R(C,g);return}if(await X.onHttpRequest?.(C,g))return;g.writeHead(404,{"content-type":"text/plain"}),g.end("IdeaWave CLI bridge")})().catch((N)=>{if(g.headersSent){g.destroy(N instanceof Error?N:void 0);return}g.writeHead(500,{"content-type":"text/plain"}),g.end("IdeaWave CLI bridge request failed")})}),O=new Q7({noServer:!0,maxPayload:J}),h=(C)=>{if(C.idleTimer)clearTimeout(C.idleTimer);C.idleTimer=setTimeout(()=>{C.close()},J7),C.idleTimer.unref?.()};O.on("connection",(C,g)=>{let N=C;N.data={id:W7(),frontendSessionId:null,frontendOrigin:new URL(bX(g.headers.origin)??S3).origin},N.idleTimer=null,h(N),N.on("ping",()=>h(N)),N.on("pong",()=>h(N)),N.on("error",()=>{if(N.idleTimer)clearTimeout(N.idleTimer);N.close()}),N.on("message",(m)=>{h(N);let u=B7(m);if(J>0&&u.length>J)return;let M=g1(u);if(!M)return;let P=N.data.frontendSessionId;if(!P){if(M.type==="bridge_probe")o0(N,{type:"bridge_probe_ack",protocolVersion:M.protocolVersion});else if(M.type==="frontend_hello")w(N,M);return}B(P,M)}),N.on("close",()=>{if(N.idleTimer)clearTimeout(N.idleTimer);let m=N.data.frontendSessionId;if(!m)return;if(Z.get(m)!==N)return;if(Z.delete(m),H(m),Y)return;K.set(m,setTimeout(()=>U(m),V7))})}),v.on("upgrade",(C,g,N)=>{let m=new URL(C.url??"/","http://127.0.0.1").pathname;if(X.onHttpUpgrade?.(C,g,N))return;if(m!==E2){k3(g,404,"Not Found");return}if(!k2(bX(C.headers.origin))){k3(g,403,"Forbidden");return}O.handleUpgrade(C,g,N,(u)=>{O.emit("connection",u,C)})});try{let C=await L7(v,f);return{url:`ws://127.0.0.1:${C}${E2}`,port:C,sendStatus:F,close:async()=>{Y=!0;for(let g of K.values())clearTimeout(g);K.clear();for(let g of O.clients){let N=g;if(N.idleTimer)clearTimeout(N.idleTimer);N.close()}O.close(),await u3(v).catch(()=>{return})}}}catch(C){if(O.close(),await u3(v).catch(()=>{return}),C?.code==="EADDRINUSE")continue;throw C}}throw Error(`No free IdeaWave CLI bridge port found in ${W[0]}-${W.at(-1)}`)}import{lstat as $7,readFile as G7}from"node:fs/promises";import E7 from"node:os";import y1 from"node:path";import{Server as _7}from"@modelcontextprotocol/sdk/server/index.js";import{CallToolRequestSchema as k7,ListToolsRequestSchema as u7}from"@modelcontextprotocol/sdk/types.js";var u2=new Set(["list_boards","get_board","screenshot_board","list_nodes","list_edges","inspect_node","list_context_sources","read_context_card","read_context_file","read_context_image","list_context_folder","get_board_wiki","search_board","get_card_messages","list_agent_cards","inspect_neighbors"]),P7=["screenshot_board","inspect_diagram","ask_user_question","create_agent_card","append_user_message","spawn_child_agents"],x7=new Set(P7),WY=new Set([...u2].filter((X)=>!x7.has(X)));import{randomUUID as b7}from"node:crypto";import{createServer as y7}from"node:http";import{StreamableHTTPServerTransport as f7}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import{isInitializeRequest as i3}from"@modelcontextprotocol/sdk/types.js";var A3=new Set(["127.0.0.1","localhost","[::1]","::1"]);function v7(X){let W=X.trim();if(W.length===0)return null;if(W.startsWith("[")){let Y=W.indexOf("]");if(Y===-1)return null;let H=W.slice(0,Y+1),U=W.slice(Y+1);if(U.length===0)return{host:H,port:null};if(!U.startsWith(":"))return null;let F=Number(U.slice(1));if(!Number.isInteger(F)||F<=0||F>65535)return null;return{host:H,port:F}}let Z=W.lastIndexOf(":");if(Z===-1)return{host:W,port:null};let K=W.slice(Z+1),J=Number(K);if(!Number.isInteger(J)||J<=0||J>65535)return{host:W,port:null};return{host:W.slice(0,Z),port:J}}function c3(X){return A3.has(X)||A3.has(X.toLowerCase())}function a3(X,W){let Z=X.headers.host;if(typeof Z!=="string")return{ok:!1,status:403,reason:"missing-host"};let K=v7(Z);if(!K)return{ok:!1,status:403,reason:"bad-host"};if(!c3(K.host))return{ok:!1,status:403,reason:"non-loopback-host"};if(K.port!==null&&K.port!==W)return{ok:!1,status:403,reason:"host-port-mismatch"};let J=X.headers.origin;if(typeof J==="string"&&J.length>0){if(J!=="null"){let Y;try{Y=new URL(J)}catch{return{ok:!1,status:403,reason:"bad-origin"}}if(!c3(Y.hostname))return{ok:!1,status:403,reason:"non-loopback-origin"}}}return{ok:!0}}var d3="/mcp",R7=43274,r3=16777216,O7=1800000,C7=300000,p3=200,h7=-32700,h0=-32600,I2=-32603;function V0(X,W,Z,K,J){X.statusCode=W,X.setHeader("content-type","application/json"),X.end(JSON.stringify({jsonrpc:"2.0",error:{code:Z,message:K,...J?{data:J}:{}},id:null}))}class S2 extends Error{constructor(){super("expected application/json");this.name="BadContentTypeError"}}class l2 extends Error{constructor(){super(`body exceeds ${r3} bytes`);this.name="BodyTooLargeError"}}async function N7(X){if(X.method&&X.method!=="POST")return;let W=X.headers["content-type"];if(typeof W==="string"&&W.trim().length>0){if(!W.toLowerCase().includes("application/json"))throw new S2}let Z=0,K=[];for await(let Y of X){let H=typeof Y==="string"?Buffer.from(Y):Y;if(Z+=H.byteLength,Z>r3)throw new l2;K.push(H)}if(K.length===0)return;let J=Buffer.concat(K).toString("utf8");if(J.length===0)return;return JSON.parse(J)}function M7(X){if(Array.isArray(X))return X.some(i3);return i3(X)}function g7(X){if(typeof X==="number")return X;let W=process.env.IDEAWAVE_MCP_PORT;if(W&&W.trim().length>0){let Z=Number(W);if(Number.isInteger(Z)&&Z>=0&&Z<65536)return Z}return R7}async function D7(X,W){let Z=(J)=>new Promise((Y,H)=>{let U=(w)=>{X.off("listening",F),H(w)},F=()=>{X.off("error",U),Y()};X.once("error",U),X.once("listening",F),X.listen(J,"127.0.0.1")});try{await Z(W)}catch(J){if(J.code!=="EADDRINUSE"||W===0)throw J;console.warn(`[mcp] port ${W} in use, falling back to an OS-assigned port; external CLIs will need to re-paste the install command from Settings → External agents`),await Z(0)}let K=X.address();if(K==null||typeof K==="string")throw Error("[mcp] failed to read bound address");return K.port}function m7(X,W){if(W&&typeof W==="object"&&!Array.isArray(W)){let K=W.params;if(K&&typeof K==="object"&&!Array.isArray(K)){let J=K.clientInfo;if(J&&typeof J==="object"&&!Array.isArray(J)){let Y=J.name;if(typeof Y==="string"&&Y.trim().length>0)return Y.trim()}}}let Z=X.headers["user-agent"];if(typeof Z==="string"&&Z.trim().length>0)return Z.trim();return null}async function s3(X){let W=new Map,Z=0;function K(w){let B=W.get(w);if(B)B.lastActivity=Date.now()}async function J(w,B){W.delete(w),await B.transport.close().catch(()=>{return})}async function Y(){let w=null,B=1/0;for(let[b,R]of W)if(R.lastActivity<B)B=R.lastActivity,w=b;if(w!==null){let b=W.get(w);if(b)console.warn(`[mcp] session cap of ${p3} reached; evicting ${w}`),await J(w,b)}}let H=setInterval(()=>{let w=Date.now()-O7;for(let[B,b]of W)if(b.lastActivity<w)console.log(`[mcp] sweeping idle session ${B}`),J(B,b)},C7);H.unref?.();let U=y7((w,B)=>{(async()=>{let b;try{b=new URL(w.url??"/","http://127.0.0.1").pathname}catch{V0(B,400,h0,"bad-url");return}if(b!==d3){V0(B,404,h0,"not-found");return}let R=w.method??"POST";if(R!=="POST"&&R!=="GET"&&R!=="DELETE"){B.setHeader("Allow","GET, POST, DELETE"),V0(B,405,h0,"method-not-allowed");return}let f=a3(w,Z);if(!f.ok){V0(B,f.status,h0,"forbidden",{reason:f.reason});return}let v=w.headers["mcp-session-id"],O=typeof v==="string"?v:void 0;if(R==="GET"||R==="DELETE"){if(!O||!W.has(O)){V0(B,400,h0,"no-session",{hint:"Open a POST initialize first to receive an Mcp-Session-Id."});return}let g=W.get(O).transport;K(O);try{await g.handleRequest(w,B)}catch(N){if(console.error("[mcp] transport.handleRequest (GET/DELETE) threw",N),!B.headersSent)V0(B,500,I2,"internal")}return}let h;try{h=await N7(w)}catch(g){if(g instanceof S2){V0(B,415,h0,"expected-application-json");return}if(g instanceof l2){V0(B,413,h0,"body-too-large");return}V0(B,400,h7,"invalid-json");return}let C;if(O&&W.has(O))C=W.get(O).transport,K(O);else if(!O&&h!==void 0&&M7(h)){let g=w.headers["x-ideawave-user-id"],N=typeof g==="string"&&g.trim().length>0?g.trim():null,m=w.headers["x-ideawave-frontend-session-id"],u=typeof m==="string"&&m.trim().length>0?m.trim():null,M=w.headers["x-ideawave-tool-surface"],P=typeof M==="string"&&M.trim()==="read"?"read":"full",$=w.headers["x-ideawave-images-supported"],E=typeof $==="string"&&$.trim()==="1",A=w.headers["x-ideawave-card-id"],q0=typeof A==="string"&&A.trim().length>0?A.trim():null,x0=w.headers["x-ideawave-board-id"],k=typeof x0==="string"&&x0.trim().length>0?x0.trim():null,d=w.headers["x-ideawave-run-folder"],T=typeof d==="string"&&d.trim().length>0?d.trim():null,X0=m7(w,h);if(W.size>=p3)await Y();let r=null,g0=new f7({sessionIdGenerator:()=>b7(),onsessioninitialized:(S0)=>{r=S0,W.set(S0,{transport:g0,lastActivity:Date.now()})},onsessionclosed:(S0)=>{W.delete(S0)}});g0.onclose=()=>{if(g0.sessionId)W.delete(g0.sessionId)};try{await X.buildServer({userId:N,frontendSessionId:u,boardId:k,toolSurface:P,imagesSupported:E,cardId:q0,runFolder:T,clientHint:X0}).connect(g0)}catch(S0){if(console.error("[mcp] buildServer/connect failed",S0),r)W.delete(r);await g0.close().catch(()=>{return}),V0(B,500,I2,"server-init-failed");return}C=g0}else{V0(B,400,h0,"no-session",{hint:"Non-initialize requests must include a valid Mcp-Session-Id header obtained from a prior initialize."});return}try{await C.handleRequest(w,B,h)}catch(g){if(console.error("[mcp] transport.handleRequest threw",g),!B.headersSent)V0(B,500,I2,"internal")}})().catch((b)=>{console.error("[mcp] unhandled request handler error:",b)})});return Z=await D7(U,g7(X.port)),{url:`http://127.0.0.1:${Z}${d3}`,port:Z,close:async()=>{clearInterval(H);for(let w of W.values())await w.transport.close().catch(()=>{return});W.clear(),await new Promise((w)=>U.close(()=>w()))}}}var I7={name:"ideawave-board",version:"1.0.0"},yX="list_run_folder",fX="read_run_folder_file",t3=new Set([...u2,yX,fX]),e3=new Set(["inspect_diagram"]),S7=[{name:yX,description:"List visible files and folders under the selected runtime run folder. Hidden/config folders are omitted.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Optional relative path inside the selected run folder. Defaults to the run-folder root."}},additionalProperties:!1}},{name:fX,description:"Read a text file inside the selected runtime run folder. Hidden/config paths and outside-folder paths are denied.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Relative path to a text file inside the selected run folder."}},required:["path"],additionalProperties:!1}}];function T2(X){return{content:[{type:"text",text:X}]}}function l7(X){return T2(JSON.stringify(X,null,2))}function o3(X){return{...T2(X),isError:!0}}async function T7(X,W){if(!W||X.isError)return X;let Z=X.content.find((Y)=>Y.type==="text");if(!Z)return X;let K;try{let Y=JSON.parse(Z.text);if(typeof Y.path!=="string")return X;K=y1.resolve(Y.path)}catch{return X}let J=y1.resolve(y1.join(E7.tmpdir(),"ideawave-screenshots"));if(y1.dirname(K)!==J||!/^board-[a-z0-9-]+\.png$/i.test(y1.basename(K)))return X;try{if(!(await $7(K)).isFile())return X;let H=await G7(K);if(H.byteLength<1024||H.byteLength>26214400||!H.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])))return X;return{...X,content:[...X.content,{type:"image",data:H.toString("base64"),mimeType:"image/png"}]}}catch{return X}}function A7(X,W,Z="full",K=!1){return X.getMetadata(W).filter((J)=>{let Y=wX(J.name);if(Z==="read"&&!t3.has(Y))return!1;if(!K&&e3.has(Y))return!1;return!0}).map((J)=>({name:J.name,description:J.description,inputSchema:J.inputSchema}))}function c7(X,W,Z={}){let K=A7(X,W,Z.toolSurface??"full",Z.imagesSupported??!1);return Z.includeRunFolderTools?[...K,...S7]:K}function n3(X,W){if(!X||typeof X!=="object"||Array.isArray(X))return null;let Z=X[W];return typeof Z==="string"?Z:null}async function a7(X,W,Z){if(Z&&Z.trim().length>0)return Z.trim();if(!X||!W)throw Error("Run-folder tools require an active IdeaWave board and card.");return(await O0({boardId:X,cardId:W})).runFolder}async function i7(X){let W=await a7(X.boardId,X.cardId,X.runFolder);if(X.name===yX){let Z=n3(X.args,"path")??"",K=await r4(W,Z);return l7(K)}if(X.name===fX){let Z=n3(X.args,"path");if(!Z)return o3("read_run_folder_file requires a path.");return T2(await HX(W,Z))}return o3(`Unknown local tool "${X.name}"`)}function d7(X,W,Z,K,J,Y="full",H=!1){let U=new _7(I7,{capabilities:{tools:{}}}),F=async()=>{if(H)return!0;if(q3(K))return!0;if(Z&&K)try{return(await O0({boardId:Z,cardId:K})).adapter.supportsImages===!0}catch{return!1}return!1};return U.setRequestHandler(u7,async()=>({tools:c7(X,W,{includeRunFolderTools:Boolean(J||Z&&K),toolSurface:Y,imagesSupported:await F()})})),U.setRequestHandler(k7,async(w)=>{let{name:B,arguments:b}=w.params,R=wX(B),f=Date.now();G("mcp.tool_call_received",{frontendSessionId:W,cardId:K,toolName:R});try{if(R===yX||R===fX)return await i7({name:R,args:b,boardId:Z,cardId:K,runFolder:J});if(Y==="read"&&!t3.has(R))throw Error(`Tool "${B}" is not available in read-only mode`);if(e3.has(R)&&!await F())throw Error(`Tool "${B}" requires a runtime that supports image input`);let v=await X.callTool(W,R,b??{},void 0,K??void 0);if(G("mcp.tool_result_returned",{frontendSessionId:W,cardId:K,toolName:R,elapsedMs:Date.now()-f}),v&&typeof v==="object"&&Array.isArray(v.content)){let O=v;return R==="screenshot_board"?await T7(O,await F()):O}return{content:[{type:"text",text:typeof v==="string"?v:JSON.stringify(v)}]}}catch(v){return G("mcp.tool_result_returned",{frontendSessionId:W,cardId:K,toolName:R,elapsedMs:Date.now()-f,hasError:!0}),{content:[{type:"text",text:v instanceof Error?v.message:"Tool call failed"}],isError:!0}}}),U}function X8(X,W){return s3({buildServer:(Z)=>d7(X,Z.frontendSessionId,Z.boardId,Z.cardId,Z.runFolder,Z.toolSurface,Z.imagesSupported),port:W})}import RX from"node:fs/promises";import A2 from"node:os";import OX from"node:path";function W8(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function p7(){let[X,W]=await Promise.all([Q0(),k6()]),Z=X.globalDefaultConfigId?X.runtimes.find((K)=>K.id===X.globalDefaultConfigId)??null:null;return{runtimes:X.runtimes,globalDefaultConfigId:X.globalDefaultConfigId,globalDefaultEffective:Z?{runFolder:Z.runFolder??A2.homedir(),modelId:Z.defaultModelId??null,configValues:Z.defaultConfigValues??{}}:null,knownAdapters:A0().map((K)=>({id:K.id,displayName:K.displayName})),readiness:W}}async function r7(X){try{let W=await O0({boardId:X.boardId,cardId:X.cardId});return{resolved:{configId:W.entry.id,adapterId:W.entry.kind==="registered"?W.entry.adapterId:null,displayName:W.entry.displayName,runFolder:W.runFolder,modelId:W.modelId,configValues:W.configValues}}}catch(W){if(W instanceof D0)return{resolved:null};throw W}}async function s7(X){return Y0((W)=>{let Z=W.runtimes.find((Y)=>Y.kind==="registered"&&Y.adapterId===X.adapterId);if(Z)return Z;let K=A0().find((Y)=>Y.id===X.adapterId);if(!K)throw Error(`Unknown adapterId: ${X.adapterId}`);let J={id:W8(),kind:"registered",adapterId:X.adapterId,displayName:K.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return W.runtimes.push(J),J})}async function o7(X){return Y0((W)=>{let Z={id:W8(),kind:"custom",displayName:X.displayName,command:X.command,args:X.args,env:X.env,runFolder:X.runFolder,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};return W.runtimes.push(Z),Z})}async function n7(X){await Y0((W)=>{if(W.runtimes=W.runtimes.filter((Z)=>Z.id!==X.runtimeConfigId),W.globalDefaultConfigId===X.runtimeConfigId)W.globalDefaultConfigId=null;for(let Z of Object.keys(W.boardOverrides))if(W.boardOverrides[Z].runtimeConfigId===X.runtimeConfigId)delete W.boardOverrides[Z];for(let Z of Object.keys(W.cardOverrides))if(W.cardOverrides[Z].runtimeConfigId===X.runtimeConfigId)delete W.cardOverrides[Z]})}async function t7(X){await Y0((W)=>{let Z=W.runtimes.find((K)=>K.id===X.runtimeConfigId);if(!Z)throw Error(`Runtime config not found: ${X.runtimeConfigId}`);if(W.globalDefaultConfigId=X.runtimeConfigId,X.runFolder!==void 0)Z.runFolder=X.runFolder;if(X.modelId!==void 0)Z.defaultModelId=X.modelId;if(X.configValues!==void 0)Z.defaultConfigValues=X.configValues})}async function e7(X){X.boardId,await Y0((W)=>{if(X.runtimeConfigId===null){delete W.cardOverrides[X.cardId];return}if(!W.runtimes.some((J)=>J.id===X.runtimeConfigId))throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let K=W.cardOverrides[X.cardId];W.cardOverrides[X.cardId]={runtimeConfigId:X.runtimeConfigId,runFolder:X.runFolder!==void 0?X.runFolder:K?.runFolder??null,modelId:X.modelId!==void 0?X.modelId:K?.modelId??null,configValues:X.configValues!==void 0?X.configValues:K?.configValues??{}}})}async function XQ(X){let Z=(await Q0()).runtimes.find((H)=>H.id===X.runtimeConfigId);if(!Z)throw Error(`Runtime config not found: ${X.runtimeConfigId}`);let K=w0(Z),J=await K.resolveSpawnConfig(Z),Y=Z.runFolder??A2.homedir();try{let H=await H3({spawn:{...J,cwd:Y},modelId:X.modelId??Z.defaultModelId??null,configValues:X.configValues??Z.defaultConfigValues??{}}),U=zX({adapterId:K.id,models:H.models,currentModelId:H.currentModelId}),F=new Date().toISOString();return await Y0((w)=>{let B=w.runtimes.find((b)=>b.id===X.runtimeConfigId);if(B)B.discoveredModels=U,B.discoveredConfigOptions=H.configOptions,B.discoveredAt=F}),{ok:!0,models:U,configOptions:H.configOptions,currentModelId:H.currentModelId}}catch(H){if(H instanceof l0)throw Error(`${H.message}${K.authHint?` ${K.authHint}`:""}`);if(H instanceof I||H instanceof H0)throw Error(H.message);throw H}}async function WQ(X){let W=A2.homedir(),Z=X.path?.trim()?X.path.trim():W,K=OX.resolve(Z),J=!0;try{if(!(await RX.stat(K)).isDirectory())K=OX.dirname(K)}catch{J=!1,K=W}let Y=[];try{Y=(await RX.readdir(K,{withFileTypes:!0})).filter((F)=>F.isDirectory()&&!F.name.startsWith(".")).map((F)=>({name:F.name,path:OX.join(K,F.name)})).sort((F,w)=>F.name.localeCompare(w.name))}catch{Y=[]}let H=OX.dirname(K);return{path:K,parent:H===K?null:H,home:W,exists:J,entries:Y}}var Z8={list:p7,getEffectiveForCard:r7,registerRegistered:s7,registerCustom:o7,unregister:n7,setUserDefault:t7,setCardOverride:e7,refreshModels:XQ,browseFolder:WQ};var ZQ=[{id:"claude-code",displayName:"Claude Code"},{id:"codex",displayName:"Codex"},{id:"copilot",displayName:"Copilot"},{id:"opencode",displayName:"OpenCode"}];function QQ(){return`cfg_${crypto.randomUUID().replace(/-/g,"").slice(0,16)}`}async function Q8(){try{let X=await Q0();if(X.globalDefaultConfigId){if(X.runtimes.some((Z)=>Z.id===X.globalDefaultConfigId))return X.globalDefaultConfigId}for(let W of ZQ){if((await u6(W.id))?.status!=="ready")continue;let K=null;if(await Y0((J)=>{if(J.globalDefaultConfigId){if(J.runtimes.some((U)=>U.id===J.globalDefaultConfigId)){K=J.globalDefaultConfigId;return}}let Y=J.runtimes.find((H)=>H.kind==="registered"&&H.adapterId===W.id);if(!Y){let H={id:QQ(),kind:"registered",adapterId:W.id,displayName:W.displayName,runFolder:null,defaultModelId:null,defaultConfigValues:{},discoveredModels:[],discoveredConfigOptions:[],discoveredAt:null};J.runtimes.push(H),Y=H}J.globalDefaultConfigId=Y.id,K=Y.id}),K)return console.log(`[ideawave-cli] using agent runtime: ${W.displayName}`),K}return console.warn("[ideawave-cli] no agent runtime detected on PATH (tried claude, codex, gh copilot, opencode). Install one to run agents."),null}catch(X){return console.warn("[ideawave-cli] runtime auto-seed failed",X),null}}var KQ=120000;function JQ(){if(typeof crypto<"u"&&"randomUUID"in crypto)return`call_${crypto.randomUUID()}`;return`call_${Date.now()}_${Math.random().toString(16).slice(2)}`}class c2{sessions=new Map;createCallId;toolCallTimeoutMs;constructor(X={}){this.createCallId=X.createCallId??JQ,this.toolCallTimeoutMs=X.toolCallTimeoutMs??KQ}register(X){let W=this.sessions.get(X.frontendSessionId);if(W){if(W.userId!==X.userId)this.rejectPending(W,"frontend session user changed"),W.activeRunIds.clear();this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:W.pendingToolCalls,activeRunIds:W.activeRunIds,activeRunCardIds:W.activeRunCardIds});return}this.sessions.set(X.frontendSessionId,{frontendSessionId:X.frontendSessionId,userId:X.userId,tools:X.tools,send:X.send,pendingToolCalls:new Map,activeRunIds:new Set,activeRunCardIds:new Map})}disconnect(X,W="frontend session disconnected"){let Z=this.sessions.get(X);if(!Z)return{activeRunIds:[]};return this.sessions.delete(X),this.rejectPending(Z,W),{activeRunIds:Array.from(Z.activeRunIds)}}sessionCount(){return this.sessions.size}has(X){return this.sessions.has(X)}getUserId(X){return this.sessions.get(X)?.userId??null}setMetadata(X,W){let Z=this.sessions.get(X);if(Z)Z.tools=W}getMetadata(X){if(!X)return[];return this.sessions.get(X)?.tools??[]}sendToSession(X,W){let Z=this.sessions.get(X);if(!Z)return!1;return Z.send(W),!0}callTool(X,W,Z,K,J){if(!X)return Promise.reject(Error("MCP tool call is missing a frontend session id"));let Y=this.sessions.get(X);if(!Y)return Promise.reject(Error(`Frontend session ${X} is not connected`));let H=this.createCallId();return new Promise((U,F)=>{let w=K??(J?this.getActiveRunIdForCard(Y,J):this.getSoleActiveRunId(Y)),B=J??(w?Y.activeRunCardIds.get(w):void 0),b=Date.now(),R=setTimeout(()=>{Y.pendingToolCalls.delete(H),G("tool_queue.timeout",{frontendSessionId:X,runId:w,cardId:B,callId:H,toolName:W,elapsedMs:Date.now()-b,queueDepth:Y.pendingToolCalls.size}),F(Error(`Tool "${W}" timed out waiting for the frontend`))},this.toolCallTimeoutMs);Y.pendingToolCalls.set(H,{resolve:U,reject:F,timer:R,name:W,runId:w??null,cardId:B??null,startedAt:b}),G("tool_queue.forwarded_to_browser",{frontendSessionId:X,runId:w,cardId:B,callId:H,toolName:W,queueDepth:Y.pendingToolCalls.size}),Y.send({type:"tool_call",callId:H,name:W,args:Z,...w?{runId:w}:{},...B?{cardId:B}:{}})})}handleToolResult(X,W){let Z=this.sessions.get(X);if(!Z)return;let K=Z.pendingToolCalls.get(W.callId);if(!K)return;if(Z.pendingToolCalls.delete(W.callId),clearTimeout(K.timer),G("tool_queue.result_received",{frontendSessionId:X,runId:K.runId,cardId:K.cardId,callId:W.callId,toolName:K.name,elapsedMs:Date.now()-K.startedAt,queueDepth:Z.pendingToolCalls.size,ok:W.ok}),W.ok){K.resolve(W.result);return}let J=W.result;if(J&&typeof J==="object"&&Array.isArray(J.content)){K.resolve({...J,isError:!0});return}K.reject(Error(W.error??"Tool execution failed"))}markRunActive(X,W,Z){let K=this.sessions.get(X);if(!K)return;if(K.activeRunIds.add(W),Z)K.activeRunCardIds.set(W,Z)}markRunSettled(X,W){let Z=this.sessions.get(X);if(!Z)return;Z.activeRunIds.delete(W),Z.activeRunCardIds.delete(W)}ownsRun(X,W){return this.sessions.get(X)?.activeRunIds.has(W)??!1}rejectPending(X,W){for(let Z of X.pendingToolCalls.values())clearTimeout(Z.timer),G("tool_queue.rejected",{frontendSessionId:X.frontendSessionId,runId:Z.runId,cardId:Z.cardId,toolName:Z.name,elapsedMs:Date.now()-Z.startedAt}),Z.reject(Error(W));X.pendingToolCalls.clear()}getSoleActiveRunId(X){return X.activeRunIds.size===1?X.activeRunIds.values().next().value:void 0}getActiveRunIdForCard(X,W){let Z=[...X.activeRunCardIds.entries()].filter(([K,J])=>X.activeRunIds.has(K)&&J===W).map(([K])=>K);return Z.length===1?Z[0]:void 0}}function J8(){return"0.0.79".trim()?"0.0.79":"dev"}var VQ=process.argv.slice(2),i2=_3(VQ,process.env);if(i2.allowRailwayPrPreviews)process.env[b1]="1";var M0=i2.cliArgs[0],{browserKitEnabled:R1,captureEngineEnabled:YQ}=i2;if(M0==="--help"||M0==="-h"||M0==="help")console.log("ideawave — host the local bridge for a running ideawave.app session."),console.log(""),console.log("Usage:"),console.log(" ideawave Serve the browser bridge and MCP forwarder."),console.log(" ideawave --version Print the CLI version."),process.exit(0);if(M0==="--version"||M0==="-v"||M0==="version")console.log(J8()),process.exit(0);if(M0)console.error(`Unknown command: ${M0}`),console.error("Run `ideawave --help` for usage."),process.exit(1);var O1=new c2,I0=null,zQ=R1?{phase:"ready",message:"Local browser-kit proxy is ready"}:{phase:"idle"},n0=new YX;function N0(X,W){O1.sendToSession(X,W)}async function jQ(X,W){try{let Z=Z8[W.method],K=await Z(W.params);N0(X,{type:"runtime_rpc_result",requestId:W.requestId,ok:!0,result:K})}catch(Z){N0(X,{type:"runtime_rpc_result",requestId:W.requestId,ok:!1,error:Z instanceof Error?Z.message:String(Z)})}}var C1=!1,f1=null;async function a2(){if(C1)return;if(f1)return f1;return f1=(async()=>{try{let X=await X8(O1);t2({...X,requestedPort:X.port}),console.log(`[ideawave-cli] MCP endpoint for the agent: ${X.url}`);try{await P6({onStatusChange:(W)=>{if(I6(),I0?.sendStatus(),W.status==="failed")console.warn(`[ideawave-cli] ACP bridge setup failed for ${W.packageName}: ${W.error??"unknown error"}`)}})}catch(W){console.warn("[ideawave-cli] ACP bridge setup skipped:",W instanceof Error?W.message:String(W))}await Q8(),C1=!0,console.log("[ideawave-cli] ready — agent runs will drive the board."),I0?.sendStatus()}catch(X){console.error("[ideawave-cli] failed to start agent host:",X),I0?.sendStatus(void 0,X instanceof Error?X.message:String(X))}finally{f1=null}})(),f1}if(process.env.APP_ENV!=="development"){let X=await l3();if(X)console.error(`[ideawave-cli] An IdeaWave CLI is already running at ${X}.`),console.error("[ideawave-cli] Only one CLI per machine is supported — it already serves every browser tab. Exiting."),process.exit(0)}if(YQ)C3().then((X)=>{if(X.phase==="ready")console.log("[ideawave-cli] screenshot engine ready");else if(X.phase==="failed")console.warn(`[ideawave-cli] screenshot engine setup failed: ${X.error??"unknown error"}`)});I0=await T3({registry:O1,runtime:null,mcpReady:()=>C1,capabilities:R1?[e2,X6,W6]:[],cliVersion:J8(),browserRuntimeStatus:()=>zQ,onToolMetadata:(X)=>{console.log(`[ideawave-cli] session ${X} advertised ${O1.getMetadata(X).length} tools`),a2()},onRunTurn:(X,W)=>{console.log(`[ideawave-cli] running agent turn for card ${W.cardId} (session ${X})`),(async()=>{if(await a2(),!C1){N0(X,{type:"run_settled",runId:W.runId,cardId:W.cardId,result:{assistantContent:"",model:null,latencyMs:0,errorText:"IdeaWave CLI agent host is not ready",partialText:null}});return}await v3(W,(Z)=>N0(X,Z))})().catch(()=>{return}).finally(()=>O1.markRunSettled(X,W.runId))},onCancelRun:(X,W)=>{h2(W)},onRuntimeRpc:(X,W)=>{jQ(X,W)},onBrowserRpc:(X,W,Z)=>{if(!R1){N0(X,{type:"browser_rpc_result",requestId:Z.requestId,ok:!1,error:"The development browser-kit proxy is not enabled"});return}n0.handleRpc(X,W,Z).then((K)=>{N0(X,{type:"browser_rpc_result",requestId:Z.requestId,ok:!0,result:K})},(K)=>{N0(X,{type:"browser_rpc_result",requestId:Z.requestId,ok:!1,error:K instanceof Error?K.message:String(K)})})},onHttpRequest:(X,W)=>R1?n0.handleHttpRequest(X,W):!1,onHttpUpgrade:(X,W,Z)=>R1?n0.handleUpgrade(X,W,Z):!1,onWarmupRun:(X,W,Z)=>{(async()=>{if(await a2(),!C1)return{status:"retryable",error:"agent host is not ready"};return b3({cardId:W.cardId,boardId:W.boardId,userId:Z,frontendSessionId:X})})().then((K)=>{if(!W.warmupId)return;N0(X,{type:"warmup_result",warmupId:W.warmupId,cardId:W.cardId,...K})})},onDisconnect:(X,W)=>{n0.closeFrontendSession(X),B3(X);for(let Z of W)h2(Z);G("bridge.frontend_disconnected",{frontendSessionId:X,activeRuns:W.length}),r2(X).catch((Z)=>{console.warn(`[ideawave-cli] failed to evict sessions for ${X}:`,Z instanceof Error?Z.message:String(Z))}),console.log(`[ideawave-cli] browser session ${X} disconnected`)}});n0.setPort(I0.port);console.log(`[ideawave-cli] browser bridge listening on ${I0.url}`);console.log("[ideawave-cli] waiting for ideawave.app browser sessions…");var K8=!1;for(let X of["SIGINT","SIGTERM"])process.once(X,()=>{if(K8)return;K8=!0,L3(),(async()=>{await n0.close(),await M3(),await I0?.close().catch(()=>{return}),process.exit(0)})()});
|