@midscene/android-playground 0.26.0 → 0.26.1
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.
|
@@ -720,7 +720,7 @@ finished(content='xxx') # Use escape characters \\', \\", and \\n in content par
|
|
|
720
720
|
- Write a small plan and finally summarize your next action (with its target element) in one sentence in \`Thought\` part.
|
|
721
721
|
|
|
722
722
|
## User Instruction
|
|
723
|
-
`+n,o=await Z([{role:"user",content:a},...r],1),s=function(t){let r=/<bbox>(\d+)\s+(\d+)\s+(\d+)\s+(\d+)<\/bbox>/g;function n(t,r,n,i,a){let o=Number.parseInt(r,10),s=Number.parseInt(n,10),l=Number.parseInt(i,10),u=Number.parseInt(a,10);return`(${Math.floor((o+l)/2)},${Math.floor((s+u)/2)})`}return t.replace(/\[EOS\]/g,"").replace(r,n).trim()}(o.content),u=l.uiTarsModelVersion.call(void 0),{parsed:c}=es.actionParser.call(void 0,{prediction:s,factor:[1e3,1e3],screenContext:{width:i.width,height:i.height},modelVer:u||void 0});el("modelVer",u,"parsed",JSON.stringify(c));let h=[];if(c.forEach(t=>{if("click"===t.action_type){d.assert.call(void 0,t.action_inputs.start_box,"start_box is required");let r=ed(t.action_inputs.start_box,i);h.push({type:"Locate",param:{},locate:{prompt:t.thought||"",bbox:eu({x:r[0],y:r[1]},i.width,i.height)}}),h.push({type:"Tap",locate:{prompt:t.thought||"",bbox:eu({x:r[0],y:r[1]},i.width,i.height)},param:t.thought||""})}else if("drag"===t.action_type){d.assert.call(void 0,t.action_inputs.start_box,"start_box is required"),d.assert.call(void 0,t.action_inputs.end_box,"end_box is required");let r=ed(t.action_inputs.start_box,i),n=ed(t.action_inputs.end_box,i);h.push({type:"Drag",param:{start_box:{x:r[0],y:r[1]},end_box:{x:n[0],y:n[1]}},locate:null,thought:t.thought||""})}else if("type"===t.action_type)h.push({type:"Input",param:{value:t.action_inputs.content},locate:null,thought:t.thought||""});else if("scroll"===t.action_type)h.push({type:"Scroll",param:{direction:t.action_inputs.direction},locate:null,thought:t.thought||""});else if("finished"===t.action_type)h.push({type:"Finished",param:{},locate:null,thought:t.thought||""});else if("hotkey"===t.action_type)if(t.action_inputs.key){let r=eo.transformHotkeyInput.call(void 0,t.action_inputs.key);h.push({type:"KeyboardPress",param:{value:r},locate:null,thought:t.thought||""})}else import_console_browserify.default.warn("No key found in action: hotkey. Will not perform action.");else if("wait"===t.action_type)h.push({type:"Sleep",param:{timeMs:1e3},locate:null,thought:t.thought||""});else if("androidBackButton"===t.action_type)h.push({type:"AndroidBackButton",param:{},locate:null,thought:t.thought||""});else if("androidHomeButton"===t.action_type)h.push({type:"AndroidHomeButton",param:{},locate:null,thought:t.thought||""});else if("androidRecentAppsButton"===t.action_type)h.push({type:"AndroidRecentAppsButton",param:{}});else if("androidLongPress"===t.action_type){d.assert.call(void 0,t.action_inputs.start_coords,"start_coords is required for androidLongPress");let r=t.action_inputs.start_coords;h.push({type:"AndroidLongPress",param:{x:r[0],y:r[1],duration:1e3},locate:null,thought:t.thought||""})}else if("androidPull"===t.action_type){let r=t.action_inputs.direction||"down",n=t.action_inputs.start_coords?{x:t.action_inputs.start_coords[0],y:t.action_inputs.start_coords[1]}:void 0;h.push({type:"AndroidPull",param:{direction:r,startPoint:n,distance:t.action_inputs.distance,duration:t.action_inputs.duration||500},locate:null,thought:t.thought||""})}}),0===h.length)throw Error(`No actions found, response: ${o.content}`,{cause:{prediction:o.content,parsed:c}});return{actions:h,actionsFromModel:c,action_summary:o.content.replace(/Reflection:[\s\S]*?(?=Action_Summary:|Action:|$)/g,"").trim(),usage:o.usage,rawResponse:JSON.stringify(o.content,void 0,2)}},t.resizeImageForUiTars=async function(t,r){if("vlm-ui-tars"===l.vlLocateMode.call(void 0)&&l.uiTarsModelVersion.call(void 0)===l.UITarsModelVersion.V1_5){el("ui-tars-v1.5, will check image size",r);let n=r.width*r.height,i=0xc40000;if(n>0xc40000){let a=Math.sqrt(i/n),o=Math.floor(r.width*a),s=Math.floor(r.height*a);return el("resize image for ui-tars, new width: %s, new height: %s",o,s),await y.resizeImgBase64.call(void 0,t,{width:o,height:s})}}return t}}}),require_ai_model=__commonJS({"../core/dist/lib/ai-model.js"(t){init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var r=require_chunk_I5LBWOQA();t.AIActionType=r.AIActionType,t.AiAssert=r.AiAssert,t.AiExtractElementInfo=r.AiExtractElementInfo,t.AiLocateElement=r.AiLocateElement,t.AiLocateSection=r.AiLocateSection,t.adaptBboxToRect=r.adaptBboxToRect,t.callAi=r.call,t.callAiFn=r.callAiFn,t.callAiFnWithStringResponse=r.callAiFnWithStringResponse,t.callToGetJSONObject=r.callToGetJSONObject,t.describeUserPage=r.describeUserPage,t.elementByPositionWithElementInfo=r.elementByPositionWithElementInfo,t.generatePlaywrightTest=r.generatePlaywrightTest,t.generatePlaywrightTestStream=r.generatePlaywrightTestStream,t.generateYamlTest=r.generateYamlTest,t.generateYamlTestStream=r.generateYamlTestStream,t.plan=r.plan,t.resizeImageForUiTars=r.resizeImageForUiTars,t.systemPromptToLocateElement=r.systemPromptToLocateElement,t.vlmPlanning=r.vlmPlanning}}),require_child_process=__commonJS({"../../node_modules/.pnpm/@modern-js+plugin-module-node-polyfill@2.60.6_@modern-js+module-tools@2.60.6_typescript@5.8.3_/node_modules/@modern-js/plugin-module-node-polyfill/dist/mock/child_process.js"(t,r){init_globals(),r.exports={}}}),require_common6=__commonJS({"../shared/dist/lib/common.js"(t,r){let n,i,a;init_globals();var o,s=Object.create,l=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,c=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,f=(t,r,n,i)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let a of d(r))h.call(t,a)||a===n||l(t,a,{get:()=>r[a],enumerable:!(i=u(r,a))||i.enumerable});return t},p={};((t,r)=>{for(var n in r)l(t,n,{get:r[n],enumerable:!0})})(p,{defaultRunDirName:()=>es,getMidsceneRunBaseDir:()=>eu,getMidsceneRunDir:()=>el,getMidsceneRunSubDir:()=>ed}),o=p,r.exports=f(l({},"__esModule",{value:!0}),o);var m=require_fs(),g=require_browser3(),b=(a=null!=(n=require_path_browserify())?s(c(n)):{},f(!i&&n&&n.__esModule?a:l(a,"default",{value:n,enumerable:!0}),n)),y="MIDSCENE_OPENAI_INIT_CONFIG_JSON",_="MIDSCENE_MODEL_NAME",v="MIDSCENE_LANGSMITH_DEBUG",A="MIDSCENE_DEBUG_AI_PROFILE",w="MIDSCENE_DEBUG_AI_RESPONSE",x="MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG",E="MIDSCENE_DEBUG_MODE",S="MIDSCENE_MCP_USE_PUPPETEER_MODE",C="MIDSCENE_MCP_ANDROID_MODE",I="MIDSCENE_FORCE_DEEP_THINK",T="MIDSCENE_OPENAI_SOCKS_PROXY",k="MIDSCENE_OPENAI_HTTP_PROXY",P="OPENAI_API_KEY",R="OPENAI_BASE_URL",O="OPENAI_MAX_TOKENS",M="MIDSCENE_ADB_PATH",j="MIDSCENE_ADB_REMOTE_HOST",N="MIDSCENE_ADB_REMOTE_PORT",B="MIDSCENE_ANDROID_IME_STRATEGY",L="MIDSCENE_CACHE",D="MIDSCENE_USE_VLM_UI_TARS",U="MIDSCENE_USE_QWEN_VL",F="MIDSCENE_USE_DOUBAO_VISION",z="MIDSCENE_USE_GEMINI",G="MIDSCENE_USE_VL_MODEL",H="MATCH_BY_POSITION",q="MIDSCENE_REPORT_TAG_NAME",V="MIDSCENE_REPLANNING_CYCLE_LIMIT",W="MIDSCENE_PREFERRED_LANGUAGE",$="MIDSCENE_USE_AZURE_OPENAI",K="MIDSCENE_AZURE_OPENAI_SCOPE",Z="MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON",X="MIDSCENE_CACHE_MAX_FILENAME_LENGTH",Y="AZURE_OPENAI_ENDPOINT",J="AZURE_OPENAI_KEY",Q="AZURE_OPENAI_API_VERSION",ee="AZURE_OPENAI_DEPLOYMENT",et="MIDSCENE_USE_ANTHROPIC_SDK",er="ANTHROPIC_API_KEY",en="MIDSCENE_RUN_DIR",ei="OPENAI_USE_AZURE",ea=()=>(globalThis.midsceneGlobalConfig||(globalThis.midsceneGlobalConfig={[C]:import_browser.default.env[C]||void 0,[y]:import_browser.default.env[y]||void 0,[_]:import_browser.default.env[_]||void 0,[E]:import_browser.default.env[E]||void 0,[I]:import_browser.default.env[I]||void 0,[v]:import_browser.default.env[v]||void 0,[A]:import_browser.default.env[A]||void 0,[w]:import_browser.default.env[w]||void 0,[x]:import_browser.default.env[x]||void 0,[P]:import_browser.default.env[P]||void 0,[R]:import_browser.default.env[R]||void 0,[O]:import_browser.default.env[O]||void 0,[ei]:import_browser.default.env[ei]||void 0,[M]:import_browser.default.env[M]||void 0,[j]:import_browser.default.env[j]||void 0,[N]:import_browser.default.env[N]||void 0,[B]:import_browser.default.env[B]||void 0,[L]:import_browser.default.env[L]||void 0,[H]:import_browser.default.env[H]||void 0,[q]:import_browser.default.env[q]||void 0,[T]:import_browser.default.env[T]||void 0,[k]:import_browser.default.env[k]||void 0,[$]:import_browser.default.env[$]||void 0,[K]:import_browser.default.env[K]||void 0,[Z]:import_browser.default.env[Z]||void 0,[et]:import_browser.default.env[et]||void 0,[D]:import_browser.default.env[D]||void 0,[U]:import_browser.default.env[U]||void 0,[F]:import_browser.default.env[F]||void 0,[z]:import_browser.default.env[z]||void 0,[G]:import_browser.default.env[G]||void 0,[er]:import_browser.default.env[er]||void 0,[Y]:import_browser.default.env[Y]||void 0,[J]:import_browser.default.env[J]||void 0,[Q]:import_browser.default.env[Q]||void 0,[ee]:import_browser.default.env[ee]||void 0,[S]:import_browser.default.env[S]||void 0,[en]:import_browser.default.env[en]||void 0,[W]:import_browser.default.env[W]||void 0,[V]:import_browser.default.env[V]||void 0,[X]:import_browser.default.env[X]||void 0}),globalThis.midsceneGlobalConfig),eo=(require_sha2562(),void 0!==import_browser.default&&import_browser.default.versions?.node),es="midscene_run",el=()=>eo?(t=>{if(t===H)throw Error("MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead");let r=ea()[t];return"string"==typeof r?r.trim():r})(en)||es:"",eu=()=>{if(!eo)return"";let t=b.default.resolve(import_browser.default.cwd(),el());if(!(0,m.existsSync)(t))try{(0,m.mkdirSync)(t,{recursive:!0})}catch(r){t=b.default.join((0,g.tmpdir)(),es),(0,m.mkdirSync)(t,{recursive:!0})}return t},ed=t=>{if(!eo)return"";let r=eu(),n=b.default.join(r,t);return(0,m.existsSync)(n)||(0,m.mkdirSync)(n,{recursive:!0}),n}}}),require_fs2=__commonJS({"../shared/dist/lib/fs.js"(t,r){init_globals();var n,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,l={};((t,r)=>{for(var n in r)i(t,n,{get:r[n],enumerable:!0})})(l,{findNearestPackageJson:()=>m,getElementInfosScriptContent:()=>g,getExtraReturnLogic:()=>b,getRunningPkgInfo:()=>p}),n=l,r.exports=((t,r,n,l)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let u of o(r))s.call(t,u)||u===n||i(t,u,{get:()=>r[u],enumerable:!(l=a(r,u))||l.enumerable});return t})(i({},"__esModule",{value:!0}),n);var u=require_fs(),d=require_path_browserify(),c=(require_sha2562(),"undefined"!=typeof window),h="undefined"!=typeof WorkerGlobalScope,f=(void 0!==import_browser.default&&import_browser.default.versions,{});function p(t){if(c||h)return null;let r=t||import_browser.default.cwd();if(f[r])return f[r];let n=m(r),i=n?(0,d.join)(n,"package.json"):null;if(n&&i){let{name:t,version:a}=JSON.parse((0,u.readFileSync)(i,"utf-8"));return f[r]={name:t||"midscene-unknown-package-name",version:a||"0.0.0",dir:n},f[r]}return{name:"midscene-unknown-package-name",version:"0.0.0",dir:r}}function m(t){let r=(0,d.join)(t,"package.json");if((0,u.existsSync)(r))return t;let n=(0,d.dirname)(t);return n===t?null:m(n)}function g(){return'"use strict";\nvar midscene_element_inspector = (() => {\n var __create = Object.create;\n var __defProp = Object.defineProperty;\n var __defProps = Object.defineProperties;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropDescs = Object.getOwnPropertyDescriptors;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __getOwnPropSymbols = Object.getOwnPropertySymbols;\n var __getProtoOf = Object.getPrototypeOf;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __propIsEnum = Object.prototype.propertyIsEnumerable;\n var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n var __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n };\n var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n };\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. "__esModule" has not been set), then set\n // "default" to the CommonJS "module.exports" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,\n mod\n ));\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // resolve-false:/empty-stub\n var require_empty_stub = __commonJS({\n "resolve-false:/empty-stub"(exports, module) {\n "use strict";\n module.exports = {};\n }\n });\n\n // ../../node_modules/.pnpm/js-sha256@0.11.0/node_modules/js-sha256/src/sha256.js\n var require_sha256 = __commonJS({\n "../../node_modules/.pnpm/js-sha256@0.11.0/node_modules/js-sha256/src/sha256.js"(exports, module) {\n "use strict";\n (function() {\n "use strict";\n var ERROR = "input is invalid type";\n var WINDOW = typeof window === "object";\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === "object";\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === "object" && module.exports;\n var AMD = typeof define === "function" && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined";\n var HEX_CHARS = "0123456789abcdef".split("");\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 1116352408,\n 1899447441,\n 3049323471,\n 3921009573,\n 961987163,\n 1508970993,\n 2453635748,\n 2870763221,\n 3624381080,\n 310598401,\n 607225278,\n 1426881987,\n 1925078388,\n 2162078206,\n 2614888103,\n 3248222580,\n 3835390401,\n 4022224774,\n 264347078,\n 604807628,\n 770255983,\n 1249150122,\n 1555081692,\n 1996064986,\n 2554220882,\n 2821834349,\n 2952996808,\n 3210313671,\n 3336571891,\n 3584528711,\n 113926993,\n 338241895,\n 666307205,\n 773529912,\n 1294757372,\n 1396182291,\n 1695183700,\n 1986661051,\n 2177026350,\n 2456956037,\n 2730485921,\n 2820302411,\n 3259730800,\n 3345764771,\n 3516065817,\n 3600352804,\n 4094571909,\n 275423344,\n 430227734,\n 506948616,\n 659060556,\n 883997877,\n 958139571,\n 1322822218,\n 1537002063,\n 1747873779,\n 1955562222,\n 2024104815,\n 2227730452,\n 2361852424,\n 2428436474,\n 2756734187,\n 3204031479,\n 3329325298\n ];\n var OUTPUT_TYPES = ["hex", "array", "digest", "arrayBuffer"];\n var blocks = [];\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function(obj) {\n return Object.prototype.toString.call(obj) === "[object Array]";\n };\n }\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function(obj) {\n return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n var createOutputMethod = function(outputType, is224) {\n return function(message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n var createMethod = function(is224) {\n var method = createOutputMethod("hex", is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function() {\n return new Sha256(is224);\n };\n method.update = function(message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n var nodeWrap = function(method, is224) {\n var crypto = require_empty_stub();\n var Buffer2 = require_empty_stub().Buffer;\n var algorithm = is224 ? "sha224" : "sha256";\n var bufferFrom;\n if (Buffer2.from && !root.JS_SHA256_NO_BUFFER_FROM) {\n bufferFrom = Buffer2.from;\n } else {\n bufferFrom = function(message) {\n return new Buffer2(message);\n };\n }\n var nodeMethod = function(message) {\n if (typeof message === "string") {\n return crypto.createHash(algorithm).update(message, "utf8").digest("hex");\n } else {\n if (message === null || message === void 0) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer2) {\n return crypto.createHash(algorithm).update(bufferFrom(message)).digest("hex");\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n var createHmacOutputMethod = function(outputType, is224) {\n return function(key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n var createHmacMethod = function(is224) {\n var method = createHmacOutputMethod("hex", is224);\n method.create = function(key) {\n return new HmacSha256(key, is224);\n };\n method.update = function(key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n if (is224) {\n this.h0 = 3238371032;\n this.h1 = 914150663;\n this.h2 = 812702999;\n this.h3 = 4144912697;\n this.h4 = 4290775857;\n this.h5 = 1750603025;\n this.h6 = 1694076839;\n this.h7 = 3204075428;\n } else {\n this.h0 = 1779033703;\n this.h1 = 3144134277;\n this.h2 = 1013904242;\n this.h3 = 2773480762;\n this.h4 = 1359893119;\n this.h5 = 2600822924;\n this.h6 = 528734635;\n this.h7 = 1541459225;\n }\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n Sha256.prototype.update = function(message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== "string") {\n if (type === "object") {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks2 = this.blocks;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks2[0] = this.block;\n this.block = blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;\n }\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks2[i >>> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 128) {\n blocks2[i >>> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 2048) {\n blocks2[i >>> 2] |= (192 | code >>> 6) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n } else if (code < 55296 || code >= 57344) {\n blocks2[i >>> 2] |= (224 | code >>> 12) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n } else {\n code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);\n blocks2[i >>> 2] |= (240 | code >>> 18) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 12 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks2[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n Sha256.prototype.finalize = function() {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks2 = this.blocks, i = this.lastByteIndex;\n blocks2[16] = this.block;\n blocks2[i >>> 2] |= EXTRA[i & 3];\n this.block = blocks2[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks2[0] = this.block;\n blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;\n }\n blocks2[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks2[15] = this.bytes << 3;\n this.hash();\n };\n Sha256.prototype.hash = function() {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6, h = this.h7, blocks2 = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n for (j = 16; j < 64; ++j) {\n t1 = blocks2[j - 15];\n s0 = (t1 >>> 7 | t1 << 25) ^ (t1 >>> 18 | t1 << 14) ^ t1 >>> 3;\n t1 = blocks2[j - 2];\n s1 = (t1 >>> 17 | t1 << 15) ^ (t1 >>> 19 | t1 << 13) ^ t1 >>> 10;\n blocks2[j] = blocks2[j - 16] + s0 + blocks2[j - 7] + s1 << 0;\n }\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks2[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks2[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = (a >>> 2 | a << 30) ^ (a >>> 13 | a << 19) ^ (a >>> 22 | a << 10);\n s1 = (e >>> 6 | e << 26) ^ (e >>> 11 | e << 21) ^ (e >>> 25 | e << 7);\n ab = a & b;\n maj = ab ^ a & c ^ bc;\n ch = e & f ^ ~e & g;\n t1 = h + s1 + ch + K[j] + blocks2[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = (d >>> 2 | d << 30) ^ (d >>> 13 | d << 19) ^ (d >>> 22 | d << 10);\n s1 = (h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7);\n da = d & a;\n maj = da ^ d & b ^ ab;\n ch = h & e ^ ~h & f;\n t1 = g + s1 + ch + K[j + 1] + blocks2[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = (c >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10);\n s1 = (g >>> 6 | g << 26) ^ (g >>> 11 | g << 21) ^ (g >>> 25 | g << 7);\n cd = c & d;\n maj = cd ^ c & a ^ da;\n ch = g & h ^ ~g & e;\n t1 = f + s1 + ch + K[j + 2] + blocks2[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = (b >>> 2 | b << 30) ^ (b >>> 13 | b << 19) ^ (b >>> 22 | b << 10);\n s1 = (f >>> 6 | f << 26) ^ (f >>> 11 | f << 21) ^ (f >>> 25 | f << 7);\n bc = b & c;\n maj = bc ^ b & d ^ cd;\n ch = f & g ^ ~f & h;\n t1 = e + s1 + ch + K[j + 3] + blocks2[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n this.chromeBugWorkAround = true;\n }\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n Sha256.prototype.hex = function() {\n this.finalize();\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7;\n var hex = HEX_CHARS[h0 >>> 28 & 15] + HEX_CHARS[h0 >>> 24 & 15] + HEX_CHARS[h0 >>> 20 & 15] + HEX_CHARS[h0 >>> 16 & 15] + HEX_CHARS[h0 >>> 12 & 15] + HEX_CHARS[h0 >>> 8 & 15] + HEX_CHARS[h0 >>> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h1 >>> 28 & 15] + HEX_CHARS[h1 >>> 24 & 15] + HEX_CHARS[h1 >>> 20 & 15] + HEX_CHARS[h1 >>> 16 & 15] + HEX_CHARS[h1 >>> 12 & 15] + HEX_CHARS[h1 >>> 8 & 15] + HEX_CHARS[h1 >>> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h2 >>> 28 & 15] + HEX_CHARS[h2 >>> 24 & 15] + HEX_CHARS[h2 >>> 20 & 15] + HEX_CHARS[h2 >>> 16 & 15] + HEX_CHARS[h2 >>> 12 & 15] + HEX_CHARS[h2 >>> 8 & 15] + HEX_CHARS[h2 >>> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h3 >>> 28 & 15] + HEX_CHARS[h3 >>> 24 & 15] + HEX_CHARS[h3 >>> 20 & 15] + HEX_CHARS[h3 >>> 16 & 15] + HEX_CHARS[h3 >>> 12 & 15] + HEX_CHARS[h3 >>> 8 & 15] + HEX_CHARS[h3 >>> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h4 >>> 28 & 15] + HEX_CHARS[h4 >>> 24 & 15] + HEX_CHARS[h4 >>> 20 & 15] + HEX_CHARS[h4 >>> 16 & 15] + HEX_CHARS[h4 >>> 12 & 15] + HEX_CHARS[h4 >>> 8 & 15] + HEX_CHARS[h4 >>> 4 & 15] + HEX_CHARS[h4 & 15] + HEX_CHARS[h5 >>> 28 & 15] + HEX_CHARS[h5 >>> 24 & 15] + HEX_CHARS[h5 >>> 20 & 15] + HEX_CHARS[h5 >>> 16 & 15] + HEX_CHARS[h5 >>> 12 & 15] + HEX_CHARS[h5 >>> 8 & 15] + HEX_CHARS[h5 >>> 4 & 15] + HEX_CHARS[h5 & 15] + HEX_CHARS[h6 >>> 28 & 15] + HEX_CHARS[h6 >>> 24 & 15] + HEX_CHARS[h6 >>> 20 & 15] + HEX_CHARS[h6 >>> 16 & 15] + HEX_CHARS[h6 >>> 12 & 15] + HEX_CHARS[h6 >>> 8 & 15] + HEX_CHARS[h6 >>> 4 & 15] + HEX_CHARS[h6 & 15];\n if (!this.is224) {\n hex += HEX_CHARS[h7 >>> 28 & 15] + HEX_CHARS[h7 >>> 24 & 15] + HEX_CHARS[h7 >>> 20 & 15] + HEX_CHARS[h7 >>> 16 & 15] + HEX_CHARS[h7 >>> 12 & 15] + HEX_CHARS[h7 >>> 8 & 15] + HEX_CHARS[h7 >>> 4 & 15] + HEX_CHARS[h7 & 15];\n }\n return hex;\n };\n Sha256.prototype.toString = Sha256.prototype.hex;\n Sha256.prototype.digest = function() {\n this.finalize();\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7;\n var arr = [\n h0 >>> 24 & 255,\n h0 >>> 16 & 255,\n h0 >>> 8 & 255,\n h0 & 255,\n h1 >>> 24 & 255,\n h1 >>> 16 & 255,\n h1 >>> 8 & 255,\n h1 & 255,\n h2 >>> 24 & 255,\n h2 >>> 16 & 255,\n h2 >>> 8 & 255,\n h2 & 255,\n h3 >>> 24 & 255,\n h3 >>> 16 & 255,\n h3 >>> 8 & 255,\n h3 & 255,\n h4 >>> 24 & 255,\n h4 >>> 16 & 255,\n h4 >>> 8 & 255,\n h4 & 255,\n h5 >>> 24 & 255,\n h5 >>> 16 & 255,\n h5 >>> 8 & 255,\n h5 & 255,\n h6 >>> 24 & 255,\n h6 >>> 16 & 255,\n h6 >>> 8 & 255,\n h6 & 255\n ];\n if (!this.is224) {\n arr.push(h7 >>> 24 & 255, h7 >>> 16 & 255, h7 >>> 8 & 255, h7 & 255);\n }\n return arr;\n };\n Sha256.prototype.array = Sha256.prototype.digest;\n Sha256.prototype.arrayBuffer = function() {\n this.finalize();\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === "string") {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 128) {\n bytes[index++] = code;\n } else if (code < 2048) {\n bytes[index++] = 192 | code >>> 6;\n bytes[index++] = 128 | code & 63;\n } else if (code < 55296 || code >= 57344) {\n bytes[index++] = 224 | code >>> 12;\n bytes[index++] = 128 | code >>> 6 & 63;\n bytes[index++] = 128 | code & 63;\n } else {\n code = 65536 + ((code & 1023) << 10 | key.charCodeAt(++i) & 1023);\n bytes[index++] = 240 | code >>> 18;\n bytes[index++] = 128 | code >>> 12 & 63;\n bytes[index++] = 128 | code >>> 6 & 63;\n bytes[index++] = 128 | code & 63;\n }\n }\n key = bytes;\n } else {\n if (type === "object") {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n if (key.length > 64) {\n key = new Sha256(is224, true).update(key).array();\n }\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 92 ^ b;\n iKeyPad[i] = 54 ^ b;\n }\n Sha256.call(this, is224, sharedMemory);\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n HmacSha256.prototype.finalize = function() {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n var exports2 = createMethod();\n exports2.sha256 = exports2;\n exports2.sha224 = createMethod(true);\n exports2.sha256.hmac = createHmacMethod();\n exports2.sha224.hmac = createHmacMethod(true);\n if (COMMON_JS) {\n module.exports = exports2;\n } else {\n root.sha256 = exports2.sha256;\n root.sha224 = exports2.sha224;\n if (AMD) {\n define(function() {\n return exports2;\n });\n }\n }\n })();\n }\n });\n\n // src/extractor/index.ts\n var extractor_exports = {};\n __export(extractor_exports, {\n descriptionOfTree: () => descriptionOfTree,\n generateElementByPosition: () => generateElementByPosition,\n getElementInfoByXpath: () => getElementInfoByXpath,\n getElementXpath: () => getElementXpath,\n getNodeFromCacheList: () => getNodeFromCacheList,\n getNodeInfoByXpath: () => getNodeInfoByXpath,\n getXpathsById: () => getXpathsById,\n getXpathsByPoint: () => getXpathsByPoint,\n isNotContainerElement: () => isNotContainerElement,\n setNodeHashCacheListOnWindow: () => setNodeHashCacheListOnWindow,\n traverseTree: () => traverseTree,\n treeToList: () => treeToList,\n trimAttributes: () => trimAttributes,\n truncateText: () => truncateText,\n webExtractNodeTree: () => extractTreeNode,\n webExtractNodeTreeAsString: () => extractTreeNodeAsString,\n webExtractTextWithPosition: () => extractTextWithPosition\n });\n\n // src/extractor/tree.ts\n function truncateText(text, maxLength = 150) {\n if (typeof text === "undefined") {\n return "";\n }\n if (typeof text === "object") {\n text = JSON.stringify(text);\n }\n if (typeof text === "number") {\n return text.toString();\n }\n if (typeof text === "string" && text.length > maxLength) {\n return `${text.slice(0, maxLength)}...`;\n }\n if (typeof text === "string") {\n return text.trim();\n }\n return "";\n }\n function trimAttributes(attributes, truncateTextLength) {\n const tailorAttributes = Object.keys(attributes).reduce(\n (res, currentKey) => {\n const attributeVal = attributes[currentKey];\n if (currentKey === "style" || currentKey === "htmlTagName" || currentKey === "nodeType") {\n return res;\n }\n res[currentKey] = truncateText(attributeVal, truncateTextLength);\n return res;\n },\n {}\n );\n return tailorAttributes;\n }\n var nodeSizeThreshold = 4;\n function descriptionOfTree(tree, truncateTextLength, filterNonTextContent = false, visibleOnly = true) {\n const attributesString = (kv) => {\n return Object.entries(kv).map(\n ([key, value]) => `${key}="${truncateText(value, truncateTextLength)}"`\n ).join(" ");\n };\n function buildContentTree(node, indent = 0, visibleOnly2 = true) {\n var _a2;\n let before = "";\n let contentWithIndent = "";\n let after = "";\n let emptyNode = true;\n const indentStr = " ".repeat(indent);\n let children = "";\n for (let i = 0; i < (node.children || []).length; i++) {\n const childContent = buildContentTree(\n node.children[i],\n indent + 1,\n visibleOnly2\n );\n if (childContent) {\n children += `\n${childContent}`;\n }\n }\n if (node.node && node.node.rect.width > nodeSizeThreshold && node.node.rect.height > nodeSizeThreshold && (!filterNonTextContent || filterNonTextContent && node.node.content) && (!visibleOnly2 || visibleOnly2 && node.node.isVisible)) {\n emptyNode = false;\n let nodeTypeString;\n if ((_a2 = node.node.attributes) == null ? void 0 : _a2.htmlTagName) {\n nodeTypeString = node.node.attributes.htmlTagName.replace(/[<>]/g, "");\n } else {\n nodeTypeString = node.node.attributes.nodeType.replace(/\\sNode$/, "").toLowerCase();\n }\n const markerId = node.node.indexId;\n const markerIdString = markerId ? `markerId="${markerId}"` : "";\n const rectAttribute = node.node.rect ? {\n left: node.node.rect.left,\n top: node.node.rect.top,\n width: node.node.rect.width,\n height: node.node.rect.height\n } : {};\n before = `<${nodeTypeString} id="${node.node.id}" ${markerIdString} ${attributesString(trimAttributes(node.node.attributes || {}, truncateTextLength))} ${attributesString(rectAttribute)}>`;\n const content = truncateText(node.node.content, truncateTextLength);\n contentWithIndent = content ? `\n${indentStr} ${content}` : "";\n after = `</${nodeTypeString}>`;\n } else if (!filterNonTextContent) {\n if (!children.trim().startsWith("<>")) {\n before = "<>";\n contentWithIndent = "";\n after = "</>";\n }\n }\n if (emptyNode && !children.trim()) {\n return "";\n }\n const result2 = `${indentStr}${before}${contentWithIndent}${children}\n${indentStr}${after}`;\n if (result2.trim()) {\n return result2;\n }\n return "";\n }\n const result = buildContentTree(tree, 0, visibleOnly);\n return result.replace(/^\\s*\\n/gm, "");\n }\n function treeToList(tree) {\n const result = [];\n function dfs(node) {\n if (node.node) {\n result.push(node.node);\n }\n for (const child of node.children) {\n dfs(child);\n }\n }\n dfs(tree);\n return result;\n }\n function traverseTree(tree, onNode) {\n function dfs(node) {\n if (node.node) {\n node.node = onNode(node.node);\n }\n for (const child of node.children) {\n dfs(child);\n }\n }\n dfs(tree);\n return tree;\n }\n\n // src/constants/index.ts\n var CONTAINER_MINI_HEIGHT = 3;\n var CONTAINER_MINI_WIDTH = 3;\n\n // src/utils.ts\n var import_js_sha256 = __toESM(require_sha256());\n var _a;\n var ifInNode = typeof process !== "undefined" && ((_a = process.versions) == null ? void 0 : _a.node);\n var hashMap = {};\n function generateHashId(rect, content = "") {\n const combined = JSON.stringify({\n content,\n rect\n });\n let sliceLength = 5;\n let slicedHash = "";\n const hashHex = import_js_sha256.sha256.create().update(combined).hex();\n const toLetters = (hex) => {\n return hex.split("").map((char) => {\n const code = Number.parseInt(char, 16);\n return String.fromCharCode(97 + code % 26);\n }).join("");\n };\n const hashLetters = toLetters(hashHex);\n while (sliceLength < hashLetters.length - 1) {\n slicedHash = hashLetters.slice(0, sliceLength);\n if (hashMap[slicedHash] && hashMap[slicedHash] !== combined) {\n sliceLength++;\n continue;\n }\n hashMap[slicedHash] = combined;\n break;\n }\n return slicedHash;\n }\n\n // src/extractor/dom-util.ts\n function isFormElement(node) {\n return node instanceof HTMLElement && (node.tagName.toLowerCase() === "input" || node.tagName.toLowerCase() === "textarea" || node.tagName.toLowerCase() === "select" || node.tagName.toLowerCase() === "option");\n }\n function isButtonElement(node) {\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "button";\n }\n function isAElement(node) {\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "a";\n }\n function isSvgElement(node) {\n return node instanceof SVGElement;\n }\n function isImgElement(node) {\n if (!includeBaseElement(node) && node instanceof Element) {\n const computedStyle = window.getComputedStyle(node);\n const backgroundImage = computedStyle.getPropertyValue("background-image");\n if (backgroundImage !== "none") {\n return true;\n }\n }\n if (isIconfont(node)) {\n return true;\n }\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "img" || node instanceof SVGElement && node.tagName.toLowerCase() === "svg";\n }\n function isIconfont(node) {\n if (node instanceof Element) {\n const computedStyle = window.getComputedStyle(node);\n const fontFamilyValue = computedStyle.fontFamily || "";\n return fontFamilyValue.toLowerCase().indexOf("iconfont") >= 0;\n }\n return false;\n }\n function isNotContainerElement(node) {\n return isTextElement(node) || isIconfont(node) || isImgElement(node) || isButtonElement(node) || isAElement(node) || isFormElement(node);\n }\n function isTextElement(node) {\n var _a2, _b, _c;\n if (node instanceof Element) {\n if (((_a2 = node == null ? void 0 : node.childNodes) == null ? void 0 : _a2.length) === 1 && (node == null ? void 0 : node.childNodes[0]) instanceof Text) {\n return true;\n }\n }\n return ((_c = (_b = node.nodeName) == null ? void 0 : _b.toLowerCase) == null ? void 0 : _c.call(_b)) === "#text" && !isIconfont(node);\n }\n function isContainerElement(node) {\n if (!(node instanceof HTMLElement))\n return false;\n if (includeBaseElement(node)) {\n return false;\n }\n const computedStyle = window.getComputedStyle(node);\n const backgroundColor = computedStyle.getPropertyValue("background-color");\n if (backgroundColor) {\n return true;\n }\n return false;\n }\n function includeBaseElement(node) {\n if (!(node instanceof HTMLElement))\n return false;\n if (node.innerText) {\n return true;\n }\n const includeList = [\n "svg",\n "button",\n "input",\n "textarea",\n "select",\n "option",\n "img",\n "a"\n ];\n for (const tagName of includeList) {\n const element = node.querySelectorAll(tagName);\n if (element.length > 0) {\n return true;\n }\n }\n return false;\n }\n function generateElementByPosition(position) {\n const rect = {\n left: Math.max(position.x - 4, 0),\n top: Math.max(position.y - 4, 0),\n width: 8,\n height: 8\n };\n const id = generateHashId(rect);\n const element = {\n id,\n attributes: { nodeType: "POSITION Node" /* POSITION */ },\n rect,\n content: "",\n center: [position.x, position.y]\n };\n return element;\n }\n\n // src/extractor/util.ts\n var MAX_VALUE_LENGTH = 300;\n var debugMode = false;\n function setDebugMode(mode) {\n debugMode = mode;\n }\n function logger(..._msg) {\n if (!debugMode) {\n return;\n }\n console.log(..._msg);\n }\n function isElementPartiallyInViewport(rect, currentWindow, currentDocument, visibleAreaRatio = 2 / 3) {\n const elementHeight = rect.height;\n const elementWidth = rect.width;\n const viewportRect = {\n left: 0,\n top: 0,\n width: currentWindow.innerWidth || currentDocument.documentElement.clientWidth,\n height: currentWindow.innerHeight || currentDocument.documentElement.clientHeight,\n right: currentWindow.innerWidth || currentDocument.documentElement.clientWidth,\n bottom: currentWindow.innerHeight || currentDocument.documentElement.clientHeight,\n x: 0,\n y: 0,\n zoom: 1\n };\n const overlapRect = overlappedRect(rect, viewportRect);\n if (!overlapRect) {\n return false;\n }\n const visibleArea = overlapRect.width * overlapRect.height;\n const totalArea = elementHeight * elementWidth;\n return visibleArea / totalArea >= visibleAreaRatio;\n }\n function getPseudoElementContent(element, currentWindow) {\n if (!(element instanceof currentWindow.HTMLElement)) {\n return { before: "", after: "" };\n }\n const beforeContent = currentWindow.getComputedStyle(element, "::before").getPropertyValue("content");\n const afterContent = currentWindow.getComputedStyle(element, "::after").getPropertyValue("content");\n return {\n before: beforeContent === "none" ? "" : beforeContent.replace(/"/g, ""),\n after: afterContent === "none" ? "" : afterContent.replace(/"/g, "")\n };\n }\n function overlappedRect(rect1, rect2) {\n const left = Math.max(rect1.left, rect2.left);\n const top = Math.max(rect1.top, rect2.top);\n const right = Math.min(rect1.right, rect2.right);\n const bottom = Math.min(rect1.bottom, rect2.bottom);\n if (left < right && top < bottom) {\n return {\n left,\n top,\n right,\n bottom,\n width: right - left,\n height: bottom - top,\n x: left,\n y: top,\n zoom: 1\n };\n }\n return null;\n }\n function getRect(el, baseZoom, currentWindow) {\n let originalRect;\n let newZoom = 1;\n if (!(el instanceof currentWindow.HTMLElement)) {\n const range = currentWindow.document.createRange();\n range.selectNodeContents(el);\n originalRect = range.getBoundingClientRect();\n } else {\n originalRect = el.getBoundingClientRect();\n if (!("currentCSSZoom" in el)) {\n newZoom = Number.parseFloat(currentWindow.getComputedStyle(el).zoom) || 1;\n }\n }\n const zoom = newZoom * baseZoom;\n return {\n width: originalRect.width * zoom,\n height: originalRect.height * zoom,\n left: originalRect.left * zoom,\n top: originalRect.top * zoom,\n right: originalRect.right * zoom,\n bottom: originalRect.bottom * zoom,\n x: originalRect.x * zoom,\n y: originalRect.y * zoom,\n zoom\n };\n }\n var isElementCovered = (el, rect, currentWindow) => {\n const x = rect.left + rect.width / 2;\n const y = rect.top + rect.height / 2;\n const topElement = currentWindow.document.elementFromPoint(x, y);\n if (!topElement) {\n return false;\n }\n if (topElement === el) {\n return false;\n }\n if (el == null ? void 0 : el.contains(topElement)) {\n return false;\n }\n if (topElement == null ? void 0 : topElement.contains(el)) {\n return false;\n }\n const rectOfTopElement = getRect(topElement, 1, currentWindow);\n const overlapRect = overlappedRect(rect, rectOfTopElement);\n if (!overlapRect) {\n return false;\n }\n logger(el, "Element is covered by another element", {\n topElement,\n el,\n rect,\n x,\n y\n });\n return true;\n };\n function elementRect(el, currentWindow, currentDocument, baseZoom = 1) {\n if (!el) {\n logger(el, "Element is not in the DOM hierarchy");\n return false;\n }\n if (!(el instanceof currentWindow.HTMLElement) && el.nodeType !== Node.TEXT_NODE && el.nodeName.toLowerCase() !== "svg") {\n logger(el, "Element is not in the DOM hierarchy");\n return false;\n }\n if (el instanceof currentWindow.HTMLElement) {\n const style = currentWindow.getComputedStyle(el);\n if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" && el.tagName !== "INPUT") {\n logger(el, "Element is hidden");\n return false;\n }\n }\n const rect = getRect(el, baseZoom, currentWindow);\n if (rect.width === 0 && rect.height === 0) {\n logger(el, "Element has no size");\n return false;\n }\n if (baseZoom === 1 && isElementCovered(el, rect, currentWindow)) {\n return false;\n }\n const isVisible = isElementPartiallyInViewport(\n rect,\n currentWindow,\n currentDocument\n );\n let parent = el;\n const parentUntilNonStatic = (currentNode) => {\n let parent2 = currentNode == null ? void 0 : currentNode.parentElement;\n while (parent2) {\n const style = currentWindow.getComputedStyle(parent2);\n if (style.position !== "static") {\n return parent2;\n }\n parent2 = parent2.parentElement;\n }\n return null;\n };\n while (parent && parent !== currentDocument.body) {\n if (!(parent instanceof currentWindow.HTMLElement)) {\n parent = parent.parentElement;\n continue;\n }\n const parentStyle = currentWindow.getComputedStyle(parent);\n if (parentStyle.overflow === "hidden") {\n const parentRect = getRect(parent, 1, currentWindow);\n const tolerance = 10;\n if (rect.right < parentRect.left - tolerance || rect.left > parentRect.right + tolerance || rect.bottom < parentRect.top - tolerance || rect.top > parentRect.bottom + tolerance) {\n logger(el, "element is partially or totally hidden by an ancestor", {\n rect,\n parentRect\n });\n return false;\n }\n }\n if (parentStyle.position === "fixed" || parentStyle.position === "sticky") {\n break;\n }\n if (parentStyle.position === "absolute") {\n parent = parentUntilNonStatic(parent);\n } else {\n parent = parent.parentElement;\n }\n }\n return {\n left: Math.round(rect.left),\n top: Math.round(rect.top),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n zoom: rect.zoom,\n isVisible\n };\n }\n function getNodeAttributes(node, currentWindow) {\n if (!node || !(node instanceof currentWindow.HTMLElement) || !node.attributes) {\n return {};\n }\n const attributesList = Array.from(node.attributes).map((attr) => {\n if (attr.name === "class") {\n return [attr.name, `.${attr.value.split(" ").join(".")}`];\n }\n if (!attr.value) {\n return [];\n }\n let value = attr.value;\n if (value.startsWith("data:image")) {\n value = "image";\n }\n if (value.length > MAX_VALUE_LENGTH) {\n value = `${value.slice(0, MAX_VALUE_LENGTH)}...`;\n }\n return [attr.name, value];\n });\n return Object.fromEntries(attributesList);\n }\n function midsceneGenerateHash(node, content, rect) {\n const slicedHash = generateHashId(rect, content);\n if (node) {\n if (!window.midsceneNodeHashCacheList) {\n setNodeHashCacheListOnWindow();\n }\n setNodeToCacheList(node, slicedHash);\n }\n return slicedHash;\n }\n function setNodeHashCacheListOnWindow() {\n if (typeof window !== "undefined") {\n window.midsceneNodeHashCacheList = [];\n }\n }\n function setNodeToCacheList(node, id) {\n var _a2;\n if (typeof window !== "undefined") {\n if (getNodeFromCacheList(id)) {\n return;\n }\n (_a2 = window.midsceneNodeHashCacheList) == null ? void 0 : _a2.push({ node, id });\n }\n }\n function getNodeFromCacheList(id) {\n var _a2, _b;\n if (typeof window !== "undefined") {\n return (_b = (_a2 = window.midsceneNodeHashCacheList) == null ? void 0 : _a2.find(\n (item) => item.id === id\n )) == null ? void 0 : _b.node;\n }\n return null;\n }\n function getTopDocument() {\n const container = document.body || document;\n return container;\n }\n\n // src/extractor/web-extractor.ts\n var indexId = 0;\n function tagNameOfNode(node) {\n var _a2, _b;\n let tagName = "";\n if (node instanceof HTMLElement) {\n tagName = (_a2 = node.tagName) == null ? void 0 : _a2.toLowerCase();\n } else {\n const parentElement = node.parentElement;\n if (parentElement && parentElement instanceof HTMLElement) {\n tagName = (_b = parentElement.tagName) == null ? void 0 : _b.toLowerCase();\n }\n }\n return tagName ? `<${tagName}>` : "";\n }\n function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1, basePoint = { left: 0, top: 0 }, isContainer = false) {\n var _a2, _b;\n const rect = elementRect(node, currentWindow, currentDocument, baseZoom);\n if (!rect) {\n return null;\n }\n if (rect.width < CONTAINER_MINI_WIDTH || rect.height < CONTAINER_MINI_HEIGHT) {\n return null;\n }\n if (basePoint.left !== 0 || basePoint.top !== 0) {\n rect.left += basePoint.left;\n rect.top += basePoint.top;\n }\n if (rect.height >= window.innerHeight && rect.width >= window.innerWidth) {\n return null;\n }\n if (isFormElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n let valueContent = attributes.value || attributes.placeholder || node.textContent || "";\n const nodeHashId = midsceneGenerateHash(node, valueContent, rect);\n const tagName = node.tagName.toLowerCase();\n if (node.tagName.toLowerCase() === "select") {\n const selectedOption = node.options[node.selectedIndex];\n valueContent = (selectedOption == null ? void 0 : selectedOption.textContent) || "";\n }\n if ((node.tagName.toLowerCase() === "input" || node.tagName.toLowerCase() === "textarea") && node.value) {\n valueContent = node.value;\n }\n const elementInfo = {\n id: nodeHashId,\n nodeHashId,\n nodeType: "FORM_ITEM Node" /* FORM_ITEM */,\n indexId: indexId++,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: `<${tagName}>`,\n nodeType: "FORM_ITEM Node" /* FORM_ITEM */\n }),\n content: valueContent.trim(),\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isButtonElement(node)) {\n const rect2 = mergeElementAndChildrenRects(\n node,\n currentWindow,\n currentDocument,\n baseZoom\n );\n if (!rect2) {\n return null;\n }\n const attributes = getNodeAttributes(node, currentWindow);\n const pseudo = getPseudoElementContent(node, currentWindow);\n const content = node.innerText || pseudo.before || pseudo.after || "";\n const nodeHashId = midsceneGenerateHash(node, content, rect2);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "BUTTON Node" /* BUTTON */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: tagNameOfNode(node),\n nodeType: "BUTTON Node" /* BUTTON */\n }),\n content,\n rect: rect2,\n center: [\n Math.round(rect2.left + rect2.width / 2),\n Math.round(rect2.top + rect2.height / 2)\n ],\n zoom: rect2.zoom,\n isVisible: rect2.isVisible\n };\n return elementInfo;\n }\n if (isImgElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n const nodeHashId = midsceneGenerateHash(node, "", rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n attributes: __spreadProps(__spreadValues(__spreadValues({}, attributes), ((_a2 = node.nodeName) == null ? void 0 : _a2.toLowerCase()) === "svg" ? {\n svgContent: "true"\n } : {}), {\n nodeType: "IMG Node" /* IMG */,\n htmlTagName: tagNameOfNode(node)\n }),\n nodeType: "IMG Node" /* IMG */,\n content: "",\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isTextElement(node)) {\n const text = (_b = node.textContent) == null ? void 0 : _b.trim().replace(/\\n+/g, " ");\n if (!text) {\n return null;\n }\n const attributes = getNodeAttributes(node, currentWindow);\n const attributeKeys = Object.keys(attributes);\n if (!text.trim() && attributeKeys.length === 0) {\n return null;\n }\n const nodeHashId = midsceneGenerateHash(node, text, rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "TEXT Node" /* TEXT */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n nodeType: "TEXT Node" /* TEXT */,\n htmlTagName: tagNameOfNode(node)\n }),\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n content: text,\n rect,\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isAElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n const pseudo = getPseudoElementContent(node, currentWindow);\n const content = node.innerText || pseudo.before || pseudo.after || "";\n const nodeHashId = midsceneGenerateHash(node, content, rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "Anchor Node" /* A */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: tagNameOfNode(node),\n nodeType: "Anchor Node" /* A */\n }),\n content,\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isContainerElement(node) || isContainer) {\n const attributes = getNodeAttributes(node, currentWindow);\n const nodeHashId = midsceneGenerateHash(node, "", rect);\n const elementInfo = {\n id: nodeHashId,\n nodeHashId,\n indexId: indexId++,\n nodeType: "CONTAINER Node" /* CONTAINER */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n nodeType: "CONTAINER Node" /* CONTAINER */,\n htmlTagName: tagNameOfNode(node)\n }),\n content: "",\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n return null;\n }\n function extractTextWithPosition(initNode, debugMode2 = false) {\n const elementNode = extractTreeNode(initNode, debugMode2);\n const elementInfoArray = [];\n function dfsTopChildren(node) {\n if (node.node) {\n elementInfoArray.push(node.node);\n }\n for (let i = 0; i < node.children.length; i++) {\n dfsTopChildren(node.children[i]);\n }\n }\n dfsTopChildren({ children: elementNode.children, node: elementNode.node });\n return elementInfoArray;\n }\n function extractTreeNodeAsString(initNode, visibleOnly = false, debugMode2 = false) {\n const elementNode = extractTreeNode(initNode, debugMode2);\n return descriptionOfTree(elementNode, void 0, false, visibleOnly);\n }\n function extractTreeNode(initNode, debugMode2 = false) {\n setDebugMode(debugMode2);\n indexId = 0;\n const topDocument = getTopDocument();\n const startNode = initNode || topDocument;\n const topChildren = [];\n function dfs(node, currentWindow, currentDocument, baseZoom = 1, basePoint = { left: 0, top: 0 }) {\n if (!node) {\n return null;\n }\n if (node.nodeType && node.nodeType === 10) {\n return null;\n }\n const elementInfo = collectElementInfo(\n node,\n currentWindow,\n currentDocument,\n baseZoom,\n basePoint\n );\n if (node instanceof currentWindow.HTMLIFrameElement) {\n if (node.contentWindow && node.contentWindow) {\n return null;\n }\n }\n const nodeInfo = {\n node: elementInfo,\n children: []\n };\n if ((elementInfo == null ? void 0 : elementInfo.nodeType) === "BUTTON Node" /* BUTTON */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "IMG Node" /* IMG */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "TEXT Node" /* TEXT */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "FORM_ITEM Node" /* FORM_ITEM */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "CONTAINER Node" /* CONTAINER */) {\n return nodeInfo;\n }\n const rect = getRect(node, baseZoom, currentWindow);\n for (let i = 0; i < node.childNodes.length; i++) {\n logger("will dfs", node.childNodes[i]);\n const childNodeInfo = dfs(\n node.childNodes[i],\n currentWindow,\n currentDocument,\n rect.zoom,\n basePoint\n );\n if (Array.isArray(childNodeInfo)) {\n nodeInfo.children.push(...childNodeInfo);\n } else if (childNodeInfo) {\n nodeInfo.children.push(childNodeInfo);\n }\n }\n if (nodeInfo.node === null) {\n if (nodeInfo.children.length === 0) {\n return null;\n }\n return nodeInfo.children;\n }\n return nodeInfo;\n }\n const rootNodeInfo = dfs(startNode, window, document, 1, {\n left: 0,\n top: 0\n });\n if (Array.isArray(rootNodeInfo)) {\n topChildren.push(...rootNodeInfo);\n } else if (rootNodeInfo) {\n topChildren.push(rootNodeInfo);\n }\n if (startNode === topDocument) {\n const iframes = document.querySelectorAll("iframe");\n for (let i = 0; i < iframes.length; i++) {\n const iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentWindow) {\n const iframeInfo = collectElementInfo(iframe, window, document, 1);\n if (iframeInfo) {\n const iframeChildren = dfs(\n iframe.contentDocument.body,\n iframe.contentWindow,\n iframe.contentDocument,\n 1,\n {\n left: iframeInfo.rect.left,\n top: iframeInfo.rect.top\n }\n );\n if (Array.isArray(iframeChildren)) {\n topChildren.push(...iframeChildren);\n } else if (iframeChildren) {\n topChildren.push(iframeChildren);\n }\n }\n }\n }\n }\n return {\n node: null,\n children: topChildren\n };\n }\n function mergeElementAndChildrenRects(node, currentWindow, currentDocument, baseZoom = 1) {\n const selfRect = elementRect(node, currentWindow, currentDocument, baseZoom);\n if (!selfRect)\n return null;\n let minLeft = selfRect.left;\n let minTop = selfRect.top;\n let maxRight = selfRect.left + selfRect.width;\n let maxBottom = selfRect.top + selfRect.height;\n function traverse(child) {\n for (let i = 0; i < child.childNodes.length; i++) {\n const sub = child.childNodes[i];\n if (sub.nodeType === 1) {\n const rect = elementRect(sub, currentWindow, currentDocument, baseZoom);\n if (rect) {\n minLeft = Math.min(minLeft, rect.left);\n minTop = Math.min(minTop, rect.top);\n maxRight = Math.max(maxRight, rect.left + rect.width);\n maxBottom = Math.max(maxBottom, rect.top + rect.height);\n }\n traverse(sub);\n }\n }\n }\n traverse(node);\n return __spreadProps(__spreadValues({}, selfRect), {\n left: minLeft,\n top: minTop,\n width: maxRight - minLeft,\n height: maxBottom - minTop\n });\n }\n\n // src/extractor/locator.ts\n var getElementXpathIndex = (element) => {\n let index = 1;\n let prev = element.previousElementSibling;\n while (prev) {\n if (prev.nodeName.toLowerCase() === element.nodeName.toLowerCase()) {\n index++;\n }\n prev = prev.previousElementSibling;\n }\n return index;\n };\n var normalizeXpathText = (text) => {\n if (typeof text !== "string") {\n return "";\n }\n return text.replace(/\\s+/g, " ").trim();\n };\n var buildCurrentElementXpath = (element, isOrderSensitive, isLeafElement) => {\n var _a2;\n const parentPath = element.parentNode ? getElementXpath(element.parentNode, isOrderSensitive) : "";\n const prefix = parentPath ? `${parentPath}/` : "/";\n const tagName = element.nodeName.toLowerCase();\n const textContent = (_a2 = element.textContent) == null ? void 0 : _a2.trim();\n if (isOrderSensitive) {\n const index2 = getElementXpathIndex(element);\n return `${prefix}${tagName}[${index2}]`;\n }\n if (isLeafElement && textContent) {\n return `${prefix}${tagName}[normalize-space()="${normalizeXpathText(textContent)}"]`;\n }\n const index = getElementXpathIndex(element);\n return `${prefix}${tagName}[${index}]`;\n };\n var getElementXpath = (element, isOrderSensitive = false, isLeafElement = false) => {\n var _a2;\n if (element.nodeType === Node.TEXT_NODE) {\n const parentNode = element.parentNode;\n if (parentNode && parentNode.nodeType === Node.ELEMENT_NODE) {\n const parentXPath = getElementXpath(parentNode, isOrderSensitive, true);\n const textContent = (_a2 = element.textContent) == null ? void 0 : _a2.trim();\n if (textContent) {\n return `${parentXPath}/text()[normalize-space()="${normalizeXpathText(textContent)}"]`;\n }\n return `${parentXPath}/text()`;\n }\n return "";\n }\n if (element.nodeType !== Node.ELEMENT_NODE)\n return "";\n const el = element;\n if (el === document.documentElement)\n return "/html";\n if (el === document.body)\n return "/html/body";\n if (isSvgElement(el)) {\n let parent = el.parentNode;\n while (parent && parent.nodeType === Node.ELEMENT_NODE) {\n if (!isSvgElement(parent)) {\n return getElementXpath(parent, isOrderSensitive, isLeafElement);\n }\n parent = parent.parentNode;\n }\n return getElementXpath(el.parentNode, isOrderSensitive, isLeafElement);\n }\n return buildCurrentElementXpath(el, isOrderSensitive, isLeafElement);\n };\n function getXpathsById(id) {\n const node = getNodeFromCacheList(id);\n if (!node) {\n return null;\n }\n const fullXPath = getElementXpath(node, false, true);\n return [fullXPath];\n }\n function getXpathsByPoint(point, isOrderSensitive) {\n const element = document.elementFromPoint(point.left, point.top);\n if (!element) {\n return null;\n }\n const fullXPath = getElementXpath(element, isOrderSensitive, true);\n return [fullXPath];\n }\n function getNodeInfoByXpath(xpath) {\n const xpathResult = document.evaluate(\n xpath,\n document,\n null,\n XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,\n null\n );\n if (xpathResult.snapshotLength !== 1) {\n return null;\n }\n const node = xpathResult.snapshotItem(0);\n return node;\n }\n function getElementInfoByXpath(xpath) {\n const node = getNodeInfoByXpath(xpath);\n if (!node) {\n return null;\n }\n if (node instanceof HTMLElement) {\n const rect = getRect(node, 1, window);\n const isVisible = isElementPartiallyInViewport(rect, window, document, 1);\n if (!isVisible) {\n node.scrollIntoView({ behavior: "instant", block: "center" });\n }\n }\n return collectElementInfo(\n node,\n window,\n document,\n 1,\n {\n left: 0,\n top: 0\n },\n true\n );\n }\n return __toCommonJS(extractor_exports);\n})();\n/*! Bundled license information:\n\njs-sha256/src/sha256.js:\n (**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.11.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2024\n * @license MIT\n *)\n*/\n'}async function b(t=!1){if(c||h)return null;let r=`${g()}midscene_element_inspector.setNodeHashCacheListOnWindow();`;return t?`${r}midscene_element_inspector.webExtractNodeTree()`:`${r}midscene_element_inspector.webExtractTextWithPosition()`}}}),require_chunk_NBFEZEAH=__commonJS({"../core/dist/lib/chunk-NBFEZEAH.js"(t){function r(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r.default=t,r}function n(t){let r,n=t[0],i=1;for(;i<t.length;){let a=t[i],o=t[i+1];if(i+=2,("optionalAccess"===a||"optionalCall"===a)&&null==n)return;"access"===a||"optionalAccess"===a?(r=n,n=o(n)):"call"!==a&&"optionalCall"!==a||(n=o((...t)=>n.call(r,...t)),r=void 0)}return n}init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var i=require_child_process(),a=require_fs(),o=r(a),s=require_browser3(),l=require_path_browserify(),u=r(l),d=require_common6(),c=require_env(),h=require_fs2(),f=require_utils5(),p=!1,m=new Map;function g(t,r){let n="</html>",i=o.statSync(t),a=Math.min(i.size,4096),s=Math.max(0,i.size-a),l=Buffer.alloc(i.size-s),u=o.openSync(t,"r");o.readSync(u,l,0,l.length,s),o.closeSync(u);let d=l.toString("utf8"),c=d.lastIndexOf(n);if(-1===c)throw Error(`No </html> found in file:${t}`);let h=d.slice(0,c),f=s+Buffer.byteLength(h,"utf8");o.truncateSync(t,f),o.appendFileSync(t,`${r}
|
|
723
|
+
`+n,o=await Z([{role:"user",content:a},...r],1),s=function(t){let r=/<bbox>(\d+)\s+(\d+)\s+(\d+)\s+(\d+)<\/bbox>/g;function n(t,r,n,i,a){let o=Number.parseInt(r,10),s=Number.parseInt(n,10),l=Number.parseInt(i,10),u=Number.parseInt(a,10);return`(${Math.floor((o+l)/2)},${Math.floor((s+u)/2)})`}return t.replace(/\[EOS\]/g,"").replace(r,n).trim()}(o.content),u=l.uiTarsModelVersion.call(void 0),{parsed:c}=es.actionParser.call(void 0,{prediction:s,factor:[1e3,1e3],screenContext:{width:i.width,height:i.height},modelVer:u||void 0});el("modelVer",u,"parsed",JSON.stringify(c));let h=[];if(c.forEach(t=>{if("click"===t.action_type){d.assert.call(void 0,t.action_inputs.start_box,"start_box is required");let r=ed(t.action_inputs.start_box,i);h.push({type:"Locate",param:{},locate:{prompt:t.thought||"",bbox:eu({x:r[0],y:r[1]},i.width,i.height)}}),h.push({type:"Tap",locate:{prompt:t.thought||"",bbox:eu({x:r[0],y:r[1]},i.width,i.height)},param:t.thought||""})}else if("drag"===t.action_type){d.assert.call(void 0,t.action_inputs.start_box,"start_box is required"),d.assert.call(void 0,t.action_inputs.end_box,"end_box is required");let r=ed(t.action_inputs.start_box,i),n=ed(t.action_inputs.end_box,i);h.push({type:"Drag",param:{start_box:{x:r[0],y:r[1]},end_box:{x:n[0],y:n[1]}},locate:null,thought:t.thought||""})}else if("type"===t.action_type)h.push({type:"Input",param:{value:t.action_inputs.content},locate:null,thought:t.thought||""});else if("scroll"===t.action_type)h.push({type:"Scroll",param:{direction:t.action_inputs.direction},locate:null,thought:t.thought||""});else if("finished"===t.action_type)h.push({type:"Finished",param:{},locate:null,thought:t.thought||""});else if("hotkey"===t.action_type)if(t.action_inputs.key){let r=eo.transformHotkeyInput.call(void 0,t.action_inputs.key);h.push({type:"KeyboardPress",param:{value:r},locate:null,thought:t.thought||""})}else import_console_browserify.default.warn("No key found in action: hotkey. Will not perform action.");else if("wait"===t.action_type)h.push({type:"Sleep",param:{timeMs:1e3},locate:null,thought:t.thought||""});else if("androidBackButton"===t.action_type)h.push({type:"AndroidBackButton",param:{},locate:null,thought:t.thought||""});else if("androidHomeButton"===t.action_type)h.push({type:"AndroidHomeButton",param:{},locate:null,thought:t.thought||""});else if("androidRecentAppsButton"===t.action_type)h.push({type:"AndroidRecentAppsButton",param:{}});else if("androidLongPress"===t.action_type){d.assert.call(void 0,t.action_inputs.start_coords,"start_coords is required for androidLongPress");let r=t.action_inputs.start_coords;h.push({type:"AndroidLongPress",param:{x:r[0],y:r[1],duration:1e3},locate:null,thought:t.thought||""})}else if("androidPull"===t.action_type){let r=t.action_inputs.direction||"down",n=t.action_inputs.start_coords?{x:t.action_inputs.start_coords[0],y:t.action_inputs.start_coords[1]}:void 0;h.push({type:"AndroidPull",param:{direction:r,startPoint:n,distance:t.action_inputs.distance,duration:t.action_inputs.duration||500},locate:null,thought:t.thought||""})}}),0===h.length)throw Error(`No actions found, response: ${o.content}`,{cause:{prediction:o.content,parsed:c}});return{actions:h,actionsFromModel:c,action_summary:o.content.replace(/Reflection:[\s\S]*?(?=Action_Summary:|Action:|$)/g,"").trim(),usage:o.usage,rawResponse:JSON.stringify(o.content,void 0,2)}},t.resizeImageForUiTars=async function(t,r){if("vlm-ui-tars"===l.vlLocateMode.call(void 0)&&l.uiTarsModelVersion.call(void 0)===l.UITarsModelVersion.V1_5){el("ui-tars-v1.5, will check image size",r);let n=r.width*r.height,i=0xc40000;if(n>0xc40000){let a=Math.sqrt(i/n),o=Math.floor(r.width*a),s=Math.floor(r.height*a);return el("resize image for ui-tars, new width: %s, new height: %s",o,s),await y.resizeImgBase64.call(void 0,t,{width:o,height:s})}}return t}}}),require_ai_model=__commonJS({"../core/dist/lib/ai-model.js"(t){init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var r=require_chunk_I5LBWOQA();t.AIActionType=r.AIActionType,t.AiAssert=r.AiAssert,t.AiExtractElementInfo=r.AiExtractElementInfo,t.AiLocateElement=r.AiLocateElement,t.AiLocateSection=r.AiLocateSection,t.adaptBboxToRect=r.adaptBboxToRect,t.callAi=r.call,t.callAiFn=r.callAiFn,t.callAiFnWithStringResponse=r.callAiFnWithStringResponse,t.callToGetJSONObject=r.callToGetJSONObject,t.describeUserPage=r.describeUserPage,t.elementByPositionWithElementInfo=r.elementByPositionWithElementInfo,t.generatePlaywrightTest=r.generatePlaywrightTest,t.generatePlaywrightTestStream=r.generatePlaywrightTestStream,t.generateYamlTest=r.generateYamlTest,t.generateYamlTestStream=r.generateYamlTestStream,t.plan=r.plan,t.resizeImageForUiTars=r.resizeImageForUiTars,t.systemPromptToLocateElement=r.systemPromptToLocateElement,t.vlmPlanning=r.vlmPlanning}}),require_child_process=__commonJS({"../../node_modules/.pnpm/@modern-js+plugin-module-node-polyfill@2.60.6_@modern-js+module-tools@2.60.6_typescript@5.8.3_/node_modules/@modern-js/plugin-module-node-polyfill/dist/mock/child_process.js"(t,r){init_globals(),r.exports={}}}),require_common6=__commonJS({"../shared/dist/lib/common.js"(t,r){let n,i,a;init_globals();var o,s=Object.create,l=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d=Object.getOwnPropertyNames,c=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty,f=(t,r,n,i)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let a of d(r))h.call(t,a)||a===n||l(t,a,{get:()=>r[a],enumerable:!(i=u(r,a))||i.enumerable});return t},p={};((t,r)=>{for(var n in r)l(t,n,{get:r[n],enumerable:!0})})(p,{defaultRunDirName:()=>es,getMidsceneRunBaseDir:()=>eu,getMidsceneRunDir:()=>el,getMidsceneRunSubDir:()=>ed}),o=p,r.exports=f(l({},"__esModule",{value:!0}),o);var m=require_fs(),g=require_browser3(),b=(a=null!=(n=require_path_browserify())?s(c(n)):{},f(!i&&n&&n.__esModule?a:l(a,"default",{value:n,enumerable:!0}),n)),y="MIDSCENE_OPENAI_INIT_CONFIG_JSON",_="MIDSCENE_MODEL_NAME",v="MIDSCENE_LANGSMITH_DEBUG",A="MIDSCENE_DEBUG_AI_PROFILE",w="MIDSCENE_DEBUG_AI_RESPONSE",x="MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG",E="MIDSCENE_DEBUG_MODE",S="MIDSCENE_MCP_USE_PUPPETEER_MODE",C="MIDSCENE_MCP_ANDROID_MODE",I="MIDSCENE_FORCE_DEEP_THINK",T="MIDSCENE_OPENAI_SOCKS_PROXY",k="MIDSCENE_OPENAI_HTTP_PROXY",P="OPENAI_API_KEY",R="OPENAI_BASE_URL",O="OPENAI_MAX_TOKENS",M="MIDSCENE_ADB_PATH",j="MIDSCENE_ADB_REMOTE_HOST",N="MIDSCENE_ADB_REMOTE_PORT",B="MIDSCENE_ANDROID_IME_STRATEGY",L="MIDSCENE_CACHE",D="MIDSCENE_USE_VLM_UI_TARS",U="MIDSCENE_USE_QWEN_VL",F="MIDSCENE_USE_DOUBAO_VISION",z="MIDSCENE_USE_GEMINI",G="MIDSCENE_USE_VL_MODEL",H="MATCH_BY_POSITION",q="MIDSCENE_REPORT_TAG_NAME",V="MIDSCENE_REPLANNING_CYCLE_LIMIT",W="MIDSCENE_PREFERRED_LANGUAGE",$="MIDSCENE_USE_AZURE_OPENAI",K="MIDSCENE_AZURE_OPENAI_SCOPE",Z="MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON",X="MIDSCENE_CACHE_MAX_FILENAME_LENGTH",Y="AZURE_OPENAI_ENDPOINT",J="AZURE_OPENAI_KEY",Q="AZURE_OPENAI_API_VERSION",ee="AZURE_OPENAI_DEPLOYMENT",et="MIDSCENE_USE_ANTHROPIC_SDK",er="ANTHROPIC_API_KEY",en="MIDSCENE_RUN_DIR",ei="OPENAI_USE_AZURE",ea=()=>(globalThis.midsceneGlobalConfig||(globalThis.midsceneGlobalConfig={[C]:import_browser.default.env[C]||void 0,[y]:import_browser.default.env[y]||void 0,[_]:import_browser.default.env[_]||void 0,[E]:import_browser.default.env[E]||void 0,[I]:import_browser.default.env[I]||void 0,[v]:import_browser.default.env[v]||void 0,[A]:import_browser.default.env[A]||void 0,[w]:import_browser.default.env[w]||void 0,[x]:import_browser.default.env[x]||void 0,[P]:import_browser.default.env[P]||void 0,[R]:import_browser.default.env[R]||void 0,[O]:import_browser.default.env[O]||void 0,[ei]:import_browser.default.env[ei]||void 0,[M]:import_browser.default.env[M]||void 0,[j]:import_browser.default.env[j]||void 0,[N]:import_browser.default.env[N]||void 0,[B]:import_browser.default.env[B]||void 0,[L]:import_browser.default.env[L]||void 0,[H]:import_browser.default.env[H]||void 0,[q]:import_browser.default.env[q]||void 0,[T]:import_browser.default.env[T]||void 0,[k]:import_browser.default.env[k]||void 0,[$]:import_browser.default.env[$]||void 0,[K]:import_browser.default.env[K]||void 0,[Z]:import_browser.default.env[Z]||void 0,[et]:import_browser.default.env[et]||void 0,[D]:import_browser.default.env[D]||void 0,[U]:import_browser.default.env[U]||void 0,[F]:import_browser.default.env[F]||void 0,[z]:import_browser.default.env[z]||void 0,[G]:import_browser.default.env[G]||void 0,[er]:import_browser.default.env[er]||void 0,[Y]:import_browser.default.env[Y]||void 0,[J]:import_browser.default.env[J]||void 0,[Q]:import_browser.default.env[Q]||void 0,[ee]:import_browser.default.env[ee]||void 0,[S]:import_browser.default.env[S]||void 0,[en]:import_browser.default.env[en]||void 0,[W]:import_browser.default.env[W]||void 0,[V]:import_browser.default.env[V]||void 0,[X]:import_browser.default.env[X]||void 0}),globalThis.midsceneGlobalConfig),eo=(require_sha2562(),void 0!==import_browser.default&&import_browser.default.versions?.node),es="midscene_run",el=()=>eo?(t=>{if(t===H)throw Error("MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead");let r=ea()[t];return"string"==typeof r?r.trim():r})(en)||es:"",eu=()=>{if(!eo)return"";let t=b.default.resolve(import_browser.default.cwd(),el());if(!(0,m.existsSync)(t))try{(0,m.mkdirSync)(t,{recursive:!0})}catch(r){t=b.default.join((0,g.tmpdir)(),es),(0,m.mkdirSync)(t,{recursive:!0})}return t},ed=t=>{if(!eo)return"";let r=eu(),n=b.default.join(r,t);return(0,m.existsSync)(n)||(0,m.mkdirSync)(n,{recursive:!0}),n}}}),require_fs2=__commonJS({"../shared/dist/lib/fs.js"(t,r){init_globals();var n,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,l={};((t,r)=>{for(var n in r)i(t,n,{get:r[n],enumerable:!0})})(l,{findNearestPackageJson:()=>m,getElementInfosScriptContent:()=>g,getExtraReturnLogic:()=>b,getRunningPkgInfo:()=>p}),n=l,r.exports=((t,r,n,l)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let u of o(r))s.call(t,u)||u===n||i(t,u,{get:()=>r[u],enumerable:!(l=a(r,u))||l.enumerable});return t})(i({},"__esModule",{value:!0}),n);var u=require_fs(),d=require_path_browserify(),c=(require_sha2562(),"undefined"!=typeof window),h="undefined"!=typeof WorkerGlobalScope,f=(void 0!==import_browser.default&&import_browser.default.versions,{});function p(t){if(c||h)return null;let r=t||import_browser.default.cwd();if(f[r])return f[r];let n=m(r),i=n?(0,d.join)(n,"package.json"):null;if(n&&i){let{name:t,version:a}=JSON.parse((0,u.readFileSync)(i,"utf-8"));return f[r]={name:t||"midscene-unknown-package-name",version:a||"0.0.0",dir:n},f[r]}return{name:"midscene-unknown-package-name",version:"0.0.0",dir:r}}function m(t){let r=(0,d.join)(t,"package.json");if((0,u.existsSync)(r))return t;let n=(0,d.dirname)(t);return n===t?null:m(n)}function g(){return'"use strict";\nvar midscene_element_inspector = (() => {\n var __create = Object.create;\n var __defProp = Object.defineProperty;\n var __defProps = Object.defineProperties;\n var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n var __getOwnPropDescs = Object.getOwnPropertyDescriptors;\n var __getOwnPropNames = Object.getOwnPropertyNames;\n var __getOwnPropSymbols = Object.getOwnPropertySymbols;\n var __getProtoOf = Object.getPrototypeOf;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __propIsEnum = Object.prototype.propertyIsEnumerable;\n var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\n var __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n };\n var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n var __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n };\n var __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n };\n var __copyProps = (to, from, except, desc) => {\n if (from && typeof from === "object" || typeof from === "function") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n };\n var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. "__esModule" has not been set), then set\n // "default" to the CommonJS "module.exports" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,\n mod\n ));\n var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);\n\n // resolve-false:/empty-stub\n var require_empty_stub = __commonJS({\n "resolve-false:/empty-stub"(exports, module) {\n "use strict";\n module.exports = {};\n }\n });\n\n // ../../node_modules/.pnpm/js-sha256@0.11.0/node_modules/js-sha256/src/sha256.js\n var require_sha256 = __commonJS({\n "../../node_modules/.pnpm/js-sha256@0.11.0/node_modules/js-sha256/src/sha256.js"(exports, module) {\n "use strict";\n (function() {\n "use strict";\n var ERROR = "input is invalid type";\n var WINDOW = typeof window === "object";\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === "object";\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === "object" && module.exports;\n var AMD = typeof define === "function" && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined";\n var HEX_CHARS = "0123456789abcdef".split("");\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 1116352408,\n 1899447441,\n 3049323471,\n 3921009573,\n 961987163,\n 1508970993,\n 2453635748,\n 2870763221,\n 3624381080,\n 310598401,\n 607225278,\n 1426881987,\n 1925078388,\n 2162078206,\n 2614888103,\n 3248222580,\n 3835390401,\n 4022224774,\n 264347078,\n 604807628,\n 770255983,\n 1249150122,\n 1555081692,\n 1996064986,\n 2554220882,\n 2821834349,\n 2952996808,\n 3210313671,\n 3336571891,\n 3584528711,\n 113926993,\n 338241895,\n 666307205,\n 773529912,\n 1294757372,\n 1396182291,\n 1695183700,\n 1986661051,\n 2177026350,\n 2456956037,\n 2730485921,\n 2820302411,\n 3259730800,\n 3345764771,\n 3516065817,\n 3600352804,\n 4094571909,\n 275423344,\n 430227734,\n 506948616,\n 659060556,\n 883997877,\n 958139571,\n 1322822218,\n 1537002063,\n 1747873779,\n 1955562222,\n 2024104815,\n 2227730452,\n 2361852424,\n 2428436474,\n 2756734187,\n 3204031479,\n 3329325298\n ];\n var OUTPUT_TYPES = ["hex", "array", "digest", "arrayBuffer"];\n var blocks = [];\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function(obj) {\n return Object.prototype.toString.call(obj) === "[object Array]";\n };\n }\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function(obj) {\n return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n var createOutputMethod = function(outputType, is224) {\n return function(message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n var createMethod = function(is224) {\n var method = createOutputMethod("hex", is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function() {\n return new Sha256(is224);\n };\n method.update = function(message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n var nodeWrap = function(method, is224) {\n var crypto = require_empty_stub();\n var Buffer2 = require_empty_stub().Buffer;\n var algorithm = is224 ? "sha224" : "sha256";\n var bufferFrom;\n if (Buffer2.from && !root.JS_SHA256_NO_BUFFER_FROM) {\n bufferFrom = Buffer2.from;\n } else {\n bufferFrom = function(message) {\n return new Buffer2(message);\n };\n }\n var nodeMethod = function(message) {\n if (typeof message === "string") {\n return crypto.createHash(algorithm).update(message, "utf8").digest("hex");\n } else {\n if (message === null || message === void 0) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer2) {\n return crypto.createHash(algorithm).update(bufferFrom(message)).digest("hex");\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n var createHmacOutputMethod = function(outputType, is224) {\n return function(key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n var createHmacMethod = function(is224) {\n var method = createHmacOutputMethod("hex", is224);\n method.create = function(key) {\n return new HmacSha256(key, is224);\n };\n method.update = function(key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n if (is224) {\n this.h0 = 3238371032;\n this.h1 = 914150663;\n this.h2 = 812702999;\n this.h3 = 4144912697;\n this.h4 = 4290775857;\n this.h5 = 1750603025;\n this.h6 = 1694076839;\n this.h7 = 3204075428;\n } else {\n this.h0 = 1779033703;\n this.h1 = 3144134277;\n this.h2 = 1013904242;\n this.h3 = 2773480762;\n this.h4 = 1359893119;\n this.h5 = 2600822924;\n this.h6 = 528734635;\n this.h7 = 1541459225;\n }\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n Sha256.prototype.update = function(message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== "string") {\n if (type === "object") {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks2 = this.blocks;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks2[0] = this.block;\n this.block = blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;\n }\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks2[i >>> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 128) {\n blocks2[i >>> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 2048) {\n blocks2[i >>> 2] |= (192 | code >>> 6) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n } else if (code < 55296 || code >= 57344) {\n blocks2[i >>> 2] |= (224 | code >>> 12) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n } else {\n code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);\n blocks2[i >>> 2] |= (240 | code >>> 18) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 12 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];\n blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks2[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n Sha256.prototype.finalize = function() {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks2 = this.blocks, i = this.lastByteIndex;\n blocks2[16] = this.block;\n blocks2[i >>> 2] |= EXTRA[i & 3];\n this.block = blocks2[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks2[0] = this.block;\n blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;\n }\n blocks2[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks2[15] = this.bytes << 3;\n this.hash();\n };\n Sha256.prototype.hash = function() {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6, h = this.h7, blocks2 = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n for (j = 16; j < 64; ++j) {\n t1 = blocks2[j - 15];\n s0 = (t1 >>> 7 | t1 << 25) ^ (t1 >>> 18 | t1 << 14) ^ t1 >>> 3;\n t1 = blocks2[j - 2];\n s1 = (t1 >>> 17 | t1 << 15) ^ (t1 >>> 19 | t1 << 13) ^ t1 >>> 10;\n blocks2[j] = blocks2[j - 16] + s0 + blocks2[j - 7] + s1 << 0;\n }\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks2[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks2[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = (a >>> 2 | a << 30) ^ (a >>> 13 | a << 19) ^ (a >>> 22 | a << 10);\n s1 = (e >>> 6 | e << 26) ^ (e >>> 11 | e << 21) ^ (e >>> 25 | e << 7);\n ab = a & b;\n maj = ab ^ a & c ^ bc;\n ch = e & f ^ ~e & g;\n t1 = h + s1 + ch + K[j] + blocks2[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = (d >>> 2 | d << 30) ^ (d >>> 13 | d << 19) ^ (d >>> 22 | d << 10);\n s1 = (h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7);\n da = d & a;\n maj = da ^ d & b ^ ab;\n ch = h & e ^ ~h & f;\n t1 = g + s1 + ch + K[j + 1] + blocks2[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = (c >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10);\n s1 = (g >>> 6 | g << 26) ^ (g >>> 11 | g << 21) ^ (g >>> 25 | g << 7);\n cd = c & d;\n maj = cd ^ c & a ^ da;\n ch = g & h ^ ~g & e;\n t1 = f + s1 + ch + K[j + 2] + blocks2[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = (b >>> 2 | b << 30) ^ (b >>> 13 | b << 19) ^ (b >>> 22 | b << 10);\n s1 = (f >>> 6 | f << 26) ^ (f >>> 11 | f << 21) ^ (f >>> 25 | f << 7);\n bc = b & c;\n maj = bc ^ b & d ^ cd;\n ch = f & g ^ ~f & h;\n t1 = e + s1 + ch + K[j + 3] + blocks2[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n this.chromeBugWorkAround = true;\n }\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n Sha256.prototype.hex = function() {\n this.finalize();\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7;\n var hex = HEX_CHARS[h0 >>> 28 & 15] + HEX_CHARS[h0 >>> 24 & 15] + HEX_CHARS[h0 >>> 20 & 15] + HEX_CHARS[h0 >>> 16 & 15] + HEX_CHARS[h0 >>> 12 & 15] + HEX_CHARS[h0 >>> 8 & 15] + HEX_CHARS[h0 >>> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h1 >>> 28 & 15] + HEX_CHARS[h1 >>> 24 & 15] + HEX_CHARS[h1 >>> 20 & 15] + HEX_CHARS[h1 >>> 16 & 15] + HEX_CHARS[h1 >>> 12 & 15] + HEX_CHARS[h1 >>> 8 & 15] + HEX_CHARS[h1 >>> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h2 >>> 28 & 15] + HEX_CHARS[h2 >>> 24 & 15] + HEX_CHARS[h2 >>> 20 & 15] + HEX_CHARS[h2 >>> 16 & 15] + HEX_CHARS[h2 >>> 12 & 15] + HEX_CHARS[h2 >>> 8 & 15] + HEX_CHARS[h2 >>> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h3 >>> 28 & 15] + HEX_CHARS[h3 >>> 24 & 15] + HEX_CHARS[h3 >>> 20 & 15] + HEX_CHARS[h3 >>> 16 & 15] + HEX_CHARS[h3 >>> 12 & 15] + HEX_CHARS[h3 >>> 8 & 15] + HEX_CHARS[h3 >>> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h4 >>> 28 & 15] + HEX_CHARS[h4 >>> 24 & 15] + HEX_CHARS[h4 >>> 20 & 15] + HEX_CHARS[h4 >>> 16 & 15] + HEX_CHARS[h4 >>> 12 & 15] + HEX_CHARS[h4 >>> 8 & 15] + HEX_CHARS[h4 >>> 4 & 15] + HEX_CHARS[h4 & 15] + HEX_CHARS[h5 >>> 28 & 15] + HEX_CHARS[h5 >>> 24 & 15] + HEX_CHARS[h5 >>> 20 & 15] + HEX_CHARS[h5 >>> 16 & 15] + HEX_CHARS[h5 >>> 12 & 15] + HEX_CHARS[h5 >>> 8 & 15] + HEX_CHARS[h5 >>> 4 & 15] + HEX_CHARS[h5 & 15] + HEX_CHARS[h6 >>> 28 & 15] + HEX_CHARS[h6 >>> 24 & 15] + HEX_CHARS[h6 >>> 20 & 15] + HEX_CHARS[h6 >>> 16 & 15] + HEX_CHARS[h6 >>> 12 & 15] + HEX_CHARS[h6 >>> 8 & 15] + HEX_CHARS[h6 >>> 4 & 15] + HEX_CHARS[h6 & 15];\n if (!this.is224) {\n hex += HEX_CHARS[h7 >>> 28 & 15] + HEX_CHARS[h7 >>> 24 & 15] + HEX_CHARS[h7 >>> 20 & 15] + HEX_CHARS[h7 >>> 16 & 15] + HEX_CHARS[h7 >>> 12 & 15] + HEX_CHARS[h7 >>> 8 & 15] + HEX_CHARS[h7 >>> 4 & 15] + HEX_CHARS[h7 & 15];\n }\n return hex;\n };\n Sha256.prototype.toString = Sha256.prototype.hex;\n Sha256.prototype.digest = function() {\n this.finalize();\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5, h6 = this.h6, h7 = this.h7;\n var arr = [\n h0 >>> 24 & 255,\n h0 >>> 16 & 255,\n h0 >>> 8 & 255,\n h0 & 255,\n h1 >>> 24 & 255,\n h1 >>> 16 & 255,\n h1 >>> 8 & 255,\n h1 & 255,\n h2 >>> 24 & 255,\n h2 >>> 16 & 255,\n h2 >>> 8 & 255,\n h2 & 255,\n h3 >>> 24 & 255,\n h3 >>> 16 & 255,\n h3 >>> 8 & 255,\n h3 & 255,\n h4 >>> 24 & 255,\n h4 >>> 16 & 255,\n h4 >>> 8 & 255,\n h4 & 255,\n h5 >>> 24 & 255,\n h5 >>> 16 & 255,\n h5 >>> 8 & 255,\n h5 & 255,\n h6 >>> 24 & 255,\n h6 >>> 16 & 255,\n h6 >>> 8 & 255,\n h6 & 255\n ];\n if (!this.is224) {\n arr.push(h7 >>> 24 & 255, h7 >>> 16 & 255, h7 >>> 8 & 255, h7 & 255);\n }\n return arr;\n };\n Sha256.prototype.array = Sha256.prototype.digest;\n Sha256.prototype.arrayBuffer = function() {\n this.finalize();\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === "string") {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 128) {\n bytes[index++] = code;\n } else if (code < 2048) {\n bytes[index++] = 192 | code >>> 6;\n bytes[index++] = 128 | code & 63;\n } else if (code < 55296 || code >= 57344) {\n bytes[index++] = 224 | code >>> 12;\n bytes[index++] = 128 | code >>> 6 & 63;\n bytes[index++] = 128 | code & 63;\n } else {\n code = 65536 + ((code & 1023) << 10 | key.charCodeAt(++i) & 1023);\n bytes[index++] = 240 | code >>> 18;\n bytes[index++] = 128 | code >>> 12 & 63;\n bytes[index++] = 128 | code >>> 6 & 63;\n bytes[index++] = 128 | code & 63;\n }\n }\n key = bytes;\n } else {\n if (type === "object") {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n if (key.length > 64) {\n key = new Sha256(is224, true).update(key).array();\n }\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 92 ^ b;\n iKeyPad[i] = 54 ^ b;\n }\n Sha256.call(this, is224, sharedMemory);\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n HmacSha256.prototype.finalize = function() {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n var exports2 = createMethod();\n exports2.sha256 = exports2;\n exports2.sha224 = createMethod(true);\n exports2.sha256.hmac = createHmacMethod();\n exports2.sha224.hmac = createHmacMethod(true);\n if (COMMON_JS) {\n module.exports = exports2;\n } else {\n root.sha256 = exports2.sha256;\n root.sha224 = exports2.sha224;\n if (AMD) {\n define(function() {\n return exports2;\n });\n }\n }\n })();\n }\n });\n\n // src/extractor/index.ts\n var extractor_exports = {};\n __export(extractor_exports, {\n descriptionOfTree: () => descriptionOfTree,\n generateElementByPosition: () => generateElementByPosition,\n getElementInfoByXpath: () => getElementInfoByXpath,\n getElementXpath: () => getElementXpath,\n getNodeFromCacheList: () => getNodeFromCacheList,\n getNodeInfoByXpath: () => getNodeInfoByXpath,\n getXpathsById: () => getXpathsById,\n getXpathsByPoint: () => getXpathsByPoint,\n isNotContainerElement: () => isNotContainerElement,\n setNodeHashCacheListOnWindow: () => setNodeHashCacheListOnWindow,\n traverseTree: () => traverseTree,\n treeToList: () => treeToList,\n trimAttributes: () => trimAttributes,\n truncateText: () => truncateText,\n webExtractNodeTree: () => extractTreeNode,\n webExtractNodeTreeAsString: () => extractTreeNodeAsString,\n webExtractTextWithPosition: () => extractTextWithPosition\n });\n\n // src/extractor/tree.ts\n function truncateText(text, maxLength = 150) {\n if (typeof text === "undefined") {\n return "";\n }\n if (typeof text === "object") {\n text = JSON.stringify(text);\n }\n if (typeof text === "number") {\n return text.toString();\n }\n if (typeof text === "string" && text.length > maxLength) {\n return `${text.slice(0, maxLength)}...`;\n }\n if (typeof text === "string") {\n return text.trim();\n }\n return "";\n }\n function trimAttributes(attributes, truncateTextLength) {\n const tailorAttributes = Object.keys(attributes).reduce(\n (res, currentKey) => {\n const attributeVal = attributes[currentKey];\n if (currentKey === "style" || currentKey === "htmlTagName" || currentKey === "nodeType") {\n return res;\n }\n res[currentKey] = truncateText(attributeVal, truncateTextLength);\n return res;\n },\n {}\n );\n return tailorAttributes;\n }\n var nodeSizeThreshold = 4;\n function descriptionOfTree(tree, truncateTextLength, filterNonTextContent = false, visibleOnly = true) {\n const attributesString = (kv) => {\n return Object.entries(kv).map(\n ([key, value]) => `${key}="${truncateText(value, truncateTextLength)}"`\n ).join(" ");\n };\n function buildContentTree(node, indent = 0, visibleOnly2 = true) {\n var _a2;\n let before = "";\n let contentWithIndent = "";\n let after = "";\n let emptyNode = true;\n const indentStr = " ".repeat(indent);\n let children = "";\n for (let i = 0; i < (node.children || []).length; i++) {\n const childContent = buildContentTree(\n node.children[i],\n indent + 1,\n visibleOnly2\n );\n if (childContent) {\n children += `\n${childContent}`;\n }\n }\n if (node.node && node.node.rect.width > nodeSizeThreshold && node.node.rect.height > nodeSizeThreshold && (!filterNonTextContent || filterNonTextContent && node.node.content) && (!visibleOnly2 || visibleOnly2 && node.node.isVisible)) {\n emptyNode = false;\n let nodeTypeString;\n if ((_a2 = node.node.attributes) == null ? void 0 : _a2.htmlTagName) {\n nodeTypeString = node.node.attributes.htmlTagName.replace(/[<>]/g, "");\n } else {\n nodeTypeString = node.node.attributes.nodeType.replace(/\\sNode$/, "").toLowerCase();\n }\n const markerId = node.node.indexId;\n const markerIdString = markerId ? `markerId="${markerId}"` : "";\n const rectAttribute = node.node.rect ? {\n left: node.node.rect.left,\n top: node.node.rect.top,\n width: node.node.rect.width,\n height: node.node.rect.height\n } : {};\n before = `<${nodeTypeString} id="${node.node.id}" ${markerIdString} ${attributesString(trimAttributes(node.node.attributes || {}, truncateTextLength))} ${attributesString(rectAttribute)}>`;\n const content = truncateText(node.node.content, truncateTextLength);\n contentWithIndent = content ? `\n${indentStr} ${content}` : "";\n after = `</${nodeTypeString}>`;\n } else if (!filterNonTextContent) {\n if (!children.trim().startsWith("<>")) {\n before = "<>";\n contentWithIndent = "";\n after = "</>";\n }\n }\n if (emptyNode && !children.trim()) {\n return "";\n }\n const result2 = `${indentStr}${before}${contentWithIndent}${children}\n${indentStr}${after}`;\n if (result2.trim()) {\n return result2;\n }\n return "";\n }\n const result = buildContentTree(tree, 0, visibleOnly);\n return result.replace(/^\\s*\\n/gm, "");\n }\n function treeToList(tree) {\n const result = [];\n function dfs(node) {\n if (node.node) {\n result.push(node.node);\n }\n for (const child of node.children) {\n dfs(child);\n }\n }\n dfs(tree);\n return result;\n }\n function traverseTree(tree, onNode) {\n function dfs(node) {\n if (node.node) {\n node.node = onNode(node.node);\n }\n for (const child of node.children) {\n dfs(child);\n }\n }\n dfs(tree);\n return tree;\n }\n\n // src/constants/index.ts\n var CONTAINER_MINI_HEIGHT = 3;\n var CONTAINER_MINI_WIDTH = 3;\n\n // src/utils.ts\n var import_js_sha256 = __toESM(require_sha256());\n var _a;\n var ifInNode = typeof process !== "undefined" && ((_a = process.versions) == null ? void 0 : _a.node);\n var hashMap = {};\n function generateHashId(rect, content = "") {\n const combined = JSON.stringify({\n content,\n rect\n });\n let sliceLength = 5;\n let slicedHash = "";\n const hashHex = import_js_sha256.sha256.create().update(combined).hex();\n const toLetters = (hex) => {\n return hex.split("").map((char) => {\n const code = Number.parseInt(char, 16);\n return String.fromCharCode(97 + code % 26);\n }).join("");\n };\n const hashLetters = toLetters(hashHex);\n while (sliceLength < hashLetters.length - 1) {\n slicedHash = hashLetters.slice(0, sliceLength);\n if (hashMap[slicedHash] && hashMap[slicedHash] !== combined) {\n sliceLength++;\n continue;\n }\n hashMap[slicedHash] = combined;\n break;\n }\n return slicedHash;\n }\n\n // src/extractor/dom-util.ts\n function isFormElement(node) {\n return node instanceof HTMLElement && (node.tagName.toLowerCase() === "input" || node.tagName.toLowerCase() === "textarea" || node.tagName.toLowerCase() === "select" || node.tagName.toLowerCase() === "option");\n }\n function isButtonElement(node) {\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "button";\n }\n function isAElement(node) {\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "a";\n }\n function isSvgElement(node) {\n return node instanceof SVGElement;\n }\n function isImgElement(node) {\n if (!includeBaseElement(node) && node instanceof Element) {\n const computedStyle = window.getComputedStyle(node);\n const backgroundImage = computedStyle.getPropertyValue("background-image");\n if (backgroundImage !== "none") {\n return true;\n }\n }\n if (isIconfont(node)) {\n return true;\n }\n return node instanceof HTMLElement && node.tagName.toLowerCase() === "img" || node instanceof SVGElement && node.tagName.toLowerCase() === "svg";\n }\n function isIconfont(node) {\n if (node instanceof Element) {\n const computedStyle = window.getComputedStyle(node);\n const fontFamilyValue = computedStyle.fontFamily || "";\n return fontFamilyValue.toLowerCase().indexOf("iconfont") >= 0;\n }\n return false;\n }\n function isNotContainerElement(node) {\n return isTextElement(node) || isIconfont(node) || isImgElement(node) || isButtonElement(node) || isAElement(node) || isFormElement(node);\n }\n function isTextElement(node) {\n var _a2, _b, _c;\n if (node instanceof Element) {\n if (((_a2 = node == null ? void 0 : node.childNodes) == null ? void 0 : _a2.length) === 1 && (node == null ? void 0 : node.childNodes[0]) instanceof Text) {\n return true;\n }\n }\n return ((_c = (_b = node.nodeName) == null ? void 0 : _b.toLowerCase) == null ? void 0 : _c.call(_b)) === "#text" && !isIconfont(node);\n }\n function isContainerElement(node) {\n if (!(node instanceof HTMLElement))\n return false;\n if (includeBaseElement(node)) {\n return false;\n }\n const computedStyle = window.getComputedStyle(node);\n const backgroundColor = computedStyle.getPropertyValue("background-color");\n if (backgroundColor) {\n return true;\n }\n return false;\n }\n function includeBaseElement(node) {\n if (!(node instanceof HTMLElement))\n return false;\n if (node.innerText) {\n return true;\n }\n const includeList = [\n "svg",\n "button",\n "input",\n "textarea",\n "select",\n "option",\n "img",\n "a"\n ];\n for (const tagName of includeList) {\n const element = node.querySelectorAll(tagName);\n if (element.length > 0) {\n return true;\n }\n }\n return false;\n }\n function generateElementByPosition(position) {\n const rect = {\n left: Math.max(position.x - 4, 0),\n top: Math.max(position.y - 4, 0),\n width: 8,\n height: 8\n };\n const id = generateHashId(rect);\n const element = {\n id,\n attributes: { nodeType: "POSITION Node" /* POSITION */ },\n rect,\n content: "",\n center: [position.x, position.y]\n };\n return element;\n }\n\n // src/extractor/util.ts\n var MAX_VALUE_LENGTH = 300;\n var debugMode = false;\n function setDebugMode(mode) {\n debugMode = mode;\n }\n function logger(..._msg) {\n if (!debugMode) {\n return;\n }\n console.log(..._msg);\n }\n function isElementPartiallyInViewport(rect, currentWindow, currentDocument, visibleAreaRatio = 2 / 3) {\n const elementHeight = rect.height;\n const elementWidth = rect.width;\n const viewportRect = {\n left: 0,\n top: 0,\n width: currentWindow.innerWidth || currentDocument.documentElement.clientWidth,\n height: currentWindow.innerHeight || currentDocument.documentElement.clientHeight,\n right: currentWindow.innerWidth || currentDocument.documentElement.clientWidth,\n bottom: currentWindow.innerHeight || currentDocument.documentElement.clientHeight,\n x: 0,\n y: 0,\n zoom: 1\n };\n const overlapRect = overlappedRect(rect, viewportRect);\n if (!overlapRect) {\n return false;\n }\n const visibleArea = overlapRect.width * overlapRect.height;\n const totalArea = elementHeight * elementWidth;\n return visibleArea / totalArea >= visibleAreaRatio;\n }\n function getPseudoElementContent(element, currentWindow) {\n if (!(element instanceof currentWindow.HTMLElement)) {\n return { before: "", after: "" };\n }\n const beforeContent = currentWindow.getComputedStyle(element, "::before").getPropertyValue("content");\n const afterContent = currentWindow.getComputedStyle(element, "::after").getPropertyValue("content");\n return {\n before: beforeContent === "none" ? "" : beforeContent.replace(/"/g, ""),\n after: afterContent === "none" ? "" : afterContent.replace(/"/g, "")\n };\n }\n function overlappedRect(rect1, rect2) {\n const left = Math.max(rect1.left, rect2.left);\n const top = Math.max(rect1.top, rect2.top);\n const right = Math.min(rect1.right, rect2.right);\n const bottom = Math.min(rect1.bottom, rect2.bottom);\n if (left < right && top < bottom) {\n return {\n left,\n top,\n right,\n bottom,\n width: right - left,\n height: bottom - top,\n x: left,\n y: top,\n zoom: 1\n };\n }\n return null;\n }\n function getRect(el, baseZoom, currentWindow) {\n let originalRect;\n let newZoom = 1;\n if (!(el instanceof currentWindow.HTMLElement)) {\n const range = currentWindow.document.createRange();\n range.selectNodeContents(el);\n originalRect = range.getBoundingClientRect();\n } else {\n originalRect = el.getBoundingClientRect();\n if (!("currentCSSZoom" in el)) {\n newZoom = Number.parseFloat(currentWindow.getComputedStyle(el).zoom) || 1;\n }\n }\n const zoom = newZoom * baseZoom;\n return {\n width: originalRect.width * zoom,\n height: originalRect.height * zoom,\n left: originalRect.left * zoom,\n top: originalRect.top * zoom,\n right: originalRect.right * zoom,\n bottom: originalRect.bottom * zoom,\n x: originalRect.x * zoom,\n y: originalRect.y * zoom,\n zoom\n };\n }\n var isElementCovered = (el, rect, currentWindow) => {\n const x = rect.left + rect.width / 2;\n const y = rect.top + rect.height / 2;\n const topElement = currentWindow.document.elementFromPoint(x, y);\n if (!topElement) {\n return false;\n }\n if (topElement === el) {\n return false;\n }\n if (el == null ? void 0 : el.contains(topElement)) {\n return false;\n }\n if (topElement == null ? void 0 : topElement.contains(el)) {\n return false;\n }\n const rectOfTopElement = getRect(topElement, 1, currentWindow);\n const overlapRect = overlappedRect(rect, rectOfTopElement);\n if (!overlapRect) {\n return false;\n }\n logger(el, "Element is covered by another element", {\n topElement,\n el,\n rect,\n x,\n y\n });\n return true;\n };\n function elementRect(el, currentWindow, currentDocument, baseZoom = 1) {\n if (!el) {\n logger(el, "Element is not in the DOM hierarchy");\n return false;\n }\n if (!(el instanceof currentWindow.HTMLElement) && el.nodeType !== Node.TEXT_NODE && el.nodeName.toLowerCase() !== "svg") {\n logger(el, "Element is not in the DOM hierarchy");\n return false;\n }\n if (el instanceof currentWindow.HTMLElement) {\n const style = currentWindow.getComputedStyle(el);\n if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" && el.tagName !== "INPUT") {\n logger(el, "Element is hidden");\n return false;\n }\n }\n const rect = getRect(el, baseZoom, currentWindow);\n if (rect.width === 0 && rect.height === 0) {\n logger(el, "Element has no size");\n return false;\n }\n if (baseZoom === 1 && isElementCovered(el, rect, currentWindow)) {\n return false;\n }\n const isVisible = isElementPartiallyInViewport(\n rect,\n currentWindow,\n currentDocument\n );\n let parent = el;\n const parentUntilNonStatic = (currentNode) => {\n let parent2 = currentNode == null ? void 0 : currentNode.parentElement;\n while (parent2) {\n const style = currentWindow.getComputedStyle(parent2);\n if (style.position !== "static") {\n return parent2;\n }\n parent2 = parent2.parentElement;\n }\n return null;\n };\n while (parent && parent !== currentDocument.body) {\n if (!(parent instanceof currentWindow.HTMLElement)) {\n parent = parent.parentElement;\n continue;\n }\n const parentStyle = currentWindow.getComputedStyle(parent);\n if (parentStyle.overflow === "hidden") {\n const parentRect = getRect(parent, 1, currentWindow);\n const tolerance = 10;\n if (rect.right < parentRect.left - tolerance || rect.left > parentRect.right + tolerance || rect.bottom < parentRect.top - tolerance || rect.top > parentRect.bottom + tolerance) {\n logger(el, "element is partially or totally hidden by an ancestor", {\n rect,\n parentRect\n });\n return false;\n }\n }\n if (parentStyle.position === "fixed" || parentStyle.position === "sticky") {\n break;\n }\n if (parentStyle.position === "absolute") {\n parent = parentUntilNonStatic(parent);\n } else {\n parent = parent.parentElement;\n }\n }\n return {\n left: Math.round(rect.left),\n top: Math.round(rect.top),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n zoom: rect.zoom,\n isVisible\n };\n }\n function getNodeAttributes(node, currentWindow) {\n if (!node || !(node instanceof currentWindow.HTMLElement) || !node.attributes) {\n return {};\n }\n const attributesList = Array.from(node.attributes).map((attr) => {\n if (attr.name === "class") {\n return [attr.name, `.${attr.value.split(" ").join(".")}`];\n }\n if (!attr.value) {\n return [];\n }\n let value = attr.value;\n if (value.startsWith("data:image")) {\n value = "image";\n }\n if (value.length > MAX_VALUE_LENGTH) {\n value = `${value.slice(0, MAX_VALUE_LENGTH)}...`;\n }\n return [attr.name, value];\n });\n return Object.fromEntries(attributesList);\n }\n function midsceneGenerateHash(node, content, rect) {\n const slicedHash = generateHashId(rect, content);\n if (node) {\n if (!window.midsceneNodeHashCacheList) {\n setNodeHashCacheListOnWindow();\n }\n setNodeToCacheList(node, slicedHash);\n }\n return slicedHash;\n }\n function setNodeHashCacheListOnWindow() {\n if (typeof window !== "undefined") {\n window.midsceneNodeHashCacheList = [];\n }\n }\n function setNodeToCacheList(node, id) {\n var _a2;\n if (typeof window !== "undefined") {\n if (getNodeFromCacheList(id)) {\n return;\n }\n (_a2 = window.midsceneNodeHashCacheList) == null ? void 0 : _a2.push({ node, id });\n }\n }\n function getNodeFromCacheList(id) {\n var _a2, _b;\n if (typeof window !== "undefined") {\n return (_b = (_a2 = window.midsceneNodeHashCacheList) == null ? void 0 : _a2.find(\n (item) => item.id === id\n )) == null ? void 0 : _b.node;\n }\n return null;\n }\n function getTopDocument() {\n const container = document.body || document;\n return container;\n }\n\n // src/extractor/web-extractor.ts\n var indexId = 0;\n function tagNameOfNode(node) {\n var _a2, _b;\n let tagName = "";\n if (node instanceof HTMLElement) {\n tagName = (_a2 = node.tagName) == null ? void 0 : _a2.toLowerCase();\n } else {\n const parentElement = node.parentElement;\n if (parentElement && parentElement instanceof HTMLElement) {\n tagName = (_b = parentElement.tagName) == null ? void 0 : _b.toLowerCase();\n }\n }\n return tagName ? `<${tagName}>` : "";\n }\n function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1, basePoint = { left: 0, top: 0 }, isContainer = false) {\n var _a2, _b;\n const rect = elementRect(node, currentWindow, currentDocument, baseZoom);\n if (!rect) {\n return null;\n }\n if (rect.width < CONTAINER_MINI_WIDTH || rect.height < CONTAINER_MINI_HEIGHT) {\n return null;\n }\n if (basePoint.left !== 0 || basePoint.top !== 0) {\n rect.left += basePoint.left;\n rect.top += basePoint.top;\n }\n if (rect.height >= window.innerHeight && rect.width >= window.innerWidth) {\n return null;\n }\n if (isFormElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n let valueContent = attributes.value || attributes.placeholder || node.textContent || "";\n const nodeHashId = midsceneGenerateHash(node, valueContent, rect);\n const tagName = node.tagName.toLowerCase();\n if (node.tagName.toLowerCase() === "select") {\n const selectedOption = node.options[node.selectedIndex];\n valueContent = (selectedOption == null ? void 0 : selectedOption.textContent) || "";\n }\n if ((node.tagName.toLowerCase() === "input" || node.tagName.toLowerCase() === "textarea") && node.value) {\n valueContent = node.value;\n }\n const elementInfo = {\n id: nodeHashId,\n nodeHashId,\n nodeType: "FORM_ITEM Node" /* FORM_ITEM */,\n indexId: indexId++,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: `<${tagName}>`,\n nodeType: "FORM_ITEM Node" /* FORM_ITEM */\n }),\n content: valueContent.trim(),\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isButtonElement(node)) {\n const rect2 = mergeElementAndChildrenRects(\n node,\n currentWindow,\n currentDocument,\n baseZoom\n );\n if (!rect2) {\n return null;\n }\n const attributes = getNodeAttributes(node, currentWindow);\n const pseudo = getPseudoElementContent(node, currentWindow);\n const content = node.innerText || pseudo.before || pseudo.after || "";\n const nodeHashId = midsceneGenerateHash(node, content, rect2);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "BUTTON Node" /* BUTTON */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: tagNameOfNode(node),\n nodeType: "BUTTON Node" /* BUTTON */\n }),\n content,\n rect: rect2,\n center: [\n Math.round(rect2.left + rect2.width / 2),\n Math.round(rect2.top + rect2.height / 2)\n ],\n zoom: rect2.zoom,\n isVisible: rect2.isVisible\n };\n return elementInfo;\n }\n if (isImgElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n const nodeHashId = midsceneGenerateHash(node, "", rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n attributes: __spreadProps(__spreadValues(__spreadValues({}, attributes), ((_a2 = node.nodeName) == null ? void 0 : _a2.toLowerCase()) === "svg" ? {\n svgContent: "true"\n } : {}), {\n nodeType: "IMG Node" /* IMG */,\n htmlTagName: tagNameOfNode(node)\n }),\n nodeType: "IMG Node" /* IMG */,\n content: "",\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isTextElement(node)) {\n const text = (_b = node.textContent) == null ? void 0 : _b.trim().replace(/\\n+/g, " ");\n if (!text) {\n return null;\n }\n const attributes = getNodeAttributes(node, currentWindow);\n const attributeKeys = Object.keys(attributes);\n if (!text.trim() && attributeKeys.length === 0) {\n return null;\n }\n const nodeHashId = midsceneGenerateHash(node, text, rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "TEXT Node" /* TEXT */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n nodeType: "TEXT Node" /* TEXT */,\n htmlTagName: tagNameOfNode(node)\n }),\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n content: text,\n rect,\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isAElement(node)) {\n const attributes = getNodeAttributes(node, currentWindow);\n const pseudo = getPseudoElementContent(node, currentWindow);\n const content = node.innerText || pseudo.before || pseudo.after || "";\n const nodeHashId = midsceneGenerateHash(node, content, rect);\n const elementInfo = {\n id: nodeHashId,\n indexId: indexId++,\n nodeHashId,\n nodeType: "Anchor Node" /* A */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n htmlTagName: tagNameOfNode(node),\n nodeType: "Anchor Node" /* A */\n }),\n content,\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n if (isContainerElement(node) || isContainer) {\n const attributes = getNodeAttributes(node, currentWindow);\n const nodeHashId = midsceneGenerateHash(node, "", rect);\n const elementInfo = {\n id: nodeHashId,\n nodeHashId,\n indexId: indexId++,\n nodeType: "CONTAINER Node" /* CONTAINER */,\n attributes: __spreadProps(__spreadValues({}, attributes), {\n nodeType: "CONTAINER Node" /* CONTAINER */,\n htmlTagName: tagNameOfNode(node)\n }),\n content: "",\n rect,\n center: [\n Math.round(rect.left + rect.width / 2),\n Math.round(rect.top + rect.height / 2)\n ],\n zoom: rect.zoom,\n isVisible: rect.isVisible\n };\n return elementInfo;\n }\n return null;\n }\n function extractTextWithPosition(initNode, debugMode2 = false) {\n const elementNode = extractTreeNode(initNode, debugMode2);\n const elementInfoArray = [];\n function dfsTopChildren(node) {\n if (node.node) {\n elementInfoArray.push(node.node);\n }\n for (let i = 0; i < node.children.length; i++) {\n dfsTopChildren(node.children[i]);\n }\n }\n dfsTopChildren({ children: elementNode.children, node: elementNode.node });\n return elementInfoArray;\n }\n function extractTreeNodeAsString(initNode, visibleOnly = false, debugMode2 = false) {\n const elementNode = extractTreeNode(initNode, debugMode2);\n return descriptionOfTree(elementNode, void 0, false, visibleOnly);\n }\n function extractTreeNode(initNode, debugMode2 = false) {\n setDebugMode(debugMode2);\n indexId = 0;\n const topDocument = getTopDocument();\n const startNode = initNode || topDocument;\n const topChildren = [];\n function dfs(node, currentWindow, currentDocument, baseZoom = 1, basePoint = { left: 0, top: 0 }) {\n if (!node) {\n return null;\n }\n if (node.nodeType && node.nodeType === 10) {\n return null;\n }\n const elementInfo = collectElementInfo(\n node,\n currentWindow,\n currentDocument,\n baseZoom,\n basePoint\n );\n if (node instanceof currentWindow.HTMLIFrameElement) {\n if (node.contentWindow && node.contentWindow) {\n return null;\n }\n }\n const nodeInfo = {\n node: elementInfo,\n children: []\n };\n if ((elementInfo == null ? void 0 : elementInfo.nodeType) === "BUTTON Node" /* BUTTON */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "IMG Node" /* IMG */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "TEXT Node" /* TEXT */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "FORM_ITEM Node" /* FORM_ITEM */ || (elementInfo == null ? void 0 : elementInfo.nodeType) === "CONTAINER Node" /* CONTAINER */) {\n return nodeInfo;\n }\n const rect = getRect(node, baseZoom, currentWindow);\n for (let i = 0; i < node.childNodes.length; i++) {\n logger("will dfs", node.childNodes[i]);\n const childNodeInfo = dfs(\n node.childNodes[i],\n currentWindow,\n currentDocument,\n rect.zoom,\n basePoint\n );\n if (Array.isArray(childNodeInfo)) {\n nodeInfo.children.push(...childNodeInfo);\n } else if (childNodeInfo) {\n nodeInfo.children.push(childNodeInfo);\n }\n }\n if (nodeInfo.node === null) {\n if (nodeInfo.children.length === 0) {\n return null;\n }\n return nodeInfo.children;\n }\n return nodeInfo;\n }\n const rootNodeInfo = dfs(startNode, window, document, 1, {\n left: 0,\n top: 0\n });\n if (Array.isArray(rootNodeInfo)) {\n topChildren.push(...rootNodeInfo);\n } else if (rootNodeInfo) {\n topChildren.push(rootNodeInfo);\n }\n if (startNode === topDocument) {\n const iframes = document.querySelectorAll("iframe");\n for (let i = 0; i < iframes.length; i++) {\n const iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentWindow) {\n const iframeInfo = collectElementInfo(iframe, window, document, 1);\n if (iframeInfo) {\n const iframeChildren = dfs(\n iframe.contentDocument.body,\n iframe.contentWindow,\n iframe.contentDocument,\n 1,\n {\n left: iframeInfo.rect.left,\n top: iframeInfo.rect.top\n }\n );\n if (Array.isArray(iframeChildren)) {\n topChildren.push(...iframeChildren);\n } else if (iframeChildren) {\n topChildren.push(iframeChildren);\n }\n }\n }\n }\n }\n return {\n node: null,\n children: topChildren\n };\n }\n function mergeElementAndChildrenRects(node, currentWindow, currentDocument, baseZoom = 1) {\n const selfRect = elementRect(node, currentWindow, currentDocument, baseZoom);\n if (!selfRect)\n return null;\n let minLeft = selfRect.left;\n let minTop = selfRect.top;\n let maxRight = selfRect.left + selfRect.width;\n let maxBottom = selfRect.top + selfRect.height;\n function traverse(child) {\n for (let i = 0; i < child.childNodes.length; i++) {\n const sub = child.childNodes[i];\n if (sub.nodeType === 1) {\n const rect = elementRect(sub, currentWindow, currentDocument, baseZoom);\n if (rect) {\n minLeft = Math.min(minLeft, rect.left);\n minTop = Math.min(minTop, rect.top);\n maxRight = Math.max(maxRight, rect.left + rect.width);\n maxBottom = Math.max(maxBottom, rect.top + rect.height);\n }\n traverse(sub);\n }\n }\n }\n traverse(node);\n return __spreadProps(__spreadValues({}, selfRect), {\n left: minLeft,\n top: minTop,\n width: maxRight - minLeft,\n height: maxBottom - minTop\n });\n }\n\n // src/extractor/locator.ts\n var getElementXpathIndex = (element) => {\n let index = 1;\n let prev = element.previousElementSibling;\n while (prev) {\n if (prev.nodeName.toLowerCase() === element.nodeName.toLowerCase()) {\n index++;\n }\n prev = prev.previousElementSibling;\n }\n return index;\n };\n var normalizeXpathText = (text) => {\n if (typeof text !== "string") {\n return "";\n }\n return text.replace(/\\s+/g, " ").trim();\n };\n var buildCurrentElementXpath = (element, isOrderSensitive, isLeafElement) => {\n var _a2;\n const parentPath = element.parentNode ? getElementXpath(element.parentNode, isOrderSensitive) : "";\n const prefix = parentPath ? `${parentPath}/` : "/";\n const tagName = element.nodeName.toLowerCase();\n const textContent = (_a2 = element.textContent) == null ? void 0 : _a2.trim();\n if (isOrderSensitive) {\n const index2 = getElementXpathIndex(element);\n return `${prefix}${tagName}[${index2}]`;\n }\n if (isLeafElement && textContent) {\n return `${prefix}${tagName}[normalize-space()="${normalizeXpathText(textContent)}"]`;\n }\n const index = getElementXpathIndex(element);\n return `${prefix}${tagName}[${index}]`;\n };\n var getElementXpath = (element, isOrderSensitive = false, isLeafElement = false) => {\n var _a2;\n if (element.nodeType === Node.TEXT_NODE) {\n const parentNode = element.parentNode;\n if (parentNode && parentNode.nodeType === Node.ELEMENT_NODE) {\n const parentXPath = getElementXpath(parentNode, isOrderSensitive, true);\n const textContent = (_a2 = element.textContent) == null ? void 0 : _a2.trim();\n if (textContent) {\n return `${parentXPath}/text()[normalize-space()="${normalizeXpathText(textContent)}"]`;\n }\n return `${parentXPath}/text()`;\n }\n return "";\n }\n if (element.nodeType !== Node.ELEMENT_NODE)\n return "";\n const el = element;\n if (el === document.documentElement)\n return "/html";\n if (el === document.body)\n return "/html/body";\n if (isSvgElement(el)) {\n let parent = el.parentNode;\n while (parent && parent.nodeType === Node.ELEMENT_NODE) {\n if (!isSvgElement(parent)) {\n return getElementXpath(parent, isOrderSensitive, isLeafElement);\n }\n parent = parent.parentNode;\n }\n return getElementXpath(el.parentNode, isOrderSensitive, isLeafElement);\n }\n return buildCurrentElementXpath(el, isOrderSensitive, isLeafElement);\n };\n function getXpathsById(id) {\n const node = getNodeFromCacheList(id);\n if (!node) {\n return null;\n }\n const fullXPath = getElementXpath(node, false, true);\n return [fullXPath];\n }\n function getXpathsByPoint(point, isOrderSensitive) {\n const element = document.elementFromPoint(point.left, point.top);\n if (!element) {\n return null;\n }\n const fullXPath = getElementXpath(element, isOrderSensitive, true);\n return [fullXPath];\n }\n function getNodeInfoByXpath(xpath) {\n const xpathResult = document.evaluate(\n xpath,\n document,\n null,\n XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,\n null\n );\n if (xpathResult.snapshotLength !== 1) {\n return null;\n }\n const node = xpathResult.snapshotItem(0);\n return node;\n }\n function getElementInfoByXpath(xpath) {\n const node = getNodeInfoByXpath(xpath);\n if (!node) {\n return null;\n }\n if (node instanceof HTMLElement) {\n const rect = getRect(node, 1, window);\n const isVisible = isElementPartiallyInViewport(rect, window, document, 1);\n if (!isVisible) {\n node.scrollIntoView({ behavior: "instant", block: "center" });\n }\n }\n return collectElementInfo(\n node,\n window,\n document,\n 1,\n {\n left: 0,\n top: 0\n },\n true\n );\n }\n return __toCommonJS(extractor_exports);\n})();\n/*! Bundled license information:\n\njs-sha256/src/sha256.js:\n (**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.11.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2024\n * @license MIT\n *)\n*/\n'}async function b(t=!1){if(c||h)return null;let r=`${g()}midscene_element_inspector.setNodeHashCacheListOnWindow();`;return t?`${r}midscene_element_inspector.webExtractNodeTree()`:`${r}midscene_element_inspector.webExtractTextWithPosition()`}}}),require_chunk_4CBFCRNS=__commonJS({"../core/dist/lib/chunk-4CBFCRNS.js"(t){function r(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r.default=t,r}function n(t){let r,n=t[0],i=1;for(;i<t.length;){let a=t[i],o=t[i+1];if(i+=2,("optionalAccess"===a||"optionalCall"===a)&&null==n)return;"access"===a||"optionalAccess"===a?(r=n,n=o(n)):"call"!==a&&"optionalCall"!==a||(n=o((...t)=>n.call(r,...t)),r=void 0)}return n}init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var i=require_child_process(),a=require_fs(),o=r(a),s=require_browser3(),l=require_path_browserify(),u=r(l),d=require_common6(),c=require_env(),h=require_fs2(),f=require_utils5(),p=!1,m=new Map;function g(t,r){let n="</html>",i=o.statSync(t),a=Math.min(i.size,4096),s=Math.max(0,i.size-a),l=Buffer.alloc(i.size-s),u=o.openSync(t,"r");o.readSync(u,l,0,l.length,s),o.closeSync(u);let d=l.toString("utf8"),c=d.lastIndexOf(n);if(-1===c)throw Error(`No </html> found in file:${t}`);let h=d.slice(0,c),f=s+Buffer.byteLength(h,"utf8");o.truncateSync(t,f),o.appendFileSync(t,`${r}
|
|
724
724
|
${n}
|
|
725
725
|
`)}function b(t,r,n){let i="REPLACE_ME_WITH_REPORT_HTML",o=r&&!f.ifInBrowser,s="";if("string"==typeof t)s='<script type="midscene_web_dump" type="application/json">\n'+f.escapeScriptTag.call(void 0,t)+"\n<\/script>";else{let{dumpString:r,attributes:n}=t;s='<script type="midscene_web_dump" type="application/json" '+Object.keys(n||{}).map(t=>`${t}="${encodeURIComponent(n[t])}"`).join(" ")+">\n"+f.escapeScriptTag.call(void 0,r)+"\n<\/script>"}return o?(n?(m.get(r)||(a.writeFileSync.call(void 0,r,i,{flag:"w"}),m.set(r,!0)),g(r,s)):a.writeFileSync.call(void 0,r,i+s,{flag:"w"}),r):i+s}function y(t,r,n){if(f.ifInBrowser||f.ifInWorker)return import_console_browserify.default.log("will not write report in browser"),null;let i=l.dirname.call(void 0,"/index.js");if(!h.getRunningPkgInfo.call(void 0,i))return import_console_browserify.default.warn("midscenePkgInfo not found, will not write report"),null;let o=u.join(d.getMidsceneRunSubDir.call(void 0,"report"),`${t}.html`);if(b(r,o,n),import_browser.default.env.MIDSCENE_DEBUG_LOG_JSON){let t,i=`${o}.json`;t="string"==typeof r?JSON.parse(r):r,a.writeFileSync.call(void 0,i,JSON.stringify(t,null,2),{flag:n?"a":"w"}),f.logMsg.call(void 0,`Midscene - dump file written: ${i}`)}return o}function _(){try{let t=h.getRunningPkgInfo.call(void 0);if(!t)return null;let{name:r}=t,n=u.join(s.tmpdir.call(void 0),r);return a.mkdirSync.call(void 0,n,{recursive:!0}),n}catch(t){return null}}function v(t,r){return r&&"Page"===n([r,"access",t=>t.constructor,"optionalAccess",t=>t.name])?"[Page object]":r&&"Browser"===n([r,"access",t=>t.constructor,"optionalAccess",t=>t.name])?"[Browser object]":r}function A(...t){c.getAIConfig.call(void 0,c.MIDSCENE_DEBUG_MODE)&&import_console_browserify.default.log("[Midscene]",...t)}var w="";t.groupedActionDumpFileExt="web-dump.json",t.insertScriptBeforeClosingHtml=g,t.reportHTMLContent=b,t.writeDumpReport=y,t.writeLogFile=function(t){if(f.ifInBrowser||f.ifInWorker)return"/mock/report.html";let{fileName:r,fileExt:i,fileContent:o,type:s="dump"}=t,l=d.getMidsceneRunSubDir.call(void 0,s);if(!p){f.assert.call(void 0,l,"logDir should be set before writing dump file");let t=u.join(l,"../../.gitignore"),r=u.join(l,"../../.git"),n="";a.existsSync.call(void 0,r)&&(a.existsSync.call(void 0,t)&&(n=a.readFileSync.call(void 0,t,"utf-8")),n.includes(`${d.defaultRunDirName}/`)||a.writeFileSync.call(void 0,t,`${n}
|
|
726
726
|
# Midscene.js dump files
|
|
@@ -728,7 +728,7 @@ ${d.defaultRunDirName}/dump
|
|
|
728
728
|
${d.defaultRunDirName}/report
|
|
729
729
|
${d.defaultRunDirName}/tmp
|
|
730
730
|
${d.defaultRunDirName}/log
|
|
731
|
-
`,"utf-8")),p=!0}let c=u.join(l,`${r}.${i}`);return"dump"!==s&&a.writeFileSync.call(void 0,c,o),n([t,"optionalAccess",t=>t.generateReport])?y(r,o,t.appendReport):c},t.getTmpDir=_,t.getTmpFile=function(t){if(f.ifInBrowser||f.ifInWorker)return null;let r=_(),n=`${f.uuid.call(void 0)}.${t}`;return u.join(r,n)},t.overlapped=function(t,r){return t.left<r.left+r.width&&t.left+t.width>r.left&&t.top<r.top+r.height&&t.top+t.height>r.top},t.sleep=async function(t){return new Promise(r=>setTimeout(r,t))},t.replacerForPageObject=v,t.stringifyDumpData=function(t,r){return JSON.stringify(t,v,r)},t.getVersion=function(){return"0.26.0"},t.uploadTestInfoToServer=function({testUrl:t}){let r="",a="",o=n([c.getAIConfigInJson.call(void 0,c.MIDSCENE_OPENAI_INIT_CONFIG_JSON),"optionalAccess",t=>t.REPORT_SERVER_URL]);try{r=i.execSync.call(void 0,"git config --get remote.origin.url").toString().trim(),a=i.execSync.call(void 0,"git config --get user.email").toString().trim()}catch(t){A("Failed to get git info:",t)}o&&(r&&r!==w||!r&&t)&&(A("Uploading test info to server",{serverUrl:o,repoUrl:r,testUrl:t,userEmail:a}),fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repo_url:r,test_url:t,user_email:a})}).then(t=>t.json()).then(t=>{A("Successfully uploaded test info to server:",t)}).catch(t=>A("Failed to upload test info to server:",t)),w=r)}}}),require_utils12=__commonJS({"../core/dist/lib/utils.js"(t){init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var r=require_chunk_NBFEZEAH();t.getTmpDir=r.getTmpDir,t.getTmpFile=r.getTmpFile,t.getVersion=r.getVersion,t.groupedActionDumpFileExt=r.groupedActionDumpFileExt,t.insertScriptBeforeClosingHtml=r.insertScriptBeforeClosingHtml,t.overlapped=r.overlapped,t.replacerForPageObject=r.replacerForPageObject,t.reportHTMLContent=r.reportHTMLContent,t.sleep=r.sleep,t.stringifyDumpData=r.stringifyDumpData,t.uploadTestInfoToServer=r.uploadTestInfoToServer,t.writeDumpReport=r.writeDumpReport,t.writeLogFile=r.writeLogFile}}),require_dayjs_min=__commonJS({"../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js"(t,r){var n,i;init_globals(),n=t,i=function(){var t=6e4,r=36e5,n="millisecond",i="second",a="minute",o="hour",s="day",l="week",u="month",d="quarter",c="year",h="date",f="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var r=["th","st","nd","rd"],n=t%100;return"["+t+(r[(n-20)%10]||r[n]||r[0])+"]"}},b=function(t,r,n){var i=String(t);return!i||i.length>=r?t:""+Array(r+1-i.length).join(n)+t},y={s:b,z:function(t){var r=-t.utcOffset(),n=Math.abs(r),i=Math.floor(n/60),a=n%60;return(r<=0?"+":"-")+b(i,2,"0")+":"+b(a,2,"0")},m:function t(r,n){if(r.date()<n.date())return-t(n,r);var i=12*(n.year()-r.year())+(n.month()-r.month()),a=r.clone().add(i,u),o=n-a<0,s=r.clone().add(i+(o?-1:1),u);return+(-(i+(n-a)/(o?a-s:s-a))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return({M:u,y:c,w:l,d:s,D:h,h:o,m:a,s:i,ms:n,Q:d})[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},_="en",v={};v[_]=g;var A="$isDayjsObject",w=function(t){return t instanceof C||!(!t||!t[A])},x=function t(r,n,i){var a;if(!r)return _;if("string"==typeof r){var o=r.toLowerCase();v[o]&&(a=o),n&&(v[o]=n,a=o);var s=r.split("-");if(!a&&s.length>1)return t(s[0])}else{var l=r.name;v[l]=r,a=l}return!i&&a&&(_=a),a||!i&&_},E=function(t,r){if(w(t))return t.clone();var n="object"==typeof r?r:{};return n.date=t,n.args=arguments,new C(n)},S=y;S.l=x,S.i=w,S.w=function(t,r){return E(t,{locale:r.$L,utc:r.$u,x:r.$x,$offset:r.$offset})};var C=function(){function g(t){this.$L=x(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[A]=!0}var b=g.prototype;return b.parse=function(t){this.$d=function(t){var r=t.date,n=t.utc;if(null===r)return new Date(NaN);if(S.u(r))return new Date;if(r instanceof Date)return new Date(r);if("string"==typeof r&&!/Z$/i.test(r)){var i=r.match(p);if(i){var a=i[2]-1||0,o=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],a,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)):new Date(i[1],a,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)}}return new Date(r)}(t),this.init()},b.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},b.$utils=function(){return S},b.isValid=function(){return this.$d.toString()!==f},b.isSame=function(t,r){var n=E(t);return this.startOf(r)<=n&&n<=this.endOf(r)},b.isAfter=function(t,r){return E(t)<this.startOf(r)},b.isBefore=function(t,r){return this.endOf(r)<E(t)},b.$g=function(t,r,n){return S.u(t)?this[r]:this.set(n,t)},b.unix=function(){return Math.floor(this.valueOf()/1e3)},b.valueOf=function(){return this.$d.getTime()},b.startOf=function(t,r){var n=this,d=!!S.u(r)||r,f=S.p(t),p=function(t,r){var i=S.w(n.$u?Date.UTC(n.$y,r,t):new Date(n.$y,r,t),n);return d?i:i.endOf(s)},m=function(t,r){return S.w(n.toDate()[t].apply(n.toDate("s"),(d?[0,0,0,0]:[23,59,59,999]).slice(r)),n)},g=this.$W,b=this.$M,y=this.$D,_="set"+(this.$u?"UTC":"");switch(f){case c:return d?p(1,0):p(31,11);case u:return d?p(1,b):p(0,b+1);case l:var v=this.$locale().weekStart||0,A=(g<v?g+7:g)-v;return p(d?y-A:y+(6-A),b);case s:case h:return m(_+"Hours",0);case o:return m(_+"Minutes",1);case a:return m(_+"Seconds",2);case i:return m(_+"Milliseconds",3);default:return this.clone()}},b.endOf=function(t){return this.startOf(t,!1)},b.$set=function(t,r){var l,d=S.p(t),f="set"+(this.$u?"UTC":""),p=((l={})[s]=f+"Date",l[h]=f+"Date",l[u]=f+"Month",l[c]=f+"FullYear",l[o]=f+"Hours",l[a]=f+"Minutes",l[i]=f+"Seconds",l[n]=f+"Milliseconds",l)[d],m=d===s?this.$D+(r-this.$W):r;if(d===u||d===c){var g=this.clone().set(h,1);g.$d[p](m),g.init(),this.$d=g.set(h,Math.min(this.$D,g.daysInMonth())).$d}else p&&this.$d[p](m);return this.init(),this},b.set=function(t,r){return this.clone().$set(t,r)},b.get=function(t){return this[S.p(t)]()},b.add=function(n,d){var h,f=this;n=Number(n);var p=S.p(d),m=function(t){var r=E(f);return S.w(r.date(r.date()+Math.round(t*n)),f)};if(p===u)return this.set(u,this.$M+n);if(p===c)return this.set(c,this.$y+n);if(p===s)return m(1);if(p===l)return m(7);var g=((h={})[a]=t,h[o]=r,h[i]=1e3,h)[p]||1,b=this.$d.getTime()+n*g;return S.w(b,this)},b.subtract=function(t,r){return this.add(-1*t,r)},b.format=function(t){var r=this,n=this.$locale();if(!this.isValid())return n.invalidDate||f;var i=t||"YYYY-MM-DDTHH:mm:ssZ",a=S.z(this),o=this.$H,s=this.$m,l=this.$M,u=n.weekdays,d=n.months,c=n.meridiem,h=function(t,n,a,o){return t&&(t[n]||t(r,i))||a[n].slice(0,o)},p=function(t){return S.s(o%12||12,t,"0")},g=c||function(t,r,n){var i=t<12?"AM":"PM";return n?i.toLowerCase():i};return i.replace(m,function(t,i){return i||function(t){switch(t){case"YY":return String(r.$y).slice(-2);case"YYYY":return S.s(r.$y,4,"0");case"M":return l+1;case"MM":return S.s(l+1,2,"0");case"MMM":return h(n.monthsShort,l,d,3);case"MMMM":return h(d,l);case"D":return r.$D;case"DD":return S.s(r.$D,2,"0");case"d":return String(r.$W);case"dd":return h(n.weekdaysMin,r.$W,u,2);case"ddd":return h(n.weekdaysShort,r.$W,u,3);case"dddd":return u[r.$W];case"H":return String(o);case"HH":return S.s(o,2,"0");case"h":return p(1);case"hh":return p(2);case"a":return g(o,s,!0);case"A":return g(o,s,!1);case"m":return String(s);case"mm":return S.s(s,2,"0");case"s":return String(r.$s);case"ss":return S.s(r.$s,2,"0");case"SSS":return S.s(r.$ms,3,"0");case"Z":return a}return null}(t)||a.replace(":","")})},b.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},b.diff=function(n,h,f){var p,m=this,g=S.p(h),b=E(n),y=(b.utcOffset()-this.utcOffset())*t,_=this-b,v=function(){return S.m(m,b)};switch(g){case c:p=v()/12;break;case u:p=v();break;case d:p=v()/3;break;case l:p=(_-y)/6048e5;break;case s:p=(_-y)/864e5;break;case o:p=_/r;break;case a:p=_/t;break;case i:p=_/1e3;break;default:p=_}return f?p:S.a(p)},b.daysInMonth=function(){return this.endOf(u).$D},b.$locale=function(){return v[this.$L]},b.locale=function(t,r){if(!t)return this.$L;var n=this.clone(),i=x(t,r,!0);return i&&(n.$L=i),n},b.clone=function(){return S.w(this.$d,this)},b.toDate=function(){return new Date(this.valueOf())},b.toJSON=function(){return this.isValid()?this.toISOString():null},b.toISOString=function(){return this.$d.toISOString()},b.toString=function(){return this.$d.toUTCString()},g}(),I=C.prototype;return E.prototype=I,[["$ms",n],["$s",i],["$m",a],["$H",o],["$W",s],["$M",u],["$y",c],["$D",h]].forEach(function(t){I[t[1]]=function(r){return this.$g(r,t[0],t[1])}}),E.extend=function(t,r){return t.$i||(t(r,C,E),t.$i=!0),E},E.locale=x,E.isDayjs=w,E.unix=function(t){return E(1e3*t)},E.en=v[_],E.Ls=v,E.p={},E},"object"==typeof t&&void 0!==r?r.exports=i():"function"==typeof define&&define.amd?define(i):(n="undefined"!=typeof globalThis?globalThis:n||self).dayjs=i()}}),require_common7=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/common.js"(t,r){function n(t){return null==t}init_globals(),r.exports.isNothing=n,r.exports.isObject=function(t){return"object"==typeof t&&null!==t},r.exports.toArray=function(t){return Array.isArray(t)?t:n(t)?[]:[t]},r.exports.repeat=function(t,r){var n,i="";for(n=0;n<r;n+=1)i+=t;return i},r.exports.isNegativeZero=function(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t},r.exports.extend=function(t,r){var n,i,a,o;if(r)for(n=0,i=(o=Object.keys(r)).length;n<i;n+=1)t[a=o[n]]=r[a];return t}}}),require_exception=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/exception.js"(t,r){function n(t,r){var n="",i=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(n+='in "'+t.mark.name+'" '),n+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!r&&t.mark.snippet&&(n+="\n\n"+t.mark.snippet),i+" "+n):i}function i(t,r){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=r,this.message=n(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=Error().stack||""}init_globals(),i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i.prototype.toString=function(t){return this.name+": "+n(this,t)},r.exports=i}}),require_snippet=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/snippet.js"(t,r){init_globals();var n=require_common7();function i(t,r,n,i,a){var o="",s="",l=Math.floor(a/2)-1;return i-r>l&&(r=i-l+(o=" ... ").length),n-i>l&&(n=i+l-(s=" ...").length),{str:o+t.slice(r,n).replace(/\t/g,"→")+s,pos:i-r+o.length}}function a(t,r){return n.repeat(" ",r-t.length)+t}r.exports=function(t,r){if(r=Object.create(r||null),!t.buffer)return null;r.maxLength||(r.maxLength=79),"number"!=typeof r.indent&&(r.indent=1),"number"!=typeof r.linesBefore&&(r.linesBefore=3),"number"!=typeof r.linesAfter&&(r.linesAfter=2);for(var o,s=/\r?\n|\r|\0/g,l=[0],u=[],d=-1;o=s.exec(t.buffer);)u.push(o.index),l.push(o.index+o[0].length),t.position<=o.index&&d<0&&(d=l.length-2);d<0&&(d=l.length-1);var c,h,f="",p=Math.min(t.line+r.linesAfter,u.length).toString().length,m=r.maxLength-(r.indent+p+3);for(c=1;c<=r.linesBefore&&!(d-c<0);c++)h=i(t.buffer,l[d-c],u[d-c],t.position-(l[d]-l[d-c]),m),f=n.repeat(" ",r.indent)+a((t.line-c+1).toString(),p)+" | "+h.str+"\n"+f;for(h=i(t.buffer,l[d],u[d],t.position,m),f+=n.repeat(" ",r.indent)+a((t.line+1).toString(),p)+" | "+h.str+"\n"+n.repeat("-",r.indent+p+3+h.pos)+"^\n",c=1;c<=r.linesAfter&&!(d+c>=u.length);c++)h=i(t.buffer,l[d+c],u[d+c],t.position-(l[d]-l[d+c]),m),f+=n.repeat(" ",r.indent)+a((t.line+c+1).toString(),p)+" | "+h.str+"\n";return f.replace(/\n$/,"")}}}),require_type2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type.js"(t,r){init_globals();var n=require_exception(),i=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],a=["scalar","sequence","mapping"];r.exports=function(t,r){var o,s;if(Object.keys(r=r||{}).forEach(function(r){if(-1===i.indexOf(r))throw new n('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=r,this.tag=t,this.kind=r.kind||null,this.resolve=r.resolve||function(){return!0},this.construct=r.construct||function(t){return t},this.instanceOf=r.instanceOf||null,this.predicate=r.predicate||null,this.represent=r.represent||null,this.representName=r.representName||null,this.defaultStyle=r.defaultStyle||null,this.multi=r.multi||!1,this.styleAliases=(o=r.styleAliases||null,s={},null!==o&&Object.keys(o).forEach(function(t){o[t].forEach(function(r){s[String(r)]=t})}),s),-1===a.indexOf(this.kind))throw new n('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}}}),require_schema=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema.js"(t,r){init_globals();var n=require_exception(),i=require_type2();function a(t,r){var n=[];return t[r].forEach(function(t){var r=n.length;n.forEach(function(n,i){n.tag===t.tag&&n.kind===t.kind&&n.multi===t.multi&&(r=i)}),n[r]=t}),n}function o(t){return this.extend(t)}o.prototype.extend=function(t){var r=[],s=[];if(t instanceof i)s.push(t);else if(Array.isArray(t))s=s.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new n("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(r=r.concat(t.implicit)),t.explicit&&(s=s.concat(t.explicit))}r.forEach(function(t){if(!(t instanceof i))throw new n("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new n("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new n("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),s.forEach(function(t){if(!(t instanceof i))throw new n("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var l=Object.create(o.prototype);return l.implicit=(this.implicit||[]).concat(r),l.explicit=(this.explicit||[]).concat(s),l.compiledImplicit=a(l,"implicit"),l.compiledExplicit=a(l,"explicit"),l.compiledTypeMap=function(){var t,r,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(t){t.multi?(n.multi[t.kind].push(t),n.multi.fallback.push(t)):n[t.kind][t.tag]=n.fallback[t.tag]=t}for(t=0,r=arguments.length;t<r;t+=1)arguments[t].forEach(i);return n}(l.compiledImplicit,l.compiledExplicit),l},r.exports=o}}),require_str=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/str.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}})}}),require_seq=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/seq.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}})}}),require_map2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/map.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}})}}),require_failsafe=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/failsafe.js"(t,r){init_globals(),r.exports=new(require_schema())({explicit:[require_str(),require_seq(),require_map2()]})}}),require_null2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/null.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(t){if(null===t)return!0;var r=t.length;return 1===r&&"~"===t||4===r&&("null"===t||"Null"===t||"NULL"===t)},construct:function(){return null},predicate:function(t){return null===t},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"})}}),require_bool=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/bool.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r=t.length;return 4===r&&("true"===t||"True"===t||"TRUE"===t)||5===r&&("false"===t||"False"===t||"FALSE"===t)},construct:function(t){return"true"===t||"True"===t||"TRUE"===t},predicate:function(t){return"[object Boolean]"===Object.prototype.toString.call(t)},represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})}}),require_int=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/int.js"(t,r){init_globals();var n=require_common7();function i(t){return 48<=t&&t<=55}function a(t){return 48<=t&&t<=57}r.exports=new(require_type2())("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r,n,o=t.length,s=0,l=!1;if(!o)return!1;if("-"!==(r=t[s])&&"+"!==r||(r=t[++s]),"0"===r){if(s+1===o)return!0;if("b"===(r=t[++s])){for(s++;s<o;s++)if("_"!==(r=t[s])){if("0"!==r&&"1"!==r)return!1;l=!0}return l&&"_"!==r}if("x"===r){for(s++;s<o;s++)if("_"!==(r=t[s])){if(!(48<=(n=t.charCodeAt(s))&&n<=57||65<=n&&n<=70||97<=n&&n<=102))return!1;l=!0}return l&&"_"!==r}if("o"===r){for(s++;s<o;s++)if("_"!==(r=t[s])){if(!i(t.charCodeAt(s)))return!1;l=!0}return l&&"_"!==r}}if("_"===r)return!1;for(;s<o;s++)if("_"!==(r=t[s])){if(!a(t.charCodeAt(s)))return!1;l=!0}return!(!l||"_"===r)},construct:function(t){var r,n=t,i=1;if(-1!==n.indexOf("_")&&(n=n.replace(/_/g,"")),"-"!==(r=n[0])&&"+"!==r||("-"===r&&(i=-1),r=(n=n.slice(1))[0]),"0"===n)return 0;if("0"===r){if("b"===n[1])return i*parseInt(n.slice(2),2);if("x"===n[1])return i*parseInt(n.slice(2),16);if("o"===n[1])return i*parseInt(n.slice(2),8)}return i*parseInt(n,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&t%1==0&&!n.isNegativeZero(t)},represent:{binary:function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})}}),require_float=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/float.js"(t,r){init_globals();var n=require_common7(),i=require_type2(),a=RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),o=/^[-+]?[0-9]+e/;r.exports=new i("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!a.test(t)||"_"===t[t.length-1])},construct:function(t){var r,n;return n="-"===(r=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(r[0])>=0&&(r=r.slice(1)),".inf"===r?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===r?NaN:n*parseFloat(r,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||n.isNegativeZero(t))},represent:function(t,r){var i;if(isNaN(t))switch(r){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(r){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(r){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(n.isNegativeZero(t))return"-0.0";return i=t.toString(10),o.test(i)?i.replace("e",".e"):i},defaultStyle:"lowercase"})}}),require_json2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/json.js"(t,r){init_globals(),r.exports=require_failsafe().extend({implicit:[require_null2(),require_bool(),require_int(),require_float()]})}}),require_core6=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/core.js"(t,r){init_globals(),r.exports=require_json2()}}),require_timestamp=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/timestamp.js"(t,r){init_globals();var n=require_type2(),i=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),a=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");r.exports=new n("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==i.exec(t)||null!==a.exec(t))},construct:function(t){var r,n,o,s,l,u,d,c,h=0,f=null;if(null===(r=i.exec(t))&&(r=a.exec(t)),null===r)throw Error("Date resolve error");if(n=+r[1],o=r[2]-1,s=+r[3],!r[4])return new Date(Date.UTC(n,o,s));if(l=+r[4],u=+r[5],d=+r[6],r[7]){for(h=r[7].slice(0,3);h.length<3;)h+="0";h*=1}return r[9]&&(f=6e4*(60*r[10]+ +(r[11]||0)),"-"===r[9]&&(f=-f)),c=new Date(Date.UTC(n,o,s,l,u,d,h)),f&&c.setTime(c.getTime()-f),c},instanceOf:Date,represent:function(t){return t.toISOString()}})}}),require_merge=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/merge.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}})}}),require_binary=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/binary.js"(t,r){init_globals();var n=require_type2(),i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";r.exports=new n("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r,n,a=0,o=t.length,s=i;for(n=0;n<o;n++)if(!((r=s.indexOf(t.charAt(n)))>64)){if(r<0)return!1;a+=6}return a%8==0},construct:function(t){var r,n,a=t.replace(/[\r\n=]/g,""),o=a.length,s=i,l=0,u=[];for(r=0;r<o;r++)r%4==0&&r&&(u.push(l>>16&255),u.push(l>>8&255),u.push(255&l)),l=l<<6|s.indexOf(a.charAt(r));return 0==(n=o%4*6)?(u.push(l>>16&255),u.push(l>>8&255),u.push(255&l)):18===n?(u.push(l>>10&255),u.push(l>>2&255)):12===n&&u.push(l>>4&255),new Uint8Array(u)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var r,n,a="",o=0,s=t.length,l=i;for(r=0;r<s;r++)r%3==0&&r&&(a+=l[o>>18&63],a+=l[o>>12&63],a+=l[o>>6&63],a+=l[63&o]),o=(o<<8)+t[r];return 0==(n=s%3)?(a+=l[o>>18&63],a+=l[o>>12&63],a+=l[o>>6&63],a+=l[63&o]):2===n?(a+=l[o>>10&63],a+=l[o>>4&63],a+=l[o<<2&63],a+=l[64]):1===n&&(a+=l[o>>2&63],a+=l[o<<4&63],a+=l[64],a+=l[64]),a}})}}),require_omap=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/omap.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.hasOwnProperty,a=Object.prototype.toString;r.exports=new n("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var r,n,o,s,l,u=[],d=t;for(r=0,n=d.length;r<n;r+=1){if(o=d[r],l=!1,"[object Object]"!==a.call(o))return!1;for(s in o)if(i.call(o,s)){if(l)return!1;l=!0}if(!l||-1!==u.indexOf(s))return!1;u.push(s)}return!0},construct:function(t){return null!==t?t:[]}})}}),require_pairs=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/pairs.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.toString;r.exports=new n("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:function(t){if(null===t)return!0;var r,n,a,o,s,l=t;for(s=Array(l.length),r=0,n=l.length;r<n;r+=1){if(a=l[r],"[object Object]"!==i.call(a)||1!==(o=Object.keys(a)).length)return!1;s[r]=[o[0],a[o[0]]]}return!0},construct:function(t){if(null===t)return[];var r,n,i,a,o,s=t;for(o=Array(s.length),r=0,n=s.length;r<n;r+=1)a=Object.keys(i=s[r]),o[r]=[a[0],i[a[0]]];return o}})}}),require_set2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/set.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.hasOwnProperty;r.exports=new n("tag:yaml.org,2002:set",{kind:"mapping",resolve:function(t){if(null===t)return!0;var r,n=t;for(r in n)if(i.call(n,r)&&null!==n[r])return!1;return!0},construct:function(t){return null!==t?t:{}}})}}),require_default2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/default.js"(t,r){init_globals(),r.exports=require_core6().extend({implicit:[require_timestamp(),require_merge()],explicit:[require_binary(),require_omap(),require_pairs(),require_set2()]})}}),require_loader=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/loader.js"(t,r){init_globals();var n=require_common7(),i=require_exception(),a=require_snippet(),o=require_default2(),s=Object.prototype.hasOwnProperty,l=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,u=/[\x85\u2028\u2029]/,d=/[,\[\]\{\}]/,c=/^(?:!|!!|![a-z\-]+!)$/i,h=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function f(t){return Object.prototype.toString.call(t)}function p(t){return 10===t||13===t}function m(t){return 9===t||32===t}function g(t){return 9===t||32===t||10===t||13===t}function b(t){return 44===t||91===t||93===t||123===t||125===t}function y(t){var r;return 48<=t&&t<=57?t-48:97<=(r=32|t)&&r<=102?r-97+10:-1}function _(t){return 48===t?"\0":97===t?"\x07":98===t?"\b":116===t||9===t?" ":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"\x1b":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"\x85":95===t?"\xa0":76===t?"\u2028":80===t?"\u2029":""}function v(t){return t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}var A,w=Array(256),x=Array(256);for(A=0;A<256;A++)w[A]=+!!_(A),x[A]=_(A);function E(t,r){this.input=t,this.filename=r.filename||null,this.schema=r.schema||o,this.onWarning=r.onWarning||null,this.legacy=r.legacy||!1,this.json=r.json||!1,this.listener=r.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function S(t,r){var n={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return n.snippet=a(n),new i(r,n)}function C(t,r){throw S(t,r)}function I(t,r){t.onWarning&&t.onWarning.call(null,S(t,r))}var T={YAML:function(t,r,n){var i,a,o;null!==t.version&&C(t,"duplication of %YAML directive"),1!==n.length&&C(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&C(t,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),o=parseInt(i[2],10),1!==a&&C(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=o<2,1!==o&&2!==o&&I(t,"unsupported YAML version of the document")},TAG:function(t,r,n){var i,a;2!==n.length&&C(t,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],c.test(i)||C(t,"ill-formed tag handle (first argument) of the TAG directive"),s.call(t.tagMap,i)&&C(t,'there is a previously declared suffix for "'+i+'" tag handle'),h.test(a)||C(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch(r){C(t,"tag prefix is malformed: "+a)}t.tagMap[i]=a}};function k(t,r,n,i){var a,o,s,u;if(r<n){if(u=t.input.slice(r,n),i)for(a=0,o=u.length;a<o;a+=1)9===(s=u.charCodeAt(a))||32<=s&&s<=1114111||C(t,"expected valid JSON character");else l.test(u)&&C(t,"the stream contains non-printable characters");t.result+=u}}function P(t,r,i,a){var o,l,u,d;for(n.isObject(i)||C(t,"cannot merge mappings; the provided source object is unacceptable"),u=0,d=(o=Object.keys(i)).length;u<d;u+=1)l=o[u],s.call(r,l)||(r[l]=i[l],a[l]=!0)}function R(t,r,n,i,a,o,l,u,d){var c,h;if(Array.isArray(a))for(c=0,h=(a=Array.prototype.slice.call(a)).length;c<h;c+=1)Array.isArray(a[c])&&C(t,"nested arrays are not supported inside keys"),"object"==typeof a&&"[object Object]"===f(a[c])&&(a[c]="[object Object]");if("object"==typeof a&&"[object Object]"===f(a)&&(a="[object Object]"),a=String(a),null===r&&(r={}),"tag:yaml.org,2002:merge"===i)if(Array.isArray(o))for(c=0,h=o.length;c<h;c+=1)P(t,r,o[c],n);else P(t,r,o,n);else t.json||s.call(n,a)||!s.call(r,a)||(t.line=l||t.line,t.lineStart=u||t.lineStart,t.position=d||t.position,C(t,"duplicated mapping key")),"__proto__"===a?Object.defineProperty(r,a,{configurable:!0,enumerable:!0,writable:!0,value:o}):r[a]=o,delete n[a];return r}function O(t){var r;10===(r=t.input.charCodeAt(t.position))?t.position++:13===r?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):C(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function M(t,r,n){for(var i=0,a=t.input.charCodeAt(t.position);0!==a;){for(;m(a);)9===a&&-1===t.firstTabInLine&&(t.firstTabInLine=t.position),a=t.input.charCodeAt(++t.position);if(r&&35===a)do a=t.input.charCodeAt(++t.position);while(10!==a&&13!==a&&0!==a);if(!p(a))break;for(O(t),a=t.input.charCodeAt(t.position),i++,t.lineIndent=0;32===a;)t.lineIndent++,a=t.input.charCodeAt(++t.position)}return -1!==n&&0!==i&&t.lineIndent<n&&I(t,"deficient indentation"),i}function j(t){var r,n=t.position;return!(45!==(r=t.input.charCodeAt(n))&&46!==r||r!==t.input.charCodeAt(n+1)||r!==t.input.charCodeAt(n+2)||(n+=3,0!==(r=t.input.charCodeAt(n))&&!g(r)))}function N(t,r){1===r?t.result+=" ":r>1&&(t.result+=n.repeat("\n",r-1))}function B(t,r){var n,i,a=t.tag,o=t.anchor,s=[],l=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=s),i=t.input.charCodeAt(t.position);0!==i&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,C(t,"tab characters must not be used in indentation")),45===i)&&g(t.input.charCodeAt(t.position+1));)if(l=!0,t.position++,M(t,!0,-1)&&t.lineIndent<=r)s.push(null),i=t.input.charCodeAt(t.position);else if(n=t.line,U(t,r,3,!1,!0),s.push(t.result),M(t,!0,-1),i=t.input.charCodeAt(t.position),(t.line===n||t.lineIndent>r)&&0!==i)C(t,"bad indentation of a sequence entry");else if(t.lineIndent<r)break;return!!l&&(t.tag=a,t.anchor=o,t.kind="sequence",t.result=s,!0)}function L(t){var r,n,i,a,o=!1,l=!1;if(33!==(a=t.input.charCodeAt(t.position)))return!1;if(null!==t.tag&&C(t,"duplication of a tag property"),60===(a=t.input.charCodeAt(++t.position))?(o=!0,a=t.input.charCodeAt(++t.position)):33===a?(l=!0,n="!!",a=t.input.charCodeAt(++t.position)):n="!",r=t.position,o){do a=t.input.charCodeAt(++t.position);while(0!==a&&62!==a);t.position<t.length?(i=t.input.slice(r,t.position),a=t.input.charCodeAt(++t.position)):C(t,"unexpected end of the stream within a verbatim tag")}else{for(;0!==a&&!g(a);)33===a&&(l?C(t,"tag suffix cannot contain exclamation marks"):(n=t.input.slice(r-1,t.position+1),c.test(n)||C(t,"named tag handle cannot contain such characters"),l=!0,r=t.position+1)),a=t.input.charCodeAt(++t.position);i=t.input.slice(r,t.position),d.test(i)&&C(t,"tag suffix cannot contain flow indicator characters")}i&&!h.test(i)&&C(t,"tag name cannot contain such characters: "+i);try{i=decodeURIComponent(i)}catch(r){C(t,"tag name is malformed: "+i)}return o?t.tag=i:s.call(t.tagMap,n)?t.tag=t.tagMap[n]+i:"!"===n?t.tag="!"+i:"!!"===n?t.tag="tag:yaml.org,2002:"+i:C(t,'undeclared tag handle "'+n+'"'),!0}function D(t){var r,n;if(38!==(n=t.input.charCodeAt(t.position)))return!1;for(null!==t.anchor&&C(t,"duplication of an anchor property"),n=t.input.charCodeAt(++t.position),r=t.position;0!==n&&!g(n)&&!b(n);)n=t.input.charCodeAt(++t.position);return t.position===r&&C(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(r,t.position),!0}function U(t,r,i,a,o){var l,u,d,c,h,f,_,A,E,S=1,I=!1,T=!1;if(null!==t.listener&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,l=u=d=4===i||3===i,a&&M(t,!0,-1)&&(I=!0,t.lineIndent>r?S=1:t.lineIndent===r?S=0:t.lineIndent<r&&(S=-1)),1===S)for(;L(t)||D(t);)M(t,!0,-1)?(I=!0,d=l,t.lineIndent>r?S=1:t.lineIndent===r?S=0:t.lineIndent<r&&(S=-1)):d=!1;if(d&&(d=I||o),1!==S&&4!==i||(A=1===i||2===i?r:r+1,E=t.position-t.lineStart,1===S?d&&(B(t,E)||function(t,r,n){var i,a,o,s,l,u,d,c=t.tag,h=t.anchor,f={},p=Object.create(null),b=null,y=null,_=null,v=!1,A=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=f),d=t.input.charCodeAt(t.position);0!==d;){if(v||-1===t.firstTabInLine||(t.position=t.firstTabInLine,C(t,"tab characters must not be used in indentation")),i=t.input.charCodeAt(t.position+1),o=t.line,(63===d||58===d)&&g(i))63===d?(v&&(R(t,f,p,b,y,null,s,l,u),b=y=_=null),A=!0,v=!0,a=!0):v?(v=!1,a=!0):C(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,d=i;else{if(s=t.line,l=t.lineStart,u=t.position,!U(t,n,2,!1,!0))break;if(t.line===o){for(d=t.input.charCodeAt(t.position);m(d);)d=t.input.charCodeAt(++t.position);if(58===d)g(d=t.input.charCodeAt(++t.position))||C(t,"a whitespace character is expected after the key-value separator within a block mapping"),v&&(R(t,f,p,b,y,null,s,l,u),b=y=_=null),A=!0,v=!1,a=!1,b=t.tag,y=t.result;else{if(!A)return t.tag=c,t.anchor=h,!0;C(t,"can not read an implicit mapping pair; a colon is missed")}}else{if(!A)return t.tag=c,t.anchor=h,!0;C(t,"can not read a block mapping entry; a multiline key may not be an implicit key")}}if((t.line===o||t.lineIndent>r)&&(v&&(s=t.line,l=t.lineStart,u=t.position),U(t,r,4,!0,a)&&(v?y=t.result:_=t.result),v||(R(t,f,p,b,y,_,s,l,u),b=y=_=null),M(t,!0,-1),d=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>r)&&0!==d)C(t,"bad indentation of a mapping entry");else if(t.lineIndent<r)break}return v&&R(t,f,p,b,y,null,s,l,u),A&&(t.tag=c,t.anchor=h,t.kind="mapping",t.result=f),A}(t,E,A))||function(t,r){var n,i,a,o,s,l,u,d,c,h,f,p,m=!0,b=t.tag,y=t.anchor,_=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))s=93,d=!1,o=[];else{if(123!==p)return!1;s=125,d=!0,o={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=o),p=t.input.charCodeAt(++t.position);0!==p;){if(M(t,!0,r),(p=t.input.charCodeAt(t.position))===s)return t.position++,t.tag=b,t.anchor=y,t.kind=d?"mapping":"sequence",t.result=o,!0;m?44===p&&C(t,"expected the node content, but found ','"):C(t,"missed comma between flow collection entries"),f=null,l=u=!1,63===p&&g(t.input.charCodeAt(t.position+1))&&(l=u=!0,t.position++,M(t,!0,r)),n=t.line,i=t.lineStart,a=t.position,U(t,r,1,!1,!0),h=t.tag,c=t.result,M(t,!0,r),p=t.input.charCodeAt(t.position),(u||t.line===n)&&58===p&&(l=!0,p=t.input.charCodeAt(++t.position),M(t,!0,r),U(t,r,1,!1,!0),f=t.result),d?R(t,o,_,h,c,f,n,i,a):l?o.push(R(t,null,_,h,c,f,n,i,a)):o.push(c),M(t,!0,r),44===(p=t.input.charCodeAt(t.position))?(m=!0,p=t.input.charCodeAt(++t.position)):m=!1}C(t,"unexpected end of the stream within a flow collection")}(t,A)?T=!0:(u&&function(t,r){var i,a,o,s,l,u=1,d=!1,c=!1,h=r,f=0,g=!1;if(124===(s=t.input.charCodeAt(t.position)))a=!1;else{if(62!==s)return!1;a=!0}for(t.kind="scalar",t.result="";0!==s;)if(43===(s=t.input.charCodeAt(++t.position))||45===s)1===u?u=43===s?3:2:C(t,"repeat of a chomping mode identifier");else{if(!((o=48<=(l=s)&&l<=57?l-48:-1)>=0))break;0===o?C(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?C(t,"repeat of an indentation width identifier"):(h=r+o-1,c=!0)}if(m(s)){do s=t.input.charCodeAt(++t.position);while(m(s));if(35===s)do s=t.input.charCodeAt(++t.position);while(!p(s)&&0!==s)}for(;0!==s;){for(O(t),t.lineIndent=0,s=t.input.charCodeAt(t.position);(!c||t.lineIndent<h)&&32===s;)t.lineIndent++,s=t.input.charCodeAt(++t.position);if(!c&&t.lineIndent>h&&(h=t.lineIndent),p(s))f++;else{if(t.lineIndent<h){3===u?t.result+=n.repeat("\n",d?1+f:f):1===u&&d&&(t.result+="\n");break}for(a?m(s)?(g=!0,t.result+=n.repeat("\n",d?1+f:f)):g?(g=!1,t.result+=n.repeat("\n",f+1)):0===f?d&&(t.result+=" "):t.result+=n.repeat("\n",f):t.result+=n.repeat("\n",d?1+f:f),d=!0,c=!0,f=0,i=t.position;!p(s)&&0!==s;)s=t.input.charCodeAt(++t.position);k(t,i,t.position,!1)}}return!0}(t,A)||function(t,r){var n,i,a;if(39!==(n=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,i=a=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(k(t,i,t.position,!0),39!==(n=t.input.charCodeAt(++t.position)))return!0;i=t.position,t.position++,a=t.position}else p(n)?(k(t,i,a,!0),N(t,M(t,!1,r)),i=a=t.position):t.position===t.lineStart&&j(t)?C(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);C(t,"unexpected end of the stream within a single quoted scalar")}(t,A)||function(t,r){var n,i,a,o,s,l,u;if(34!==(l=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;0!==(l=t.input.charCodeAt(t.position));){if(34===l)return k(t,n,t.position,!0),t.position++,!0;if(92===l){if(k(t,n,t.position,!0),p(l=t.input.charCodeAt(++t.position)))M(t,!1,r);else if(l<256&&w[l])t.result+=x[l],t.position++;else if((s=120===(u=l)?2:117===u?4:8*(85===u))>0){for(a=s,o=0;a>0;a--)(s=y(l=t.input.charCodeAt(++t.position)))>=0?o=(o<<4)+s:C(t,"expected hexadecimal character");t.result+=v(o),t.position++}else C(t,"unknown escape sequence");n=i=t.position}else p(l)?(k(t,n,i,!0),N(t,M(t,!1,r)),n=i=t.position):t.position===t.lineStart&&j(t)?C(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}C(t,"unexpected end of the stream within a double quoted scalar")}(t,A)?T=!0:!function(t){var r,n,i;if(42!==(i=t.input.charCodeAt(t.position)))return!1;for(i=t.input.charCodeAt(++t.position),r=t.position;0!==i&&!g(i)&&!b(i);)i=t.input.charCodeAt(++t.position);return t.position===r&&C(t,"name of an alias node must contain at least one character"),n=t.input.slice(r,t.position),s.call(t.anchorMap,n)||C(t,'unidentified alias "'+n+'"'),t.result=t.anchorMap[n],M(t,!0,-1),!0}(t)?function(t,r,n){var i,a,o,s,l,u,d,c,h=t.kind,f=t.result;if(g(c=t.input.charCodeAt(t.position))||b(c)||35===c||38===c||42===c||33===c||124===c||62===c||39===c||34===c||37===c||64===c||96===c||(63===c||45===c)&&(g(i=t.input.charCodeAt(t.position+1))||n&&b(i)))return!1;for(t.kind="scalar",t.result="",a=o=t.position,s=!1;0!==c;){if(58===c){if(g(i=t.input.charCodeAt(t.position+1))||n&&b(i))break}else if(35===c){if(g(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&j(t)||n&&b(c))break;if(p(c)){if(l=t.line,u=t.lineStart,d=t.lineIndent,M(t,!1,-1),t.lineIndent>=r){s=!0,c=t.input.charCodeAt(t.position);continue}t.position=o,t.line=l,t.lineStart=u,t.lineIndent=d;break}}s&&(k(t,a,o,!1),N(t,t.line-l),a=o=t.position,s=!1),m(c)||(o=t.position+1),c=t.input.charCodeAt(++t.position)}return k(t,a,o,!1),!!t.result||(t.kind=h,t.result=f,!1)}(t,A,1===i)&&(T=!0,null===t.tag&&(t.tag="?")):(T=!0,null===t.tag&&null===t.anchor||C(t,"alias node should not have any properties")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===S&&(T=d&&B(t,E))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&C(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),c=0,h=t.implicitTypes.length;c<h;c+=1)if((_=t.implicitTypes[c]).resolve(t.result)){t.result=_.construct(t.result),t.tag=_.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else if("!"!==t.tag){if(s.call(t.typeMap[t.kind||"fallback"],t.tag))_=t.typeMap[t.kind||"fallback"][t.tag];else for(_=null,c=0,h=(f=t.typeMap.multi[t.kind||"fallback"]).length;c<h;c+=1)if(t.tag.slice(0,f[c].tag.length)===f[c].tag){_=f[c];break}_||C(t,"unknown tag !<"+t.tag+">"),null!==t.result&&_.kind!==t.kind&&C(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+_.kind+'", not "'+t.kind+'"'),_.resolve(t.result,t.tag)?(t.result=_.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):C(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||T}function F(t){var r,n,i,a,o=t.position,l=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(a=t.input.charCodeAt(t.position))&&(M(t,!0,-1),a=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==a));){for(l=!0,a=t.input.charCodeAt(++t.position),r=t.position;0!==a&&!g(a);)a=t.input.charCodeAt(++t.position);for(i=[],(n=t.input.slice(r,t.position)).length<1&&C(t,"directive name must not be less than one character in length");0!==a;){for(;m(a);)a=t.input.charCodeAt(++t.position);if(35===a){do a=t.input.charCodeAt(++t.position);while(0!==a&&!p(a));break}if(p(a))break;for(r=t.position;0!==a&&!g(a);)a=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}0!==a&&O(t),s.call(T,n)?T[n](t,n,i):I(t,'unknown document directive "'+n+'"')}M(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,M(t,!0,-1)):l&&C(t,"directives end mark is expected"),U(t,t.lineIndent-1,4,!1,!0),M(t,!0,-1),t.checkLineBreaks&&u.test(t.input.slice(o,t.position))&&I(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&j(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,M(t,!0,-1)):t.position<t.length-1&&C(t,"end of the stream or a document separator is expected")}function z(t,r){r=r||{},0!==(t=String(t)).length&&(10!==t.charCodeAt(t.length-1)&&13!==t.charCodeAt(t.length-1)&&(t+="\n"),65279===t.charCodeAt(0)&&(t=t.slice(1)));var n=new E(t,r),i=t.indexOf("\0");for(-1!==i&&(n.position=i,C(n,"null byte is not allowed in input")),n.input+="\0";32===n.input.charCodeAt(n.position);)n.lineIndent+=1,n.position+=1;for(;n.position<n.length-1;)F(n);return n.documents}r.exports.loadAll=function(t,r,n){null!==r&&"object"==typeof r&&void 0===n&&(n=r,r=null);var i=z(t,n);if("function"!=typeof r)return i;for(var a=0,o=i.length;a<o;a+=1)r(i[a])},r.exports.load=function(t,r){var n=z(t,r);if(0!==n.length){if(1===n.length)return n[0];throw new i("expected a single document in the stream, but found more")}}}}),require_dumper=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/dumper.js"(t,r){init_globals();var n=require_common7(),i=require_exception(),a=require_default2(),o=Object.prototype.toString,s=Object.prototype.hasOwnProperty,l=65279,u={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},d=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],c=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function h(t){var r,a,o;if(r=t.toString(16).toUpperCase(),t<=255)a="x",o=2;else if(t<=65535)a="u",o=4;else{if(!(t<=0xffffffff))throw new i("code point within a string may not be greater than 0xFFFFFFFF");a="U",o=8}return"\\"+a+n.repeat("0",o-r.length)+r}function f(t){this.schema=t.schema||a,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=n.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=function(t,r){var n,i,a,o,l,u,d;if(null===r)return{};for(n={},a=0,o=(i=Object.keys(r)).length;a<o;a+=1)u=String(r[l=i[a]]),"!!"===l.slice(0,2)&&(l="tag:yaml.org,2002:"+l.slice(2)),(d=t.compiledTypeMap.fallback[l])&&s.call(d.styleAliases,u)&&(u=d.styleAliases[u]),n[l]=u;return n}(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType='"'===t.quotingType?2:1,this.forceQuotes=t.forceQuotes||!1,this.replacer="function"==typeof t.replacer?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function p(t,r){for(var i,a=n.repeat(" ",r),o=0,s=-1,l="",u=t.length;o<u;)-1===(s=t.indexOf("\n",o))?(i=t.slice(o),o=u):(i=t.slice(o,s+1),o=s+1),i.length&&"\n"!==i&&(l+=a),l+=i;return l}function m(t,r){return"\n"+n.repeat(" ",t.indent*r)}function g(t){return 32===t||9===t}function b(t){return 32<=t&&t<=126||161<=t&&t<=55295&&8232!==t&&8233!==t||57344<=t&&t<=65533&&t!==l||65536<=t&&t<=1114111}function y(t){return b(t)&&t!==l&&13!==t&&10!==t}function _(t,r,n){var i=y(t),a=i&&!g(t);return(n?i:i&&44!==t&&91!==t&&93!==t&&123!==t&&125!==t)&&35!==t&&!(58===r&&!a)||y(r)&&!g(r)&&35===t||58===r&&a}function v(t,r){var n,i=t.charCodeAt(r);return i>=55296&&i<=56319&&r+1<t.length&&(n=t.charCodeAt(r+1))>=56320&&n<=57343?1024*(i-55296)+n-56320+65536:i}function A(t){return/^\n* /.test(t)}function w(t,r,n,i,a,o,s,u){var d,c,h=0,f=null,p=!1,m=!1,y=-1!==i,w=-1,x=b(c=v(t,0))&&c!==l&&!g(c)&&45!==c&&63!==c&&58!==c&&44!==c&&91!==c&&93!==c&&123!==c&&125!==c&&35!==c&&38!==c&&42!==c&&33!==c&&124!==c&&61!==c&&62!==c&&39!==c&&34!==c&&37!==c&&64!==c&&96!==c&&function(t){return!g(t)&&58!==t}(v(t,t.length-1));if(r||s)for(d=0;d<t.length;h>=65536?d+=2:d++){if(!b(h=v(t,d)))return 5;x=x&&_(h,f,u),f=h}else{for(d=0;d<t.length;h>=65536?d+=2:d++){if(10===(h=v(t,d)))p=!0,y&&(m=m||d-w-1>i&&" "!==t[w+1],w=d);else if(!b(h))return 5;x=x&&_(h,f,u),f=h}m=m||y&&d-w-1>i&&" "!==t[w+1]}return p||m?n>9&&A(t)?5:s?2===o?5:2:m?4:3:!x||s||a(t)?2===o?5:2:1}function x(t,r,n,a,o){t.dump=function(){if(0===r.length)return 2===t.quotingType?'""':"''";if(!t.noCompatMode&&(-1!==d.indexOf(r)||c.test(r)))return 2===t.quotingType?'"'+r+'"':"'"+r+"'";var s=t.indent*Math.max(1,n),l=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-s);switch(w(r,a||t.flowLevel>-1&&n>=t.flowLevel,t.indent,l,function(r){return function(t,r){var n,i;for(n=0,i=t.implicitTypes.length;n<i;n+=1)if(t.implicitTypes[n].resolve(r))return!0;return!1}(t,r)},t.quotingType,t.forceQuotes&&!a,o)){case 1:return r;case 2:return"'"+r.replace(/'/g,"''")+"'";case 3:return"|"+E(r,t.indent)+S(p(r,s));case 4:return">"+E(r,t.indent)+S(p(function(t,r){for(var n,i,a,o=/(\n+)([^\n]*)/g,s=(o.lastIndex=n=-1!==(n=t.indexOf("\n"))?n:t.length,C(t.slice(0,n),r)),l="\n"===t[0]||" "===t[0];a=o.exec(t);){var u=a[1],d=a[2];i=" "===d[0],s+=u+(l||i||""===d?"":"\n")+C(d,r),l=i}return s}(r,l),s));case 5:return'"'+function(t){for(var r,n="",i=0,a=0;a<t.length;i>=65536?a+=2:a++)!(r=u[i=v(t,a)])&&b(i)?(n+=t[a],i>=65536&&(n+=t[a+1])):n+=r||h(i);return n}(r)+'"';default:throw new i("impossible error: invalid scalar style")}}()}function E(t,r){var n=A(t)?String(r):"",i="\n"===t[t.length-1];return n+(i&&("\n"===t[t.length-2]||"\n"===t)?"+":i?"":"-")+"\n"}function S(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function C(t,r){if(""===t||" "===t[0])return t;for(var n,i,a=/ [^ ]/g,o=0,s=0,l=0,u="";n=a.exec(t);)(l=n.index)-o>r&&(i=s>o?s:l,u+="\n"+t.slice(o,i),o=i+1),s=l;return u+="\n",t.length-o>r&&s>o?u+=t.slice(o,s)+"\n"+t.slice(s+1):u+=t.slice(o),u.slice(1)}function I(t,r,n,i){var a,o,s,l="",u=t.tag;for(a=0,o=n.length;a<o;a+=1)s=n[a],t.replacer&&(s=t.replacer.call(n,String(a),s)),(k(t,r+1,s,!0,!0,!1,!0)||void 0===s&&k(t,r+1,null,!0,!0,!1,!0))&&(i&&""===l||(l+=m(t,r)),t.dump&&10===t.dump.charCodeAt(0)?l+="-":l+="- ",l+=t.dump);t.tag=u,t.dump=l||"[]"}function T(t,r,n){var a,l,u,d,c,h;for(u=0,d=(l=n?t.explicitTypes:t.implicitTypes).length;u<d;u+=1)if(((c=l[u]).instanceOf||c.predicate)&&(!c.instanceOf||"object"==typeof r&&r instanceof c.instanceOf)&&(!c.predicate||c.predicate(r))){if(n?c.multi&&c.representName?t.tag=c.representName(r):t.tag=c.tag:t.tag="?",c.represent){if(h=t.styleMap[c.tag]||c.defaultStyle,"[object Function]"===o.call(c.represent))a=c.represent(r,h);else{if(!s.call(c.represent,h))throw new i("!<"+c.tag+'> tag resolver accepts not "'+h+'" style');a=c.represent[h](r,h)}t.dump=a}return!0}return!1}function k(t,r,n,a,s,l,u){t.tag=null,t.dump=n,T(t,n,!1)||T(t,n,!0);var d,c=o.call(t.dump),h=a;a&&(a=t.flowLevel<0||t.flowLevel>r);var f,p,g="[object Object]"===c||"[object Array]"===c;if(g&&(p=-1!==(f=t.duplicates.indexOf(n))),(null!==t.tag&&"?"!==t.tag||p||2!==t.indent&&r>0)&&(s=!1),p&&t.usedDuplicates[f])t.dump="*ref_"+f;else{if(g&&p&&!t.usedDuplicates[f]&&(t.usedDuplicates[f]=!0),"[object Object]"===c)a&&0!==Object.keys(t.dump).length?(!function(t,r,n,a){var o,s,l,u,d,c,h="",f=t.tag,p=Object.keys(n);if(!0===t.sortKeys)p.sort();else if("function"==typeof t.sortKeys)p.sort(t.sortKeys);else if(t.sortKeys)throw new i("sortKeys must be a boolean or a function");for(o=0,s=p.length;o<s;o+=1)c="",a&&""===h||(c+=m(t,r)),u=n[l=p[o]],t.replacer&&(u=t.replacer.call(n,l,u)),k(t,r+1,l,!0,!0,!0)&&((d=null!==t.tag&&"?"!==t.tag||t.dump&&t.dump.length>1024)&&(t.dump&&10===t.dump.charCodeAt(0)?c+="?":c+="? "),c+=t.dump,d&&(c+=m(t,r)),k(t,r+1,u,!0,d)&&(t.dump&&10===t.dump.charCodeAt(0)?c+=":":c+=": ",h+=c+=t.dump));t.tag=f,t.dump=h||"{}"}(t,r,t.dump,s),p&&(t.dump="&ref_"+f+t.dump)):(!function(t,r,n){var i,a,o,s,l,u="",d=t.tag,c=Object.keys(n);for(i=0,a=c.length;i<a;i+=1)l="",""!==u&&(l+=", "),t.condenseFlow&&(l+='"'),s=n[o=c[i]],t.replacer&&(s=t.replacer.call(n,o,s)),k(t,r,o,!1,!1)&&(t.dump.length>1024&&(l+="? "),l+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),k(t,r,s,!1,!1)&&(u+=l+=t.dump));t.tag=d,t.dump="{"+u+"}"}(t,r,t.dump),p&&(t.dump="&ref_"+f+" "+t.dump));else if("[object Array]"===c)a&&0!==t.dump.length?(t.noArrayIndent&&!u&&r>0?I(t,r-1,t.dump,s):I(t,r,t.dump,s),p&&(t.dump="&ref_"+f+t.dump)):(!function(t,r,n){var i,a,o,s="",l=t.tag;for(i=0,a=n.length;i<a;i+=1)o=n[i],t.replacer&&(o=t.replacer.call(n,String(i),o)),(k(t,r,o,!1,!1)||void 0===o&&k(t,r,null,!1,!1))&&(""!==s&&(s+=","+(t.condenseFlow?"":" ")),s+=t.dump);t.tag=l,t.dump="["+s+"]"}(t,r,t.dump),p&&(t.dump="&ref_"+f+" "+t.dump));else{if("[object String]"!==c){if("[object Undefined]"===c||t.skipInvalid)return!1;throw new i("unacceptable kind of an object to dump "+c)}"?"!==t.tag&&x(t,t.dump,r,l,h)}null!==t.tag&&"?"!==t.tag&&(d=encodeURI("!"===t.tag[0]?t.tag.slice(1):t.tag).replace(/!/g,"%21"),d="!"===t.tag[0]?"!"+d:"tag:yaml.org,2002:"===d.slice(0,18)?"!!"+d.slice(18):"!<"+d+">",t.dump=d+" "+t.dump)}return!0}function P(t,r){var n,i,a=[],o=[];for(R(t,a,o),n=0,i=o.length;n<i;n+=1)r.duplicates.push(a[o[n]]);r.usedDuplicates=Array(i)}function R(t,r,n){var i,a,o;if(null!==t&&"object"==typeof t)if(-1!==(a=r.indexOf(t)))-1===n.indexOf(a)&&n.push(a);else if(r.push(t),Array.isArray(t))for(a=0,o=t.length;a<o;a+=1)R(t[a],r,n);else for(a=0,o=(i=Object.keys(t)).length;a<o;a+=1)R(t[i[a]],r,n)}r.exports.dump=function(t,r){var n=new f(r=r||{});n.noRefs||P(t,n);var i=t;return n.replacer&&(i=n.replacer.call({"":i},"",i)),k(n,0,i,!0,!0)?n.dump+"\n":""}}}),require_js_yaml=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/index.js"(t,r){init_globals();var n=require_loader(),i=require_dumper();function a(t,r){return function(){throw Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+r+" instead, which is now safe by default.")}}r.exports.Type=require_type2(),r.exports.Schema=require_schema(),r.exports.FAILSAFE_SCHEMA=require_failsafe(),r.exports.JSON_SCHEMA=require_json2(),r.exports.CORE_SCHEMA=require_core6(),r.exports.DEFAULT_SCHEMA=require_default2(),r.exports.load=n.load,r.exports.loadAll=n.loadAll,r.exports.dump=i.dump,r.exports.YAMLException=require_exception(),r.exports.types={binary:require_binary(),float:require_float(),map:require_map2(),null:require_null2(),pairs:require_pairs(),set:require_set2(),timestamp:require_timestamp(),bool:require_bool(),int:require_int(),merge:require_merge(),omap:require_omap(),seq:require_seq(),str:require_str()},r.exports.safeLoad=a("safeLoad","load"),r.exports.safeLoadAll=a("safeLoadAll","loadAll"),r.exports.safeDump=a("safeDump","dump")}}),require_constants11=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/constants.js"(t,r){init_globals(),r.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||0x1fffffffffffff,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}}),require_debug2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/debug.js"(t,r){init_globals(),r.exports="object"==typeof import_browser.default&&import_browser.default.env&&import_browser.default.env.NODE_DEBUG&&/\bsemver\b/i.test(import_browser.default.env.NODE_DEBUG)?(...t)=>import_console_browserify.default.error("SEMVER",...t):()=>{}}}),require_re2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/re.js"(t,r){init_globals();var{MAX_SAFE_COMPONENT_LENGTH:n}=require_constants11(),i=require_debug2(),a=(t=r.exports={}).re=[],o=t.safeRe=[],s=t.src=[],l=t.t={},u=0,d=(t,r,n)=>{let d=r.split("\\s*").join("\\s{0,1}").split("\\s+").join("\\s"),c=u++;i(t,c,r),l[t]=c,s[c]=r,a[c]=new RegExp(r,n?"g":void 0),o[c]=new RegExp(d,n?"g":void 0)};d("NUMERICIDENTIFIER","0|[1-9]\\d*"),d("NUMERICIDENTIFIERLOOSE","[0-9]+"),d("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),d("MAINVERSION",`(${s[l.NUMERICIDENTIFIER]})\\.(${s[l.NUMERICIDENTIFIER]})\\.(${s[l.NUMERICIDENTIFIER]})`),d("MAINVERSIONLOOSE",`(${s[l.NUMERICIDENTIFIERLOOSE]})\\.(${s[l.NUMERICIDENTIFIERLOOSE]})\\.(${s[l.NUMERICIDENTIFIERLOOSE]})`),d("PRERELEASEIDENTIFIER",`(?:${s[l.NUMERICIDENTIFIER]}|${s[l.NONNUMERICIDENTIFIER]})`),d("PRERELEASEIDENTIFIERLOOSE",`(?:${s[l.NUMERICIDENTIFIERLOOSE]}|${s[l.NONNUMERICIDENTIFIER]})`),d("PRERELEASE",`(?:-(${s[l.PRERELEASEIDENTIFIER]}(?:\\.${s[l.PRERELEASEIDENTIFIER]})*))`),d("PRERELEASELOOSE",`(?:-?(${s[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${s[l.PRERELEASEIDENTIFIERLOOSE]})*))`),d("BUILDIDENTIFIER","[0-9A-Za-z-]+"),d("BUILD",`(?:\\+(${s[l.BUILDIDENTIFIER]}(?:\\.${s[l.BUILDIDENTIFIER]})*))`),d("FULLPLAIN",`v?${s[l.MAINVERSION]}${s[l.PRERELEASE]}?${s[l.BUILD]}?`),d("FULL",`^${s[l.FULLPLAIN]}$`),d("LOOSEPLAIN",`[v=\\s]*${s[l.MAINVERSIONLOOSE]}${s[l.PRERELEASELOOSE]}?${s[l.BUILD]}?`),d("LOOSE",`^${s[l.LOOSEPLAIN]}$`),d("GTLT","((?:<|>)?=?)"),d("XRANGEIDENTIFIERLOOSE",`${s[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),d("XRANGEIDENTIFIER",`${s[l.NUMERICIDENTIFIER]}|x|X|\\*`),d("XRANGEPLAIN",`[v=\\s]*(${s[l.XRANGEIDENTIFIER]})(?:\\.(${s[l.XRANGEIDENTIFIER]})(?:\\.(${s[l.XRANGEIDENTIFIER]})(?:${s[l.PRERELEASE]})?${s[l.BUILD]}?)?)?`),d("XRANGEPLAINLOOSE",`[v=\\s]*(${s[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${s[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${s[l.XRANGEIDENTIFIERLOOSE]})(?:${s[l.PRERELEASELOOSE]})?${s[l.BUILD]}?)?)?`),d("XRANGE",`^${s[l.GTLT]}\\s*${s[l.XRANGEPLAIN]}$`),d("XRANGELOOSE",`^${s[l.GTLT]}\\s*${s[l.XRANGEPLAINLOOSE]}$`),d("COERCE",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?(?:$|[^\\d])`),d("COERCERTL",s[l.COERCE],!0),d("LONETILDE","(?:~>?)"),d("TILDETRIM",`(\\s*)${s[l.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",d("TILDE",`^${s[l.LONETILDE]}${s[l.XRANGEPLAIN]}$`),d("TILDELOOSE",`^${s[l.LONETILDE]}${s[l.XRANGEPLAINLOOSE]}$`),d("LONECARET","(?:\\^)"),d("CARETTRIM",`(\\s*)${s[l.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",d("CARET",`^${s[l.LONECARET]}${s[l.XRANGEPLAIN]}$`),d("CARETLOOSE",`^${s[l.LONECARET]}${s[l.XRANGEPLAINLOOSE]}$`),d("COMPARATORLOOSE",`^${s[l.GTLT]}\\s*(${s[l.LOOSEPLAIN]})$|^$`),d("COMPARATOR",`^${s[l.GTLT]}\\s*(${s[l.FULLPLAIN]})$|^$`),d("COMPARATORTRIM",`(\\s*)${s[l.GTLT]}\\s*(${s[l.LOOSEPLAIN]}|${s[l.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",d("HYPHENRANGE",`^\\s*(${s[l.XRANGEPLAIN]})\\s+-\\s+(${s[l.XRANGEPLAIN]})\\s*$`),d("HYPHENRANGELOOSE",`^\\s*(${s[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${s[l.XRANGEPLAINLOOSE]})\\s*$`),d("STAR","(<|>)?=?\\s*\\*"),d("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),d("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}}),require_parse_options2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/parse-options.js"(t,r){init_globals();var n=Object.freeze({loose:!0}),i=Object.freeze({});r.exports=t=>t?"object"!=typeof t?n:t:i}}),require_identifiers2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/identifiers.js"(t,r){init_globals();var n=/^[0-9]+$/,i=(t,r)=>{let i=n.test(t),a=n.test(r);return i&&a&&(t*=1,r*=1),t===r?0:i&&!a?-1:a&&!i?1:t<r?-1:1};r.exports={compareIdentifiers:i,rcompareIdentifiers:(t,r)=>i(r,t)}}}),require_semver3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/semver.js"(t,r){init_globals();var n=require_debug2(),{MAX_LENGTH:i,MAX_SAFE_INTEGER:a}=require_constants11(),{safeRe:o,t:s}=require_re2(),l=require_parse_options2(),{compareIdentifiers:u}=require_identifiers2();r.exports=class t{constructor(r,u){if(u=l(u),r instanceof t){if(!!u.loose===r.loose&&!!u.includePrerelease===r.includePrerelease)return r;r=r.version}else if("string"!=typeof r)throw TypeError(`Invalid version. Must be a string. Got type "${typeof r}".`);if(r.length>i)throw TypeError(`version is longer than ${i} characters`);n("SemVer",r,u),this.options=u,this.loose=!!u.loose,this.includePrerelease=!!u.includePrerelease;let d=r.trim().match(u.loose?o[s.LOOSE]:o[s.FULL]);if(!d)throw TypeError(`Invalid Version: ${r}`);if(this.raw=r,this.major=+d[1],this.minor=+d[2],this.patch=+d[3],this.major>a||this.major<0)throw TypeError("Invalid major version");if(this.minor>a||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>a||this.patch<0)throw TypeError("Invalid patch version");d[4]?this.prerelease=d[4].split(".").map(t=>{if(/^[0-9]+$/.test(t)){let r=+t;if(r>=0&&r<a)return r}return t}):this.prerelease=[],this.build=d[5]?d[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(r){if(n("SemVer.compare",this.version,this.options,r),!(r instanceof t)){if("string"==typeof r&&r===this.version)return 0;r=new t(r,this.options)}return r.version===this.version?0:this.compareMain(r)||this.comparePre(r)}compareMain(r){return r instanceof t||(r=new t(r,this.options)),u(this.major,r.major)||u(this.minor,r.minor)||u(this.patch,r.patch)}comparePre(r){if(r instanceof t||(r=new t(r,this.options)),this.prerelease.length&&!r.prerelease.length)return -1;if(!this.prerelease.length&&r.prerelease.length)return 1;if(!this.prerelease.length&&!r.prerelease.length)return 0;let i=0;do{let t=this.prerelease[i],a=r.prerelease[i];if(n("prerelease compare",i,t,a),void 0===t&&void 0===a)return 0;if(void 0===a)return 1;if(void 0===t)return -1;if(t!==a)return u(t,a)}while(++i)}compareBuild(r){r instanceof t||(r=new t(r,this.options));let i=0;do{let t=this.build[i],a=r.build[i];if(n("prerelease compare",i,t,a),void 0===t&&void 0===a)return 0;if(void 0===a)return 1;if(void 0===t)return -1;if(t!==a)return u(t,a)}while(++i)}inc(t,r,n){switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{let t=+!!Number(n);if(!r&&!1===n)throw Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[t];else{let i=this.prerelease.length;for(;--i>=0;)"number"==typeof this.prerelease[i]&&(this.prerelease[i]++,i=-2);if(-1===i){if(r===this.prerelease.join(".")&&!1===n)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(r){let i=[r,t];!1===n&&(i=[r]),0===u(this.prerelease[0],r)?isNaN(this.prerelease[1])&&(this.prerelease=i):this.prerelease=i}break}default:throw Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}}}),require_parse4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/parse.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i=!1)=>{if(t instanceof n)return t;try{return new n(t,r)}catch(t){if(!i)return null;throw t}}}}),require_valid3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/valid.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,r);return i?i.version:null}}}),require_clean2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/clean.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t.trim().replace(/^[=v]+/,""),r);return i?i.version:null}}}),require_inc2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/inc.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i,a,o)=>{"string"==typeof i&&(o=a,a=i,i=void 0);try{return new n(t instanceof n?t.version:t,i).inc(r,a,o).version}catch(t){return null}}}}),require_diff2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/diff.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,null,!0),a=n(r,null,!0),o=i.compare(a);if(0===o)return null;let s=o>0,l=s?i:a,u=s?a:i,d=!!l.prerelease.length;if(u.prerelease.length&&!d)return u.patch||u.minor?l.patch?"patch":l.minor?"minor":"major":"major";let c=d?"pre":"";return i.major!==a.major?c+"major":i.minor!==a.minor?c+"minor":i.patch!==a.patch?c+"patch":"prerelease"}}}),require_major2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/major.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).major}}),require_minor2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/minor.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).minor}}),require_patch2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/patch.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).patch}}),require_prerelease2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/prerelease.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,r);return i&&i.prerelease.length?i.prerelease:null}}}),require_compare2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i)=>new n(t,i).compare(new n(r,i))}}),require_rcompare2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/rcompare.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(r,t,i)}}),require_compare_loose2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare-loose.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r)=>n(t,r,!0)}}),require_compare_build2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare-build.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i)=>{let a=new n(t,i),o=new n(r,i);return a.compare(o)||a.compareBuild(o)}}}),require_sort2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/sort.js"(t,r){init_globals();var n=require_compare_build2();r.exports=(t,r)=>t.sort((t,i)=>n(t,i,r))}}),require_rsort2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/rsort.js"(t,r){init_globals();var n=require_compare_build2();r.exports=(t,r)=>t.sort((t,i)=>n(i,t,r))}}),require_gt2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/gt.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(t,r,i)>0}}),require_lt2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/lt.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0>n(t,r,i)}}),require_eq2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/eq.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0===n(t,r,i)}}),require_neq2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/neq.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0!==n(t,r,i)}}),require_gte2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/gte.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(t,r,i)>=0}}),require_lte2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/lte.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0>=n(t,r,i)}}),require_cmp2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/cmp.js"(t,r){init_globals();var n=require_eq2(),i=require_neq2(),a=require_gt2(),o=require_gte2(),s=require_lt2(),l=require_lte2();r.exports=(t,r,u,d)=>{switch(r){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof u&&(u=u.version),t===u;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof u&&(u=u.version),t!==u;case"":case"=":case"==":return n(t,u,d);case"!=":return i(t,u,d);case">":return a(t,u,d);case">=":return o(t,u,d);case"<":return s(t,u,d);case"<=":return l(t,u,d);default:throw TypeError(`Invalid operator: ${r}`)}}}}),require_coerce2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/coerce.js"(t,r){init_globals();var n=require_semver3(),i=require_parse4(),{safeRe:a,t:o}=require_re2();r.exports=(t,r)=>{if(t instanceof n)return t;if("number"==typeof t&&(t=String(t)),"string"!=typeof t)return null;let s=null;if((r=r||{}).rtl){let r;for(;(r=a[o.COERCERTL].exec(t))&&(!s||s.index+s[0].length!==t.length);)s&&r.index+r[0].length===s.index+s[0].length||(s=r),a[o.COERCERTL].lastIndex=r.index+r[1].length+r[2].length;a[o.COERCERTL].lastIndex=-1}else s=t.match(a[o.COERCE]);return null===s?null:i(`${s[2]}.${s[3]||"0"}.${s[4]||"0"}`,r)}}}),require_iterator=__commonJS({"../../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js"(t,r){init_globals(),r.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}}}),require_yallist=__commonJS({"../../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js"(t,r){function n(t){var r=this;if(r instanceof n||(r=new n),r.tail=null,r.head=null,r.length=0,t&&"function"==typeof t.forEach)t.forEach(function(t){r.push(t)});else if(arguments.length>0)for(var i=0,a=arguments.length;i<a;i++)r.push(arguments[i]);return r}function i(t,r,n){var i=r===t.head?new s(n,null,r,t):new s(n,r,r.next,t);return null===i.next&&(t.tail=i),null===i.prev&&(t.head=i),t.length++,i}function a(t,r){t.tail=new s(r,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function o(t,r){t.head=new s(r,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function s(t,r,n,i){if(!(this instanceof s))return new s(t,r,n,i);this.list=i,this.value=t,r?(r.next=this,this.prev=r):this.prev=null,n?(n.prev=this,this.next=n):this.next=null}init_globals(),r.exports=n,n.Node=s,n.create=n,n.prototype.removeNode=function(t){if(t.list!==this)throw Error("removing node which does not belong to this list");var r=t.next,n=t.prev;return r&&(r.prev=n),n&&(n.next=r),t===this.head&&(this.head=r),t===this.tail&&(this.tail=n),t.list.length--,t.next=null,t.prev=null,t.list=null,r},n.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var r=this.head;t.list=this,t.next=r,r&&(r.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}},n.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var r=this.tail;t.list=this,t.prev=r,r&&(r.next=t),this.tail=t,this.head||(this.head=t),this.length++}},n.prototype.push=function(){for(var t=0,r=arguments.length;t<r;t++)a(this,arguments[t]);return this.length},n.prototype.unshift=function(){for(var t=0,r=arguments.length;t<r;t++)o(this,arguments[t]);return this.length},n.prototype.pop=function(){if(this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}},n.prototype.shift=function(){if(this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}},n.prototype.forEach=function(t,r){r=r||this;for(var n=this.head,i=0;null!==n;i++)t.call(r,n.value,i,this),n=n.next},n.prototype.forEachReverse=function(t,r){r=r||this;for(var n=this.tail,i=this.length-1;null!==n;i--)t.call(r,n.value,i,this),n=n.prev},n.prototype.get=function(t){for(var r=0,n=this.head;null!==n&&r<t;r++)n=n.next;if(r===t&&null!==n)return n.value},n.prototype.getReverse=function(t){for(var r=0,n=this.tail;null!==n&&r<t;r++)n=n.prev;if(r===t&&null!==n)return n.value},n.prototype.map=function(t,r){r=r||this;for(var i=new n,a=this.head;null!==a;)i.push(t.call(r,a.value,this)),a=a.next;return i},n.prototype.mapReverse=function(t,r){r=r||this;for(var i=new n,a=this.tail;null!==a;)i.push(t.call(r,a.value,this)),a=a.prev;return i},n.prototype.reduce=function(t,r){var n,i=this.head;if(arguments.length>1)n=r;else{if(!this.head)throw TypeError("Reduce of empty list with no initial value");i=this.head.next,n=this.head.value}for(var a=0;null!==i;a++)n=t(n,i.value,a),i=i.next;return n},n.prototype.reduceReverse=function(t,r){var n,i=this.tail;if(arguments.length>1)n=r;else{if(!this.tail)throw TypeError("Reduce of empty list with no initial value");i=this.tail.prev,n=this.tail.value}for(var a=this.length-1;null!==i;a--)n=t(n,i.value,a),i=i.prev;return n},n.prototype.toArray=function(){for(var t=Array(this.length),r=0,n=this.head;null!==n;r++)t[r]=n.value,n=n.next;return t},n.prototype.toArrayReverse=function(){for(var t=Array(this.length),r=0,n=this.tail;null!==n;r++)t[r]=n.value,n=n.prev;return t},n.prototype.slice=function(t,r){(r=r||this.length)<0&&(r+=this.length),(t=t||0)<0&&(t+=this.length);var i=new n;if(r<t||r<0)return i;t<0&&(t=0),r>this.length&&(r=this.length);for(var a=0,o=this.head;null!==o&&a<t;a++)o=o.next;for(;null!==o&&a<r;a++,o=o.next)i.push(o.value);return i},n.prototype.sliceReverse=function(t,r){(r=r||this.length)<0&&(r+=this.length),(t=t||0)<0&&(t+=this.length);var i=new n;if(r<t||r<0)return i;t<0&&(t=0),r>this.length&&(r=this.length);for(var a=this.length,o=this.tail;null!==o&&a>r;a--)o=o.prev;for(;null!==o&&a>t;a--,o=o.prev)i.push(o.value);return i},n.prototype.splice=function(t,r,...n){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var a=0,o=this.head;null!==o&&a<t;a++)o=o.next;var s=[];for(a=0;o&&a<r;a++)s.push(o.value),o=this.removeNode(o);for(null===o&&(o=this.tail),o!==this.head&&o!==this.tail&&(o=o.prev),a=0;a<n.length;a++)o=i(this,o,n[a]);return s},n.prototype.reverse=function(){for(var t=this.head,r=this.tail,n=t;null!==n;n=n.prev){var i=n.prev;n.prev=n.next,n.next=i}return this.head=r,this.tail=t,this};try{require_iterator()(n)}catch(t){}}}),require_lru_cache=__commonJS({"../../node_modules/.pnpm/lru-cache@6.0.0/node_modules/lru-cache/index.js"(t,r){init_globals();var n=require_yallist(),i=Symbol("max"),a=Symbol("length"),o=Symbol("lengthCalculator"),s=Symbol("allowStale"),l=Symbol("maxAge"),u=Symbol("dispose"),d=Symbol("noDisposeOnSet"),c=Symbol("lruList"),h=Symbol("cache"),f=Symbol("updateAgeOnGet"),p=()=>1,m=(t,r,n)=>{let i=t[h].get(r);if(i){let r=i.value;if(g(t,r)){if(y(t,i),!t[s])return}else n&&(t[f]&&(i.value.now=Date.now()),t[c].unshiftNode(i));return r.value}},g=(t,r)=>{if(!r||!r.maxAge&&!t[l])return!1;let n=Date.now()-r.now;return r.maxAge?n>r.maxAge:t[l]&&n>t[l]},b=t=>{if(t[a]>t[i])for(let r=t[c].tail;t[a]>t[i]&&null!==r;){let n=r.prev;y(t,r),r=n}},y=(t,r)=>{if(r){let n=r.value;t[u]&&t[u](n.key,n.value),t[a]-=n.length,t[h].delete(n.key),t[c].removeNode(r)}},_=class{constructor(t,r,n,i,a){this.key=t,this.value=r,this.length=n,this.now=i,this.maxAge=a||0}},v=(t,r,n,i)=>{let a=n.value;g(t,a)&&(y(t,n),t[s]||(a=void 0)),a&&r.call(i,a.value,a.key,t)};r.exports=class{constructor(t){if("number"==typeof t&&(t={max:t}),t||(t={}),t.max&&("number"!=typeof t.max||t.max<0))throw TypeError("max must be a non-negative number");this[i]=t.max||1/0;let r=t.length||p;if(this[o]="function"!=typeof r?p:r,this[s]=t.stale||!1,t.maxAge&&"number"!=typeof t.maxAge)throw TypeError("maxAge must be a number");this[l]=t.maxAge||0,this[u]=t.dispose,this[d]=t.noDisposeOnSet||!1,this[f]=t.updateAgeOnGet||!1,this.reset()}set max(t){if("number"!=typeof t||t<0)throw TypeError("max must be a non-negative number");this[i]=t||1/0,b(this)}get max(){return this[i]}set allowStale(t){this[s]=!!t}get allowStale(){return this[s]}set maxAge(t){if("number"!=typeof t)throw TypeError("maxAge must be a non-negative number");this[l]=t,b(this)}get maxAge(){return this[l]}set lengthCalculator(t){"function"!=typeof t&&(t=p),t!==this[o]&&(this[o]=t,this[a]=0,this[c].forEach(t=>{t.length=this[o](t.value,t.key),this[a]+=t.length})),b(this)}get lengthCalculator(){return this[o]}get length(){return this[a]}get itemCount(){return this[c].length}rforEach(t,r){r=r||this;for(let n=this[c].tail;null!==n;){let i=n.prev;v(this,t,n,r),n=i}}forEach(t,r){r=r||this;for(let n=this[c].head;null!==n;){let i=n.next;v(this,t,n,r),n=i}}keys(){return this[c].toArray().map(t=>t.key)}values(){return this[c].toArray().map(t=>t.value)}reset(){this[u]&&this[c]&&this[c].length&&this[c].forEach(t=>this[u](t.key,t.value)),this[h]=new Map,this[c]=new n,this[a]=0}dump(){return this[c].map(t=>!g(this,t)&&{k:t.key,v:t.value,e:t.now+(t.maxAge||0)}).toArray().filter(t=>t)}dumpLru(){return this[c]}set(t,r,n){if((n=n||this[l])&&"number"!=typeof n)throw TypeError("maxAge must be a number");let s=n?Date.now():0,f=this[o](r,t);if(this[h].has(t)){if(f>this[i])return y(this,this[h].get(t)),!1;let o=this[h].get(t).value;return this[u]&&(this[d]||this[u](t,o.value)),o.now=s,o.maxAge=n,o.value=r,this[a]+=f-o.length,o.length=f,this.get(t),b(this),!0}let p=new _(t,r,f,s,n);return p.length>this[i]?(this[u]&&this[u](t,r),!1):(this[a]+=p.length,this[c].unshift(p),this[h].set(t,this[c].head),b(this),!0)}has(t){return!!this[h].has(t)&&!g(this,this[h].get(t).value)}get(t){return m(this,t,!0)}peek(t){return m(this,t,!1)}pop(){let t=this[c].tail;return t?(y(this,t),t.value):null}del(t){y(this,this[h].get(t))}load(t){this.reset();let r=Date.now();for(let n=t.length-1;n>=0;n--){let i=t[n],a=i.e||0;if(0===a)this.set(i.k,i.v);else{let t=a-r;t>0&&this.set(i.k,i.v,t)}}}prune(){this[h].forEach((t,r)=>m(this,r,!1))}}}}),require_range3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/range.js"(t,r){init_globals(),r.exports=class t{constructor(r,n){if(n=i(n),r instanceof t)return!!n.loose===r.loose&&!!n.includePrerelease===r.includePrerelease?r:new t(r.raw,n);if(r instanceof a)return this.raw=r.value,this.set=[[r]],this.format(),this;if(this.options=n,this.loose=!!n.loose,this.includePrerelease=!!n.includePrerelease,this.raw=r.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(t=>this.parseRange(t)).filter(t=>t.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let t=this.set[0];if(this.set=this.set.filter(t=>!m(t[0])),0===this.set.length)this.set=[t];else if(this.set.length>1){for(let t of this.set)if(1===t.length&&g(t[0])){this.set=[t];break}}}this.format()}format(){return this.range=this.set.map(t=>t.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(t){let r=((this.options.includePrerelease&&f)|(this.options.loose&&p))+":"+t,i=n.get(r);if(i)return i;let s=this.options.loose,g=s?l[u.HYPHENRANGELOOSE]:l[u.HYPHENRANGE];o("hyphen replace",t=t.replace(g,T(this.options.includePrerelease))),o("comparator trim",t=t.replace(l[u.COMPARATORTRIM],d));let b=(t=(t=t.replace(l[u.TILDETRIM],c)).replace(l[u.CARETTRIM],h)).split(" ").map(t=>y(t,this.options)).join(" ").split(/\s+/).map(t=>I(t,this.options));s&&(b=b.filter(t=>(o("loose invalid filter",t,this.options),!!t.match(l[u.COMPARATORLOOSE])))),o("range list",b);let _=new Map;for(let t of b.map(t=>new a(t,this.options))){if(m(t))return[t];_.set(t.value,t)}_.size>1&&_.has("")&&_.delete("");let v=[..._.values()];return n.set(r,v),v}intersects(r,n){if(!(r instanceof t))throw TypeError("a Range is required");return this.set.some(t=>b(t,n)&&r.set.some(r=>b(r,n)&&t.every(t=>r.every(r=>t.intersects(r,n)))))}test(t){if(!t)return!1;if("string"==typeof t)try{t=new s(t,this.options)}catch(t){return!1}for(let r=0;r<this.set.length;r++)if(k(this.set[r],t,this.options))return!0;return!1}};var n=new(require_lru_cache())({max:1e3}),i=require_parse_options2(),a=require_comparator2(),o=require_debug2(),s=require_semver3(),{safeRe:l,t:u,comparatorTrimReplace:d,tildeTrimReplace:c,caretTrimReplace:h}=require_re2(),{FLAG_INCLUDE_PRERELEASE:f,FLAG_LOOSE:p}=require_constants11(),m=t=>"<0.0.0-0"===t.value,g=t=>""===t.value,b=(t,r)=>{let n=!0,i=t.slice(),a=i.pop();for(;n&&i.length;)n=i.every(t=>a.intersects(t,r)),a=i.pop();return n},y=(t,r)=>(o("comp",t,r),o("caret",t=w(t,r)),o("tildes",t=v(t,r)),o("xrange",t=E(t,r)),o("stars",t=C(t,r)),t),_=t=>!t||"x"===t.toLowerCase()||"*"===t,v=(t,r)=>t.trim().split(/\s+/).map(t=>A(t,r)).join(" "),A=(t,r)=>{let n=r.loose?l[u.TILDELOOSE]:l[u.TILDE];return t.replace(n,(r,n,i,a,s)=>{let l;return o("tilde",t,r,n,i,a,s),_(n)?l="":_(i)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:_(a)?l=`>=${n}.${i}.0 <${n}.${+i+1}.0-0`:s?(o("replaceTilde pr",s),l=`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`):l=`>=${n}.${i}.${a} <${n}.${+i+1}.0-0`,o("tilde return",l),l})},w=(t,r)=>t.trim().split(/\s+/).map(t=>x(t,r)).join(" "),x=(t,r)=>{o("caret",t,r);let n=r.loose?l[u.CARETLOOSE]:l[u.CARET],i=r.includePrerelease?"-0":"";return t.replace(n,(r,n,a,s,l)=>{let u;return o("caret",t,r,n,a,s,l),_(n)?u="":_(a)?u=`>=${n}.0.0${i} <${+n+1}.0.0-0`:_(s)?u="0"===n?`>=${n}.${a}.0${i} <${n}.${+a+1}.0-0`:`>=${n}.${a}.0${i} <${+n+1}.0.0-0`:l?(o("replaceCaret pr",l),u="0"===n?"0"===a?`>=${n}.${a}.${s}-${l} <${n}.${a}.${+s+1}-0`:`>=${n}.${a}.${s}-${l} <${n}.${+a+1}.0-0`:`>=${n}.${a}.${s}-${l} <${+n+1}.0.0-0`):(o("no pr"),u="0"===n?"0"===a?`>=${n}.${a}.${s}${i} <${n}.${a}.${+s+1}-0`:`>=${n}.${a}.${s}${i} <${n}.${+a+1}.0-0`:`>=${n}.${a}.${s} <${+n+1}.0.0-0`),o("caret return",u),u})},E=(t,r)=>(o("replaceXRanges",t,r),t.split(/\s+/).map(t=>S(t,r)).join(" ")),S=(t,r)=>{t=t.trim();let n=r.loose?l[u.XRANGELOOSE]:l[u.XRANGE];return t.replace(n,(n,i,a,s,l,u)=>{o("xRange",t,n,i,a,s,l,u);let d=_(a),c=d||_(s),h=c||_(l),f=h;return"="===i&&f&&(i=""),u=r.includePrerelease?"-0":"",d?n=">"===i||"<"===i?"<0.0.0-0":"*":i&&f?(c&&(s=0),l=0,">"===i?(i=">=",c?(a=+a+1,s=0):s=+s+1,l=0):"<="===i&&(i="<",c?a=+a+1:s=+s+1),"<"===i&&(u="-0"),n=`${i+a}.${s}.${l}${u}`):c?n=`>=${a}.0.0${u} <${+a+1}.0.0-0`:h&&(n=`>=${a}.${s}.0${u} <${a}.${+s+1}.0-0`),o("xRange return",n),n})},C=(t,r)=>(o("replaceStars",t,r),t.trim().replace(l[u.STAR],"")),I=(t,r)=>(o("replaceGTE0",t,r),t.trim().replace(l[r.includePrerelease?u.GTE0PRE:u.GTE0],"")),T=t=>(r,n,i,a,o,s,l,u,d,c,h,f,p)=>`${n=_(i)?"":_(a)?`>=${i}.0.0${t?"-0":""}`:_(o)?`>=${i}.${a}.0${t?"-0":""}`:s?`>=${n}`:`>=${n}${t?"-0":""}`} ${u=_(d)?"":_(c)?`<${+d+1}.0.0-0`:_(h)?`<${d}.${+c+1}.0-0`:f?`<=${d}.${c}.${h}-${f}`:t?`<${d}.${c}.${+h+1}-0`:`<=${u}`}`.trim(),k=(t,r,n)=>{for(let n=0;n<t.length;n++)if(!t[n].test(r))return!1;if(r.prerelease.length&&!n.includePrerelease){for(let n=0;n<t.length;n++)if(o(t[n].semver),t[n].semver!==a.ANY&&t[n].semver.prerelease.length>0){let i=t[n].semver;if(i.major===r.major&&i.minor===r.minor&&i.patch===r.patch)return!0}return!1}return!0}}}),require_comparator2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/comparator.js"(t,r){init_globals();var n=Symbol("SemVer ANY");r.exports=class t{static get ANY(){return n}constructor(r,a){if(a=i(a),r instanceof t){if(!!a.loose===r.loose)return r;r=r.value}l("comparator",r=r.trim().split(/\s+/).join(" "),a),this.options=a,this.loose=!!a.loose,this.parse(r),this.semver===n?this.value="":this.value=this.operator+this.semver.version,l("comp",this)}parse(t){let r=this.options.loose?a[o.COMPARATORLOOSE]:a[o.COMPARATOR],i=t.match(r);if(!i)throw TypeError(`Invalid comparator: ${t}`);this.operator=void 0!==i[1]?i[1]:"","="===this.operator&&(this.operator=""),i[2]?this.semver=new u(i[2],this.options.loose):this.semver=n}toString(){return this.value}test(t){if(l("Comparator.test",t,this.options.loose),this.semver===n||t===n)return!0;if("string"==typeof t)try{t=new u(t,this.options)}catch(t){return!1}return s(t,this.operator,this.semver,this.options)}intersects(r,n){if(!(r instanceof t))throw TypeError("a Comparator is required");return""===this.operator?""===this.value||new d(r.value,n).test(this.value):""===r.operator?""===r.value||new d(this.value,n).test(r.semver):(!(n=i(n)).includePrerelease||"<0.0.0-0"!==this.value&&"<0.0.0-0"!==r.value)&&!(!n.includePrerelease&&(this.value.startsWith("<0.0.0")||r.value.startsWith("<0.0.0")))&&(!(!this.operator.startsWith(">")||!r.operator.startsWith(">"))||!(!this.operator.startsWith("<")||!r.operator.startsWith("<"))||!(this.semver.version!==r.semver.version||!this.operator.includes("=")||!r.operator.includes("="))||!!(s(this.semver,"<",r.semver,n)&&this.operator.startsWith(">")&&r.operator.startsWith("<"))||!!(s(this.semver,">",r.semver,n)&&this.operator.startsWith("<")&&r.operator.startsWith(">")))}};var i=require_parse_options2(),{safeRe:a,t:o}=require_re2(),s=require_cmp2(),l=require_debug2(),u=require_semver3(),d=require_range3()}}),require_satisfies2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/satisfies.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r,i)=>{try{r=new n(r,i)}catch(t){return!1}return r.test(t)}}}),require_to_comparators2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/to-comparators.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r)=>new n(t,r).set.map(t=>t.map(t=>t.value).join(" ").trim().split(" "))}}),require_max_satisfying2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/max-satisfying.js"(t,r){init_globals();var n=require_semver3(),i=require_range3();r.exports=(t,r,a)=>{let o=null,s=null,l=null;try{l=new i(r,a)}catch(t){return null}return t.forEach(t=>{l.test(t)&&(o&&-1!==s.compare(t)||(s=new n(o=t,a)))}),o}}}),require_min_satisfying2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/min-satisfying.js"(t,r){init_globals();var n=require_semver3(),i=require_range3();r.exports=(t,r,a)=>{let o=null,s=null,l=null;try{l=new i(r,a)}catch(t){return null}return t.forEach(t=>{l.test(t)&&(o&&1!==s.compare(t)||(s=new n(o=t,a)))}),o}}}),require_min_version2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/min-version.js"(t,r){init_globals();var n=require_semver3(),i=require_range3(),a=require_gt2();r.exports=(t,r)=>{t=new i(t,r);let o=new n("0.0.0");if(t.test(o)||(o=new n("0.0.0-0"),t.test(o)))return o;o=null;for(let r=0;r<t.set.length;++r){let i=t.set[r],s=null;i.forEach(t=>{let r=new n(t.semver.version);switch(t.operator){case">":0===r.prerelease.length?r.patch++:r.prerelease.push(0),r.raw=r.format();case"":case">=":s&&!a(r,s)||(s=r);break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${t.operator}`)}}),s&&(!o||a(o,s))&&(o=s)}return o&&t.test(o)?o:null}}}),require_valid4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/valid.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r)=>{try{return new n(t,r).range||"*"}catch(t){return null}}}}),require_outside2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/outside.js"(t,r){init_globals();var n=require_semver3(),i=require_comparator2(),{ANY:a}=i,o=require_range3(),s=require_satisfies2(),l=require_gt2(),u=require_lt2(),d=require_lte2(),c=require_gte2();r.exports=(t,r,h,f)=>{let p,m,g,b,y;switch(t=new n(t,f),r=new o(r,f),h){case">":p=l,m=d,g=u,b=">",y=">=";break;case"<":p=u,m=c,g=l,b="<",y="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(s(t,r,f))return!1;for(let n=0;n<r.set.length;++n){let o=r.set[n],s=null,l=null;if(o.forEach(t=>{t.semver===a&&(t=new i(">=0.0.0")),s=s||t,l=l||t,p(t.semver,s.semver,f)?s=t:g(t.semver,l.semver,f)&&(l=t)}),s.operator===b||s.operator===y||(!l.operator||l.operator===b)&&m(t,l.semver)||l.operator===y&&g(t,l.semver))return!1}return!0}}}),require_gtr2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/gtr.js"(t,r){init_globals();var n=require_outside2();r.exports=(t,r,i)=>n(t,r,">",i)}}),require_ltr2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/ltr.js"(t,r){init_globals();var n=require_outside2();r.exports=(t,r,i)=>n(t,r,"<",i)}}),require_intersects2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/intersects.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r,i)=>(t=new n(t,i),r=new n(r,i),t.intersects(r,i))}}),require_simplify3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/simplify.js"(t,r){init_globals();var n=require_satisfies2(),i=require_compare2();r.exports=(t,r,a)=>{let o=[],s=null,l=null,u=t.sort((t,r)=>i(t,r,a));for(let t of u)n(t,r,a)?(l=t,s||(s=t)):(l&&o.push([s,l]),l=null,s=null);s&&o.push([s,null]);let d=[];for(let[t,r]of o)t===r?d.push(t):r||t!==u[0]?r?t===u[0]?d.push(`<=${r}`):d.push(`${t} - ${r}`):d.push(`>=${t}`):d.push("*");let c=d.join(" || "),h="string"==typeof r.raw?r.raw:String(r);return c.length<h.length?c:r}}}),require_subset2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/subset.js"(t,r){init_globals();var n=require_range3(),i=require_comparator2(),{ANY:a}=i,o=require_satisfies2(),s=require_compare2(),l=[new i(">=0.0.0-0")],u=[new i(">=0.0.0")],d=(t,r,n)=>{let i,d,f,p,m,g,b;if(t===r)return!0;if(1===t.length&&t[0].semver===a){if(1===r.length&&r[0].semver===a)return!0;t=n.includePrerelease?l:u}if(1===r.length&&r[0].semver===a){if(n.includePrerelease)return!0;r=u}let y=new Set;for(let r of t)">"===r.operator||">="===r.operator?i=c(i,r,n):"<"===r.operator||"<="===r.operator?d=h(d,r,n):y.add(r.semver);if(y.size>1||i&&d&&((f=s(i.semver,d.semver,n))>0||0===f&&(">="!==i.operator||"<="!==d.operator)))return null;for(let t of y){if(i&&!o(t,String(i),n)||d&&!o(t,String(d),n))return null;for(let i of r)if(!o(t,String(i),n))return!1;return!0}let _=!(!d||n.includePrerelease||!d.semver.prerelease.length)&&d.semver,v=!(!i||n.includePrerelease||!i.semver.prerelease.length)&&i.semver;for(let t of(_&&1===_.prerelease.length&&"<"===d.operator&&0===_.prerelease[0]&&(_=!1),r)){if(b=b||">"===t.operator||">="===t.operator,g=g||"<"===t.operator||"<="===t.operator,i){if(v&&t.semver.prerelease&&t.semver.prerelease.length&&t.semver.major===v.major&&t.semver.minor===v.minor&&t.semver.patch===v.patch&&(v=!1),">"===t.operator||">="===t.operator){if((p=c(i,t,n))===t&&p!==i)return!1}else if(">="===i.operator&&!o(i.semver,String(t),n))return!1}if(d){if(_&&t.semver.prerelease&&t.semver.prerelease.length&&t.semver.major===_.major&&t.semver.minor===_.minor&&t.semver.patch===_.patch&&(_=!1),"<"===t.operator||"<="===t.operator){if((m=h(d,t,n))===t&&m!==d)return!1}else if("<="===d.operator&&!o(d.semver,String(t),n))return!1}if(!t.operator&&(d||i)&&0!==f)return!1}return!(i&&g&&!d&&0!==f)&&!(d&&b&&!i&&0!==f)&&!v&&!_},c=(t,r,n)=>{if(!t)return r;let i=s(t.semver,r.semver,n);return i>0?t:i<0||">"===r.operator&&">="===t.operator?r:t},h=(t,r,n)=>{if(!t)return r;let i=s(t.semver,r.semver,n);return i<0?t:i>0||"<"===r.operator&&"<="===t.operator?r:t};r.exports=(t,r,i={})=>{if(t===r)return!0;t=new n(t,i),r=new n(r,i);let a=!1;e:for(let n of t.set){for(let t of r.set){let r=d(n,t,i);if(a=a||null!==r,r)continue e}if(a)return!1}return!0}}}),require_semver4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/index.js"(t,r){init_globals();var n=require_re2(),i=require_constants11(),a=require_semver3(),o=require_identifiers2();r.exports={parse:require_parse4(),valid:require_valid3(),clean:require_clean2(),inc:require_inc2(),diff:require_diff2(),major:require_major2(),minor:require_minor2(),patch:require_patch2(),prerelease:require_prerelease2(),compare:require_compare2(),rcompare:require_rcompare2(),compareLoose:require_compare_loose2(),compareBuild:require_compare_build2(),sort:require_sort2(),rsort:require_rsort2(),gt:require_gt2(),lt:require_lt2(),eq:require_eq2(),neq:require_neq2(),gte:require_gte2(),lte:require_lte2(),cmp:require_cmp2(),coerce:require_coerce2(),Comparator:require_comparator2(),Range:require_range3(),satisfies:require_satisfies2(),toComparators:require_to_comparators2(),maxSatisfying:require_max_satisfying2(),minSatisfying:require_min_satisfying2(),minVersion:require_min_version2(),validRange:require_valid4(),outside:require_outside2(),gtr:require_gtr2(),ltr:require_ltr2(),intersects:require_intersects2(),simplifyRange:require_simplify3(),subset:require_subset2(),SemVer:a,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:i.SEMVER_SPEC_VERSION,RELEASE_TYPES:i.RELEASE_TYPES,compareIdentifiers:o.compareIdentifiers,rcompareIdentifiers:o.rcompareIdentifiers}}}),require_lib7=__commonJS({"../core/dist/lib/index.js"(t){function r(t){let r,n=t[0],i=1;for(;i<t.length;){let a=t[i],o=t[i+1];if(i+=2,("optionalAccess"===a||"optionalCall"===a)&&null==n)return;"access"===a||"optionalAccess"===a?(r=n,n=o(n)):"call"!==a&&"optionalCall"!==a||(n=o((...t)=>n.call(r,...t)),r=void 0)}return n}init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var n=require_chunk_NBFEZEAH(),i=require_chunk_I5LBWOQA(),a=require_env(),o=require_utils5(),s=require_img();function l(t,i){let s={sdkVersion:n.getVersion.call(void 0),logTime:Date.now(),model_name:a.getAIConfig.call(void 0,a.MIDSCENE_MODEL_NAME)||""},l={logId:o.uuid.call(void 0),...s,...t};r([i,"optionalCall",t=>t(l)])}var u=require_logger().getDebug.call(void 0,"ai:insight"),d=class{constructor(t,n){this.aiVendorFn=i.callAiFn,o.assert.call(void 0,t,"context is required for Insight"),this.contextRetrieverFn="function"==typeof t?t:()=>Promise.resolve(t),void 0!==r([n,"optionalAccess",t=>t.aiVendorFn])&&(this.aiVendorFn=n.aiVendorFn),void 0!==r([n,"optionalAccess",t=>t.taskInfo])&&(this.taskInfo=n.taskInfo)}async locate(t,n){let s,d,c,h,f,p,{callAI:m}=n||{},g="string"==typeof t?t:t.prompt;o.assert.call(void 0,g,"query is required for locate");let b=this.onceDumpUpdatedFn;this.onceDumpUpdatedFn=void 0,o.assert.call(void 0,"object"==typeof t,"query should be an object for locate");let y=a.getAIConfigInBoolean.call(void 0,a.MIDSCENE_FORCE_DEEP_THINK);y&&u("globalDeepThinkSwitch",y),(t.deepThink||y)&&(s=t.prompt),s&&!a.vlLocateMode.call(void 0)&&(import_console_browserify.default.warn('The "deepThink" feature is not supported with multimodal LLM. Please config VL model for Midscene. https://midscenejs.com/choose-a-model'),s=void 0);let _=r([n,"optionalAccess",t=>t.context])||await this.contextRetrieverFn("locate");s&&(f=await i.AiLocateSection.call(void 0,{context:_,sectionDescription:s}),o.assert.call(void 0,f.rect,`cannot find search area for "${s}"${f.error?`: ${f.error}`:""}`),c=f.rawResponse,h=f.usage,d=f.rect);let v=Date.now(),{parseResult:A,rect:w,elementById:x,rawResponse:E,usage:S,isOrderSensitive:C}=await i.AiLocateElement.call(void 0,{callAI:m||this.aiVendorFn,context:_,targetElementDescription:g,searchConfig:f}),I=Date.now()-v,T={...this.taskInfo?this.taskInfo:{},durationMs:I,rawResponse:JSON.stringify(E),formatResponse:JSON.stringify(A),usage:S,searchArea:d,searchAreaRawResponse:c,searchAreaUsage:h};r([A,"access",t=>t.errors,"optionalAccess",t=>t.length])&&(p=`AI model failed to locate:
|
|
731
|
+
`,"utf-8")),p=!0}let c=u.join(l,`${r}.${i}`);return"dump"!==s&&a.writeFileSync.call(void 0,c,o),n([t,"optionalAccess",t=>t.generateReport])?y(r,o,t.appendReport):c},t.getTmpDir=_,t.getTmpFile=function(t){if(f.ifInBrowser||f.ifInWorker)return null;let r=_(),n=`${f.uuid.call(void 0)}.${t}`;return u.join(r,n)},t.overlapped=function(t,r){return t.left<r.left+r.width&&t.left+t.width>r.left&&t.top<r.top+r.height&&t.top+t.height>r.top},t.sleep=async function(t){return new Promise(r=>setTimeout(r,t))},t.replacerForPageObject=v,t.stringifyDumpData=function(t,r){return JSON.stringify(t,v,r)},t.getVersion=function(){return"0.26.1"},t.uploadTestInfoToServer=function({testUrl:t}){let r="",a="",o=n([c.getAIConfigInJson.call(void 0,c.MIDSCENE_OPENAI_INIT_CONFIG_JSON),"optionalAccess",t=>t.REPORT_SERVER_URL]);try{r=i.execSync.call(void 0,"git config --get remote.origin.url").toString().trim(),a=i.execSync.call(void 0,"git config --get user.email").toString().trim()}catch(t){A("Failed to get git info:",t)}o&&(r&&r!==w||!r&&t)&&(A("Uploading test info to server",{serverUrl:o,repoUrl:r,testUrl:t,userEmail:a}),fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repo_url:r,test_url:t,user_email:a})}).then(t=>t.json()).then(t=>{A("Successfully uploaded test info to server:",t)}).catch(t=>A("Failed to upload test info to server:",t)),w=r)}}}),require_utils12=__commonJS({"../core/dist/lib/utils.js"(t){init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var r=require_chunk_4CBFCRNS();t.getTmpDir=r.getTmpDir,t.getTmpFile=r.getTmpFile,t.getVersion=r.getVersion,t.groupedActionDumpFileExt=r.groupedActionDumpFileExt,t.insertScriptBeforeClosingHtml=r.insertScriptBeforeClosingHtml,t.overlapped=r.overlapped,t.replacerForPageObject=r.replacerForPageObject,t.reportHTMLContent=r.reportHTMLContent,t.sleep=r.sleep,t.stringifyDumpData=r.stringifyDumpData,t.uploadTestInfoToServer=r.uploadTestInfoToServer,t.writeDumpReport=r.writeDumpReport,t.writeLogFile=r.writeLogFile}}),require_dayjs_min=__commonJS({"../../node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js"(t,r){var n,i;init_globals(),n=t,i=function(){var t=6e4,r=36e5,n="millisecond",i="second",a="minute",o="hour",s="day",l="week",u="month",d="quarter",c="year",h="date",f="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var r=["th","st","nd","rd"],n=t%100;return"["+t+(r[(n-20)%10]||r[n]||r[0])+"]"}},b=function(t,r,n){var i=String(t);return!i||i.length>=r?t:""+Array(r+1-i.length).join(n)+t},y={s:b,z:function(t){var r=-t.utcOffset(),n=Math.abs(r),i=Math.floor(n/60),a=n%60;return(r<=0?"+":"-")+b(i,2,"0")+":"+b(a,2,"0")},m:function t(r,n){if(r.date()<n.date())return-t(n,r);var i=12*(n.year()-r.year())+(n.month()-r.month()),a=r.clone().add(i,u),o=n-a<0,s=r.clone().add(i+(o?-1:1),u);return+(-(i+(n-a)/(o?a-s:s-a))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return({M:u,y:c,w:l,d:s,D:h,h:o,m:a,s:i,ms:n,Q:d})[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},_="en",v={};v[_]=g;var A="$isDayjsObject",w=function(t){return t instanceof C||!(!t||!t[A])},x=function t(r,n,i){var a;if(!r)return _;if("string"==typeof r){var o=r.toLowerCase();v[o]&&(a=o),n&&(v[o]=n,a=o);var s=r.split("-");if(!a&&s.length>1)return t(s[0])}else{var l=r.name;v[l]=r,a=l}return!i&&a&&(_=a),a||!i&&_},E=function(t,r){if(w(t))return t.clone();var n="object"==typeof r?r:{};return n.date=t,n.args=arguments,new C(n)},S=y;S.l=x,S.i=w,S.w=function(t,r){return E(t,{locale:r.$L,utc:r.$u,x:r.$x,$offset:r.$offset})};var C=function(){function g(t){this.$L=x(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[A]=!0}var b=g.prototype;return b.parse=function(t){this.$d=function(t){var r=t.date,n=t.utc;if(null===r)return new Date(NaN);if(S.u(r))return new Date;if(r instanceof Date)return new Date(r);if("string"==typeof r&&!/Z$/i.test(r)){var i=r.match(p);if(i){var a=i[2]-1||0,o=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],a,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)):new Date(i[1],a,i[3]||1,i[4]||0,i[5]||0,i[6]||0,o)}}return new Date(r)}(t),this.init()},b.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},b.$utils=function(){return S},b.isValid=function(){return this.$d.toString()!==f},b.isSame=function(t,r){var n=E(t);return this.startOf(r)<=n&&n<=this.endOf(r)},b.isAfter=function(t,r){return E(t)<this.startOf(r)},b.isBefore=function(t,r){return this.endOf(r)<E(t)},b.$g=function(t,r,n){return S.u(t)?this[r]:this.set(n,t)},b.unix=function(){return Math.floor(this.valueOf()/1e3)},b.valueOf=function(){return this.$d.getTime()},b.startOf=function(t,r){var n=this,d=!!S.u(r)||r,f=S.p(t),p=function(t,r){var i=S.w(n.$u?Date.UTC(n.$y,r,t):new Date(n.$y,r,t),n);return d?i:i.endOf(s)},m=function(t,r){return S.w(n.toDate()[t].apply(n.toDate("s"),(d?[0,0,0,0]:[23,59,59,999]).slice(r)),n)},g=this.$W,b=this.$M,y=this.$D,_="set"+(this.$u?"UTC":"");switch(f){case c:return d?p(1,0):p(31,11);case u:return d?p(1,b):p(0,b+1);case l:var v=this.$locale().weekStart||0,A=(g<v?g+7:g)-v;return p(d?y-A:y+(6-A),b);case s:case h:return m(_+"Hours",0);case o:return m(_+"Minutes",1);case a:return m(_+"Seconds",2);case i:return m(_+"Milliseconds",3);default:return this.clone()}},b.endOf=function(t){return this.startOf(t,!1)},b.$set=function(t,r){var l,d=S.p(t),f="set"+(this.$u?"UTC":""),p=((l={})[s]=f+"Date",l[h]=f+"Date",l[u]=f+"Month",l[c]=f+"FullYear",l[o]=f+"Hours",l[a]=f+"Minutes",l[i]=f+"Seconds",l[n]=f+"Milliseconds",l)[d],m=d===s?this.$D+(r-this.$W):r;if(d===u||d===c){var g=this.clone().set(h,1);g.$d[p](m),g.init(),this.$d=g.set(h,Math.min(this.$D,g.daysInMonth())).$d}else p&&this.$d[p](m);return this.init(),this},b.set=function(t,r){return this.clone().$set(t,r)},b.get=function(t){return this[S.p(t)]()},b.add=function(n,d){var h,f=this;n=Number(n);var p=S.p(d),m=function(t){var r=E(f);return S.w(r.date(r.date()+Math.round(t*n)),f)};if(p===u)return this.set(u,this.$M+n);if(p===c)return this.set(c,this.$y+n);if(p===s)return m(1);if(p===l)return m(7);var g=((h={})[a]=t,h[o]=r,h[i]=1e3,h)[p]||1,b=this.$d.getTime()+n*g;return S.w(b,this)},b.subtract=function(t,r){return this.add(-1*t,r)},b.format=function(t){var r=this,n=this.$locale();if(!this.isValid())return n.invalidDate||f;var i=t||"YYYY-MM-DDTHH:mm:ssZ",a=S.z(this),o=this.$H,s=this.$m,l=this.$M,u=n.weekdays,d=n.months,c=n.meridiem,h=function(t,n,a,o){return t&&(t[n]||t(r,i))||a[n].slice(0,o)},p=function(t){return S.s(o%12||12,t,"0")},g=c||function(t,r,n){var i=t<12?"AM":"PM";return n?i.toLowerCase():i};return i.replace(m,function(t,i){return i||function(t){switch(t){case"YY":return String(r.$y).slice(-2);case"YYYY":return S.s(r.$y,4,"0");case"M":return l+1;case"MM":return S.s(l+1,2,"0");case"MMM":return h(n.monthsShort,l,d,3);case"MMMM":return h(d,l);case"D":return r.$D;case"DD":return S.s(r.$D,2,"0");case"d":return String(r.$W);case"dd":return h(n.weekdaysMin,r.$W,u,2);case"ddd":return h(n.weekdaysShort,r.$W,u,3);case"dddd":return u[r.$W];case"H":return String(o);case"HH":return S.s(o,2,"0");case"h":return p(1);case"hh":return p(2);case"a":return g(o,s,!0);case"A":return g(o,s,!1);case"m":return String(s);case"mm":return S.s(s,2,"0");case"s":return String(r.$s);case"ss":return S.s(r.$s,2,"0");case"SSS":return S.s(r.$ms,3,"0");case"Z":return a}return null}(t)||a.replace(":","")})},b.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},b.diff=function(n,h,f){var p,m=this,g=S.p(h),b=E(n),y=(b.utcOffset()-this.utcOffset())*t,_=this-b,v=function(){return S.m(m,b)};switch(g){case c:p=v()/12;break;case u:p=v();break;case d:p=v()/3;break;case l:p=(_-y)/6048e5;break;case s:p=(_-y)/864e5;break;case o:p=_/r;break;case a:p=_/t;break;case i:p=_/1e3;break;default:p=_}return f?p:S.a(p)},b.daysInMonth=function(){return this.endOf(u).$D},b.$locale=function(){return v[this.$L]},b.locale=function(t,r){if(!t)return this.$L;var n=this.clone(),i=x(t,r,!0);return i&&(n.$L=i),n},b.clone=function(){return S.w(this.$d,this)},b.toDate=function(){return new Date(this.valueOf())},b.toJSON=function(){return this.isValid()?this.toISOString():null},b.toISOString=function(){return this.$d.toISOString()},b.toString=function(){return this.$d.toUTCString()},g}(),I=C.prototype;return E.prototype=I,[["$ms",n],["$s",i],["$m",a],["$H",o],["$W",s],["$M",u],["$y",c],["$D",h]].forEach(function(t){I[t[1]]=function(r){return this.$g(r,t[0],t[1])}}),E.extend=function(t,r){return t.$i||(t(r,C,E),t.$i=!0),E},E.locale=x,E.isDayjs=w,E.unix=function(t){return E(1e3*t)},E.en=v[_],E.Ls=v,E.p={},E},"object"==typeof t&&void 0!==r?r.exports=i():"function"==typeof define&&define.amd?define(i):(n="undefined"!=typeof globalThis?globalThis:n||self).dayjs=i()}}),require_common7=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/common.js"(t,r){function n(t){return null==t}init_globals(),r.exports.isNothing=n,r.exports.isObject=function(t){return"object"==typeof t&&null!==t},r.exports.toArray=function(t){return Array.isArray(t)?t:n(t)?[]:[t]},r.exports.repeat=function(t,r){var n,i="";for(n=0;n<r;n+=1)i+=t;return i},r.exports.isNegativeZero=function(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t},r.exports.extend=function(t,r){var n,i,a,o;if(r)for(n=0,i=(o=Object.keys(r)).length;n<i;n+=1)t[a=o[n]]=r[a];return t}}}),require_exception=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/exception.js"(t,r){function n(t,r){var n="",i=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(n+='in "'+t.mark.name+'" '),n+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!r&&t.mark.snippet&&(n+="\n\n"+t.mark.snippet),i+" "+n):i}function i(t,r){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=r,this.message=n(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=Error().stack||""}init_globals(),i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i.prototype.toString=function(t){return this.name+": "+n(this,t)},r.exports=i}}),require_snippet=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/snippet.js"(t,r){init_globals();var n=require_common7();function i(t,r,n,i,a){var o="",s="",l=Math.floor(a/2)-1;return i-r>l&&(r=i-l+(o=" ... ").length),n-i>l&&(n=i+l-(s=" ...").length),{str:o+t.slice(r,n).replace(/\t/g,"→")+s,pos:i-r+o.length}}function a(t,r){return n.repeat(" ",r-t.length)+t}r.exports=function(t,r){if(r=Object.create(r||null),!t.buffer)return null;r.maxLength||(r.maxLength=79),"number"!=typeof r.indent&&(r.indent=1),"number"!=typeof r.linesBefore&&(r.linesBefore=3),"number"!=typeof r.linesAfter&&(r.linesAfter=2);for(var o,s=/\r?\n|\r|\0/g,l=[0],u=[],d=-1;o=s.exec(t.buffer);)u.push(o.index),l.push(o.index+o[0].length),t.position<=o.index&&d<0&&(d=l.length-2);d<0&&(d=l.length-1);var c,h,f="",p=Math.min(t.line+r.linesAfter,u.length).toString().length,m=r.maxLength-(r.indent+p+3);for(c=1;c<=r.linesBefore&&!(d-c<0);c++)h=i(t.buffer,l[d-c],u[d-c],t.position-(l[d]-l[d-c]),m),f=n.repeat(" ",r.indent)+a((t.line-c+1).toString(),p)+" | "+h.str+"\n"+f;for(h=i(t.buffer,l[d],u[d],t.position,m),f+=n.repeat(" ",r.indent)+a((t.line+1).toString(),p)+" | "+h.str+"\n"+n.repeat("-",r.indent+p+3+h.pos)+"^\n",c=1;c<=r.linesAfter&&!(d+c>=u.length);c++)h=i(t.buffer,l[d+c],u[d+c],t.position-(l[d]-l[d+c]),m),f+=n.repeat(" ",r.indent)+a((t.line+c+1).toString(),p)+" | "+h.str+"\n";return f.replace(/\n$/,"")}}}),require_type2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type.js"(t,r){init_globals();var n=require_exception(),i=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],a=["scalar","sequence","mapping"];r.exports=function(t,r){var o,s;if(Object.keys(r=r||{}).forEach(function(r){if(-1===i.indexOf(r))throw new n('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=r,this.tag=t,this.kind=r.kind||null,this.resolve=r.resolve||function(){return!0},this.construct=r.construct||function(t){return t},this.instanceOf=r.instanceOf||null,this.predicate=r.predicate||null,this.represent=r.represent||null,this.representName=r.representName||null,this.defaultStyle=r.defaultStyle||null,this.multi=r.multi||!1,this.styleAliases=(o=r.styleAliases||null,s={},null!==o&&Object.keys(o).forEach(function(t){o[t].forEach(function(r){s[String(r)]=t})}),s),-1===a.indexOf(this.kind))throw new n('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}}}),require_schema=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema.js"(t,r){init_globals();var n=require_exception(),i=require_type2();function a(t,r){var n=[];return t[r].forEach(function(t){var r=n.length;n.forEach(function(n,i){n.tag===t.tag&&n.kind===t.kind&&n.multi===t.multi&&(r=i)}),n[r]=t}),n}function o(t){return this.extend(t)}o.prototype.extend=function(t){var r=[],s=[];if(t instanceof i)s.push(t);else if(Array.isArray(t))s=s.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new n("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(r=r.concat(t.implicit)),t.explicit&&(s=s.concat(t.explicit))}r.forEach(function(t){if(!(t instanceof i))throw new n("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new n("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new n("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),s.forEach(function(t){if(!(t instanceof i))throw new n("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var l=Object.create(o.prototype);return l.implicit=(this.implicit||[]).concat(r),l.explicit=(this.explicit||[]).concat(s),l.compiledImplicit=a(l,"implicit"),l.compiledExplicit=a(l,"explicit"),l.compiledTypeMap=function(){var t,r,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(t){t.multi?(n.multi[t.kind].push(t),n.multi.fallback.push(t)):n[t.kind][t.tag]=n.fallback[t.tag]=t}for(t=0,r=arguments.length;t<r;t+=1)arguments[t].forEach(i);return n}(l.compiledImplicit,l.compiledExplicit),l},r.exports=o}}),require_str=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/str.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}})}}),require_seq=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/seq.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}})}}),require_map2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/map.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}})}}),require_failsafe=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/failsafe.js"(t,r){init_globals(),r.exports=new(require_schema())({explicit:[require_str(),require_seq(),require_map2()]})}}),require_null2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/null.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(t){if(null===t)return!0;var r=t.length;return 1===r&&"~"===t||4===r&&("null"===t||"Null"===t||"NULL"===t)},construct:function(){return null},predicate:function(t){return null===t},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"})}}),require_bool=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/bool.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r=t.length;return 4===r&&("true"===t||"True"===t||"TRUE"===t)||5===r&&("false"===t||"False"===t||"FALSE"===t)},construct:function(t){return"true"===t||"True"===t||"TRUE"===t},predicate:function(t){return"[object Boolean]"===Object.prototype.toString.call(t)},represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})}}),require_int=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/int.js"(t,r){init_globals();var n=require_common7();function i(t){return 48<=t&&t<=55}function a(t){return 48<=t&&t<=57}r.exports=new(require_type2())("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r,n,o=t.length,s=0,l=!1;if(!o)return!1;if("-"!==(r=t[s])&&"+"!==r||(r=t[++s]),"0"===r){if(s+1===o)return!0;if("b"===(r=t[++s])){for(s++;s<o;s++)if("_"!==(r=t[s])){if("0"!==r&&"1"!==r)return!1;l=!0}return l&&"_"!==r}if("x"===r){for(s++;s<o;s++)if("_"!==(r=t[s])){if(!(48<=(n=t.charCodeAt(s))&&n<=57||65<=n&&n<=70||97<=n&&n<=102))return!1;l=!0}return l&&"_"!==r}if("o"===r){for(s++;s<o;s++)if("_"!==(r=t[s])){if(!i(t.charCodeAt(s)))return!1;l=!0}return l&&"_"!==r}}if("_"===r)return!1;for(;s<o;s++)if("_"!==(r=t[s])){if(!a(t.charCodeAt(s)))return!1;l=!0}return!(!l||"_"===r)},construct:function(t){var r,n=t,i=1;if(-1!==n.indexOf("_")&&(n=n.replace(/_/g,"")),"-"!==(r=n[0])&&"+"!==r||("-"===r&&(i=-1),r=(n=n.slice(1))[0]),"0"===n)return 0;if("0"===r){if("b"===n[1])return i*parseInt(n.slice(2),2);if("x"===n[1])return i*parseInt(n.slice(2),16);if("o"===n[1])return i*parseInt(n.slice(2),8)}return i*parseInt(n,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&t%1==0&&!n.isNegativeZero(t)},represent:{binary:function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})}}),require_float=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/float.js"(t,r){init_globals();var n=require_common7(),i=require_type2(),a=RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),o=/^[-+]?[0-9]+e/;r.exports=new i("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!a.test(t)||"_"===t[t.length-1])},construct:function(t){var r,n;return n="-"===(r=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(r[0])>=0&&(r=r.slice(1)),".inf"===r?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===r?NaN:n*parseFloat(r,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||n.isNegativeZero(t))},represent:function(t,r){var i;if(isNaN(t))switch(r){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(r){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(r){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(n.isNegativeZero(t))return"-0.0";return i=t.toString(10),o.test(i)?i.replace("e",".e"):i},defaultStyle:"lowercase"})}}),require_json2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/json.js"(t,r){init_globals(),r.exports=require_failsafe().extend({implicit:[require_null2(),require_bool(),require_int(),require_float()]})}}),require_core6=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/core.js"(t,r){init_globals(),r.exports=require_json2()}}),require_timestamp=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/timestamp.js"(t,r){init_globals();var n=require_type2(),i=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),a=RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");r.exports=new n("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==i.exec(t)||null!==a.exec(t))},construct:function(t){var r,n,o,s,l,u,d,c,h=0,f=null;if(null===(r=i.exec(t))&&(r=a.exec(t)),null===r)throw Error("Date resolve error");if(n=+r[1],o=r[2]-1,s=+r[3],!r[4])return new Date(Date.UTC(n,o,s));if(l=+r[4],u=+r[5],d=+r[6],r[7]){for(h=r[7].slice(0,3);h.length<3;)h+="0";h*=1}return r[9]&&(f=6e4*(60*r[10]+ +(r[11]||0)),"-"===r[9]&&(f=-f)),c=new Date(Date.UTC(n,o,s,l,u,d,h)),f&&c.setTime(c.getTime()-f),c},instanceOf:Date,represent:function(t){return t.toISOString()}})}}),require_merge=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/merge.js"(t,r){init_globals(),r.exports=new(require_type2())("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}})}}),require_binary=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/binary.js"(t,r){init_globals();var n=require_type2(),i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";r.exports=new n("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var r,n,a=0,o=t.length,s=i;for(n=0;n<o;n++)if(!((r=s.indexOf(t.charAt(n)))>64)){if(r<0)return!1;a+=6}return a%8==0},construct:function(t){var r,n,a=t.replace(/[\r\n=]/g,""),o=a.length,s=i,l=0,u=[];for(r=0;r<o;r++)r%4==0&&r&&(u.push(l>>16&255),u.push(l>>8&255),u.push(255&l)),l=l<<6|s.indexOf(a.charAt(r));return 0==(n=o%4*6)?(u.push(l>>16&255),u.push(l>>8&255),u.push(255&l)):18===n?(u.push(l>>10&255),u.push(l>>2&255)):12===n&&u.push(l>>4&255),new Uint8Array(u)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var r,n,a="",o=0,s=t.length,l=i;for(r=0;r<s;r++)r%3==0&&r&&(a+=l[o>>18&63],a+=l[o>>12&63],a+=l[o>>6&63],a+=l[63&o]),o=(o<<8)+t[r];return 0==(n=s%3)?(a+=l[o>>18&63],a+=l[o>>12&63],a+=l[o>>6&63],a+=l[63&o]):2===n?(a+=l[o>>10&63],a+=l[o>>4&63],a+=l[o<<2&63],a+=l[64]):1===n&&(a+=l[o>>2&63],a+=l[o<<4&63],a+=l[64],a+=l[64]),a}})}}),require_omap=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/omap.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.hasOwnProperty,a=Object.prototype.toString;r.exports=new n("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var r,n,o,s,l,u=[],d=t;for(r=0,n=d.length;r<n;r+=1){if(o=d[r],l=!1,"[object Object]"!==a.call(o))return!1;for(s in o)if(i.call(o,s)){if(l)return!1;l=!0}if(!l||-1!==u.indexOf(s))return!1;u.push(s)}return!0},construct:function(t){return null!==t?t:[]}})}}),require_pairs=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/pairs.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.toString;r.exports=new n("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:function(t){if(null===t)return!0;var r,n,a,o,s,l=t;for(s=Array(l.length),r=0,n=l.length;r<n;r+=1){if(a=l[r],"[object Object]"!==i.call(a)||1!==(o=Object.keys(a)).length)return!1;s[r]=[o[0],a[o[0]]]}return!0},construct:function(t){if(null===t)return[];var r,n,i,a,o,s=t;for(o=Array(s.length),r=0,n=s.length;r<n;r+=1)a=Object.keys(i=s[r]),o[r]=[a[0],i[a[0]]];return o}})}}),require_set2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/type/set.js"(t,r){init_globals();var n=require_type2(),i=Object.prototype.hasOwnProperty;r.exports=new n("tag:yaml.org,2002:set",{kind:"mapping",resolve:function(t){if(null===t)return!0;var r,n=t;for(r in n)if(i.call(n,r)&&null!==n[r])return!1;return!0},construct:function(t){return null!==t?t:{}}})}}),require_default2=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/schema/default.js"(t,r){init_globals(),r.exports=require_core6().extend({implicit:[require_timestamp(),require_merge()],explicit:[require_binary(),require_omap(),require_pairs(),require_set2()]})}}),require_loader=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/loader.js"(t,r){init_globals();var n=require_common7(),i=require_exception(),a=require_snippet(),o=require_default2(),s=Object.prototype.hasOwnProperty,l=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,u=/[\x85\u2028\u2029]/,d=/[,\[\]\{\}]/,c=/^(?:!|!!|![a-z\-]+!)$/i,h=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function f(t){return Object.prototype.toString.call(t)}function p(t){return 10===t||13===t}function m(t){return 9===t||32===t}function g(t){return 9===t||32===t||10===t||13===t}function b(t){return 44===t||91===t||93===t||123===t||125===t}function y(t){var r;return 48<=t&&t<=57?t-48:97<=(r=32|t)&&r<=102?r-97+10:-1}function _(t){return 48===t?"\0":97===t?"\x07":98===t?"\b":116===t||9===t?" ":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"\x1b":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"\x85":95===t?"\xa0":76===t?"\u2028":80===t?"\u2029":""}function v(t){return t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}var A,w=Array(256),x=Array(256);for(A=0;A<256;A++)w[A]=+!!_(A),x[A]=_(A);function E(t,r){this.input=t,this.filename=r.filename||null,this.schema=r.schema||o,this.onWarning=r.onWarning||null,this.legacy=r.legacy||!1,this.json=r.json||!1,this.listener=r.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function S(t,r){var n={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return n.snippet=a(n),new i(r,n)}function C(t,r){throw S(t,r)}function I(t,r){t.onWarning&&t.onWarning.call(null,S(t,r))}var T={YAML:function(t,r,n){var i,a,o;null!==t.version&&C(t,"duplication of %YAML directive"),1!==n.length&&C(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&C(t,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),o=parseInt(i[2],10),1!==a&&C(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=o<2,1!==o&&2!==o&&I(t,"unsupported YAML version of the document")},TAG:function(t,r,n){var i,a;2!==n.length&&C(t,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],c.test(i)||C(t,"ill-formed tag handle (first argument) of the TAG directive"),s.call(t.tagMap,i)&&C(t,'there is a previously declared suffix for "'+i+'" tag handle'),h.test(a)||C(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch(r){C(t,"tag prefix is malformed: "+a)}t.tagMap[i]=a}};function k(t,r,n,i){var a,o,s,u;if(r<n){if(u=t.input.slice(r,n),i)for(a=0,o=u.length;a<o;a+=1)9===(s=u.charCodeAt(a))||32<=s&&s<=1114111||C(t,"expected valid JSON character");else l.test(u)&&C(t,"the stream contains non-printable characters");t.result+=u}}function P(t,r,i,a){var o,l,u,d;for(n.isObject(i)||C(t,"cannot merge mappings; the provided source object is unacceptable"),u=0,d=(o=Object.keys(i)).length;u<d;u+=1)l=o[u],s.call(r,l)||(r[l]=i[l],a[l]=!0)}function R(t,r,n,i,a,o,l,u,d){var c,h;if(Array.isArray(a))for(c=0,h=(a=Array.prototype.slice.call(a)).length;c<h;c+=1)Array.isArray(a[c])&&C(t,"nested arrays are not supported inside keys"),"object"==typeof a&&"[object Object]"===f(a[c])&&(a[c]="[object Object]");if("object"==typeof a&&"[object Object]"===f(a)&&(a="[object Object]"),a=String(a),null===r&&(r={}),"tag:yaml.org,2002:merge"===i)if(Array.isArray(o))for(c=0,h=o.length;c<h;c+=1)P(t,r,o[c],n);else P(t,r,o,n);else t.json||s.call(n,a)||!s.call(r,a)||(t.line=l||t.line,t.lineStart=u||t.lineStart,t.position=d||t.position,C(t,"duplicated mapping key")),"__proto__"===a?Object.defineProperty(r,a,{configurable:!0,enumerable:!0,writable:!0,value:o}):r[a]=o,delete n[a];return r}function O(t){var r;10===(r=t.input.charCodeAt(t.position))?t.position++:13===r?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):C(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function M(t,r,n){for(var i=0,a=t.input.charCodeAt(t.position);0!==a;){for(;m(a);)9===a&&-1===t.firstTabInLine&&(t.firstTabInLine=t.position),a=t.input.charCodeAt(++t.position);if(r&&35===a)do a=t.input.charCodeAt(++t.position);while(10!==a&&13!==a&&0!==a);if(!p(a))break;for(O(t),a=t.input.charCodeAt(t.position),i++,t.lineIndent=0;32===a;)t.lineIndent++,a=t.input.charCodeAt(++t.position)}return -1!==n&&0!==i&&t.lineIndent<n&&I(t,"deficient indentation"),i}function j(t){var r,n=t.position;return!(45!==(r=t.input.charCodeAt(n))&&46!==r||r!==t.input.charCodeAt(n+1)||r!==t.input.charCodeAt(n+2)||(n+=3,0!==(r=t.input.charCodeAt(n))&&!g(r)))}function N(t,r){1===r?t.result+=" ":r>1&&(t.result+=n.repeat("\n",r-1))}function B(t,r){var n,i,a=t.tag,o=t.anchor,s=[],l=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=s),i=t.input.charCodeAt(t.position);0!==i&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,C(t,"tab characters must not be used in indentation")),45===i)&&g(t.input.charCodeAt(t.position+1));)if(l=!0,t.position++,M(t,!0,-1)&&t.lineIndent<=r)s.push(null),i=t.input.charCodeAt(t.position);else if(n=t.line,U(t,r,3,!1,!0),s.push(t.result),M(t,!0,-1),i=t.input.charCodeAt(t.position),(t.line===n||t.lineIndent>r)&&0!==i)C(t,"bad indentation of a sequence entry");else if(t.lineIndent<r)break;return!!l&&(t.tag=a,t.anchor=o,t.kind="sequence",t.result=s,!0)}function L(t){var r,n,i,a,o=!1,l=!1;if(33!==(a=t.input.charCodeAt(t.position)))return!1;if(null!==t.tag&&C(t,"duplication of a tag property"),60===(a=t.input.charCodeAt(++t.position))?(o=!0,a=t.input.charCodeAt(++t.position)):33===a?(l=!0,n="!!",a=t.input.charCodeAt(++t.position)):n="!",r=t.position,o){do a=t.input.charCodeAt(++t.position);while(0!==a&&62!==a);t.position<t.length?(i=t.input.slice(r,t.position),a=t.input.charCodeAt(++t.position)):C(t,"unexpected end of the stream within a verbatim tag")}else{for(;0!==a&&!g(a);)33===a&&(l?C(t,"tag suffix cannot contain exclamation marks"):(n=t.input.slice(r-1,t.position+1),c.test(n)||C(t,"named tag handle cannot contain such characters"),l=!0,r=t.position+1)),a=t.input.charCodeAt(++t.position);i=t.input.slice(r,t.position),d.test(i)&&C(t,"tag suffix cannot contain flow indicator characters")}i&&!h.test(i)&&C(t,"tag name cannot contain such characters: "+i);try{i=decodeURIComponent(i)}catch(r){C(t,"tag name is malformed: "+i)}return o?t.tag=i:s.call(t.tagMap,n)?t.tag=t.tagMap[n]+i:"!"===n?t.tag="!"+i:"!!"===n?t.tag="tag:yaml.org,2002:"+i:C(t,'undeclared tag handle "'+n+'"'),!0}function D(t){var r,n;if(38!==(n=t.input.charCodeAt(t.position)))return!1;for(null!==t.anchor&&C(t,"duplication of an anchor property"),n=t.input.charCodeAt(++t.position),r=t.position;0!==n&&!g(n)&&!b(n);)n=t.input.charCodeAt(++t.position);return t.position===r&&C(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(r,t.position),!0}function U(t,r,i,a,o){var l,u,d,c,h,f,_,A,E,S=1,I=!1,T=!1;if(null!==t.listener&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,l=u=d=4===i||3===i,a&&M(t,!0,-1)&&(I=!0,t.lineIndent>r?S=1:t.lineIndent===r?S=0:t.lineIndent<r&&(S=-1)),1===S)for(;L(t)||D(t);)M(t,!0,-1)?(I=!0,d=l,t.lineIndent>r?S=1:t.lineIndent===r?S=0:t.lineIndent<r&&(S=-1)):d=!1;if(d&&(d=I||o),1!==S&&4!==i||(A=1===i||2===i?r:r+1,E=t.position-t.lineStart,1===S?d&&(B(t,E)||function(t,r,n){var i,a,o,s,l,u,d,c=t.tag,h=t.anchor,f={},p=Object.create(null),b=null,y=null,_=null,v=!1,A=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=f),d=t.input.charCodeAt(t.position);0!==d;){if(v||-1===t.firstTabInLine||(t.position=t.firstTabInLine,C(t,"tab characters must not be used in indentation")),i=t.input.charCodeAt(t.position+1),o=t.line,(63===d||58===d)&&g(i))63===d?(v&&(R(t,f,p,b,y,null,s,l,u),b=y=_=null),A=!0,v=!0,a=!0):v?(v=!1,a=!0):C(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,d=i;else{if(s=t.line,l=t.lineStart,u=t.position,!U(t,n,2,!1,!0))break;if(t.line===o){for(d=t.input.charCodeAt(t.position);m(d);)d=t.input.charCodeAt(++t.position);if(58===d)g(d=t.input.charCodeAt(++t.position))||C(t,"a whitespace character is expected after the key-value separator within a block mapping"),v&&(R(t,f,p,b,y,null,s,l,u),b=y=_=null),A=!0,v=!1,a=!1,b=t.tag,y=t.result;else{if(!A)return t.tag=c,t.anchor=h,!0;C(t,"can not read an implicit mapping pair; a colon is missed")}}else{if(!A)return t.tag=c,t.anchor=h,!0;C(t,"can not read a block mapping entry; a multiline key may not be an implicit key")}}if((t.line===o||t.lineIndent>r)&&(v&&(s=t.line,l=t.lineStart,u=t.position),U(t,r,4,!0,a)&&(v?y=t.result:_=t.result),v||(R(t,f,p,b,y,_,s,l,u),b=y=_=null),M(t,!0,-1),d=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>r)&&0!==d)C(t,"bad indentation of a mapping entry");else if(t.lineIndent<r)break}return v&&R(t,f,p,b,y,null,s,l,u),A&&(t.tag=c,t.anchor=h,t.kind="mapping",t.result=f),A}(t,E,A))||function(t,r){var n,i,a,o,s,l,u,d,c,h,f,p,m=!0,b=t.tag,y=t.anchor,_=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))s=93,d=!1,o=[];else{if(123!==p)return!1;s=125,d=!0,o={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=o),p=t.input.charCodeAt(++t.position);0!==p;){if(M(t,!0,r),(p=t.input.charCodeAt(t.position))===s)return t.position++,t.tag=b,t.anchor=y,t.kind=d?"mapping":"sequence",t.result=o,!0;m?44===p&&C(t,"expected the node content, but found ','"):C(t,"missed comma between flow collection entries"),f=null,l=u=!1,63===p&&g(t.input.charCodeAt(t.position+1))&&(l=u=!0,t.position++,M(t,!0,r)),n=t.line,i=t.lineStart,a=t.position,U(t,r,1,!1,!0),h=t.tag,c=t.result,M(t,!0,r),p=t.input.charCodeAt(t.position),(u||t.line===n)&&58===p&&(l=!0,p=t.input.charCodeAt(++t.position),M(t,!0,r),U(t,r,1,!1,!0),f=t.result),d?R(t,o,_,h,c,f,n,i,a):l?o.push(R(t,null,_,h,c,f,n,i,a)):o.push(c),M(t,!0,r),44===(p=t.input.charCodeAt(t.position))?(m=!0,p=t.input.charCodeAt(++t.position)):m=!1}C(t,"unexpected end of the stream within a flow collection")}(t,A)?T=!0:(u&&function(t,r){var i,a,o,s,l,u=1,d=!1,c=!1,h=r,f=0,g=!1;if(124===(s=t.input.charCodeAt(t.position)))a=!1;else{if(62!==s)return!1;a=!0}for(t.kind="scalar",t.result="";0!==s;)if(43===(s=t.input.charCodeAt(++t.position))||45===s)1===u?u=43===s?3:2:C(t,"repeat of a chomping mode identifier");else{if(!((o=48<=(l=s)&&l<=57?l-48:-1)>=0))break;0===o?C(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?C(t,"repeat of an indentation width identifier"):(h=r+o-1,c=!0)}if(m(s)){do s=t.input.charCodeAt(++t.position);while(m(s));if(35===s)do s=t.input.charCodeAt(++t.position);while(!p(s)&&0!==s)}for(;0!==s;){for(O(t),t.lineIndent=0,s=t.input.charCodeAt(t.position);(!c||t.lineIndent<h)&&32===s;)t.lineIndent++,s=t.input.charCodeAt(++t.position);if(!c&&t.lineIndent>h&&(h=t.lineIndent),p(s))f++;else{if(t.lineIndent<h){3===u?t.result+=n.repeat("\n",d?1+f:f):1===u&&d&&(t.result+="\n");break}for(a?m(s)?(g=!0,t.result+=n.repeat("\n",d?1+f:f)):g?(g=!1,t.result+=n.repeat("\n",f+1)):0===f?d&&(t.result+=" "):t.result+=n.repeat("\n",f):t.result+=n.repeat("\n",d?1+f:f),d=!0,c=!0,f=0,i=t.position;!p(s)&&0!==s;)s=t.input.charCodeAt(++t.position);k(t,i,t.position,!1)}}return!0}(t,A)||function(t,r){var n,i,a;if(39!==(n=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,i=a=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(k(t,i,t.position,!0),39!==(n=t.input.charCodeAt(++t.position)))return!0;i=t.position,t.position++,a=t.position}else p(n)?(k(t,i,a,!0),N(t,M(t,!1,r)),i=a=t.position):t.position===t.lineStart&&j(t)?C(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);C(t,"unexpected end of the stream within a single quoted scalar")}(t,A)||function(t,r){var n,i,a,o,s,l,u;if(34!==(l=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;0!==(l=t.input.charCodeAt(t.position));){if(34===l)return k(t,n,t.position,!0),t.position++,!0;if(92===l){if(k(t,n,t.position,!0),p(l=t.input.charCodeAt(++t.position)))M(t,!1,r);else if(l<256&&w[l])t.result+=x[l],t.position++;else if((s=120===(u=l)?2:117===u?4:8*(85===u))>0){for(a=s,o=0;a>0;a--)(s=y(l=t.input.charCodeAt(++t.position)))>=0?o=(o<<4)+s:C(t,"expected hexadecimal character");t.result+=v(o),t.position++}else C(t,"unknown escape sequence");n=i=t.position}else p(l)?(k(t,n,i,!0),N(t,M(t,!1,r)),n=i=t.position):t.position===t.lineStart&&j(t)?C(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}C(t,"unexpected end of the stream within a double quoted scalar")}(t,A)?T=!0:!function(t){var r,n,i;if(42!==(i=t.input.charCodeAt(t.position)))return!1;for(i=t.input.charCodeAt(++t.position),r=t.position;0!==i&&!g(i)&&!b(i);)i=t.input.charCodeAt(++t.position);return t.position===r&&C(t,"name of an alias node must contain at least one character"),n=t.input.slice(r,t.position),s.call(t.anchorMap,n)||C(t,'unidentified alias "'+n+'"'),t.result=t.anchorMap[n],M(t,!0,-1),!0}(t)?function(t,r,n){var i,a,o,s,l,u,d,c,h=t.kind,f=t.result;if(g(c=t.input.charCodeAt(t.position))||b(c)||35===c||38===c||42===c||33===c||124===c||62===c||39===c||34===c||37===c||64===c||96===c||(63===c||45===c)&&(g(i=t.input.charCodeAt(t.position+1))||n&&b(i)))return!1;for(t.kind="scalar",t.result="",a=o=t.position,s=!1;0!==c;){if(58===c){if(g(i=t.input.charCodeAt(t.position+1))||n&&b(i))break}else if(35===c){if(g(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&j(t)||n&&b(c))break;if(p(c)){if(l=t.line,u=t.lineStart,d=t.lineIndent,M(t,!1,-1),t.lineIndent>=r){s=!0,c=t.input.charCodeAt(t.position);continue}t.position=o,t.line=l,t.lineStart=u,t.lineIndent=d;break}}s&&(k(t,a,o,!1),N(t,t.line-l),a=o=t.position,s=!1),m(c)||(o=t.position+1),c=t.input.charCodeAt(++t.position)}return k(t,a,o,!1),!!t.result||(t.kind=h,t.result=f,!1)}(t,A,1===i)&&(T=!0,null===t.tag&&(t.tag="?")):(T=!0,null===t.tag&&null===t.anchor||C(t,"alias node should not have any properties")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===S&&(T=d&&B(t,E))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&C(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),c=0,h=t.implicitTypes.length;c<h;c+=1)if((_=t.implicitTypes[c]).resolve(t.result)){t.result=_.construct(t.result),t.tag=_.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else if("!"!==t.tag){if(s.call(t.typeMap[t.kind||"fallback"],t.tag))_=t.typeMap[t.kind||"fallback"][t.tag];else for(_=null,c=0,h=(f=t.typeMap.multi[t.kind||"fallback"]).length;c<h;c+=1)if(t.tag.slice(0,f[c].tag.length)===f[c].tag){_=f[c];break}_||C(t,"unknown tag !<"+t.tag+">"),null!==t.result&&_.kind!==t.kind&&C(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+_.kind+'", not "'+t.kind+'"'),_.resolve(t.result,t.tag)?(t.result=_.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):C(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||T}function F(t){var r,n,i,a,o=t.position,l=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(a=t.input.charCodeAt(t.position))&&(M(t,!0,-1),a=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==a));){for(l=!0,a=t.input.charCodeAt(++t.position),r=t.position;0!==a&&!g(a);)a=t.input.charCodeAt(++t.position);for(i=[],(n=t.input.slice(r,t.position)).length<1&&C(t,"directive name must not be less than one character in length");0!==a;){for(;m(a);)a=t.input.charCodeAt(++t.position);if(35===a){do a=t.input.charCodeAt(++t.position);while(0!==a&&!p(a));break}if(p(a))break;for(r=t.position;0!==a&&!g(a);)a=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}0!==a&&O(t),s.call(T,n)?T[n](t,n,i):I(t,'unknown document directive "'+n+'"')}M(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,M(t,!0,-1)):l&&C(t,"directives end mark is expected"),U(t,t.lineIndent-1,4,!1,!0),M(t,!0,-1),t.checkLineBreaks&&u.test(t.input.slice(o,t.position))&&I(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&j(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,M(t,!0,-1)):t.position<t.length-1&&C(t,"end of the stream or a document separator is expected")}function z(t,r){r=r||{},0!==(t=String(t)).length&&(10!==t.charCodeAt(t.length-1)&&13!==t.charCodeAt(t.length-1)&&(t+="\n"),65279===t.charCodeAt(0)&&(t=t.slice(1)));var n=new E(t,r),i=t.indexOf("\0");for(-1!==i&&(n.position=i,C(n,"null byte is not allowed in input")),n.input+="\0";32===n.input.charCodeAt(n.position);)n.lineIndent+=1,n.position+=1;for(;n.position<n.length-1;)F(n);return n.documents}r.exports.loadAll=function(t,r,n){null!==r&&"object"==typeof r&&void 0===n&&(n=r,r=null);var i=z(t,n);if("function"!=typeof r)return i;for(var a=0,o=i.length;a<o;a+=1)r(i[a])},r.exports.load=function(t,r){var n=z(t,r);if(0!==n.length){if(1===n.length)return n[0];throw new i("expected a single document in the stream, but found more")}}}}),require_dumper=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/lib/dumper.js"(t,r){init_globals();var n=require_common7(),i=require_exception(),a=require_default2(),o=Object.prototype.toString,s=Object.prototype.hasOwnProperty,l=65279,u={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},d=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],c=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function h(t){var r,a,o;if(r=t.toString(16).toUpperCase(),t<=255)a="x",o=2;else if(t<=65535)a="u",o=4;else{if(!(t<=0xffffffff))throw new i("code point within a string may not be greater than 0xFFFFFFFF");a="U",o=8}return"\\"+a+n.repeat("0",o-r.length)+r}function f(t){this.schema=t.schema||a,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=n.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=function(t,r){var n,i,a,o,l,u,d;if(null===r)return{};for(n={},a=0,o=(i=Object.keys(r)).length;a<o;a+=1)u=String(r[l=i[a]]),"!!"===l.slice(0,2)&&(l="tag:yaml.org,2002:"+l.slice(2)),(d=t.compiledTypeMap.fallback[l])&&s.call(d.styleAliases,u)&&(u=d.styleAliases[u]),n[l]=u;return n}(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType='"'===t.quotingType?2:1,this.forceQuotes=t.forceQuotes||!1,this.replacer="function"==typeof t.replacer?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function p(t,r){for(var i,a=n.repeat(" ",r),o=0,s=-1,l="",u=t.length;o<u;)-1===(s=t.indexOf("\n",o))?(i=t.slice(o),o=u):(i=t.slice(o,s+1),o=s+1),i.length&&"\n"!==i&&(l+=a),l+=i;return l}function m(t,r){return"\n"+n.repeat(" ",t.indent*r)}function g(t){return 32===t||9===t}function b(t){return 32<=t&&t<=126||161<=t&&t<=55295&&8232!==t&&8233!==t||57344<=t&&t<=65533&&t!==l||65536<=t&&t<=1114111}function y(t){return b(t)&&t!==l&&13!==t&&10!==t}function _(t,r,n){var i=y(t),a=i&&!g(t);return(n?i:i&&44!==t&&91!==t&&93!==t&&123!==t&&125!==t)&&35!==t&&!(58===r&&!a)||y(r)&&!g(r)&&35===t||58===r&&a}function v(t,r){var n,i=t.charCodeAt(r);return i>=55296&&i<=56319&&r+1<t.length&&(n=t.charCodeAt(r+1))>=56320&&n<=57343?1024*(i-55296)+n-56320+65536:i}function A(t){return/^\n* /.test(t)}function w(t,r,n,i,a,o,s,u){var d,c,h=0,f=null,p=!1,m=!1,y=-1!==i,w=-1,x=b(c=v(t,0))&&c!==l&&!g(c)&&45!==c&&63!==c&&58!==c&&44!==c&&91!==c&&93!==c&&123!==c&&125!==c&&35!==c&&38!==c&&42!==c&&33!==c&&124!==c&&61!==c&&62!==c&&39!==c&&34!==c&&37!==c&&64!==c&&96!==c&&function(t){return!g(t)&&58!==t}(v(t,t.length-1));if(r||s)for(d=0;d<t.length;h>=65536?d+=2:d++){if(!b(h=v(t,d)))return 5;x=x&&_(h,f,u),f=h}else{for(d=0;d<t.length;h>=65536?d+=2:d++){if(10===(h=v(t,d)))p=!0,y&&(m=m||d-w-1>i&&" "!==t[w+1],w=d);else if(!b(h))return 5;x=x&&_(h,f,u),f=h}m=m||y&&d-w-1>i&&" "!==t[w+1]}return p||m?n>9&&A(t)?5:s?2===o?5:2:m?4:3:!x||s||a(t)?2===o?5:2:1}function x(t,r,n,a,o){t.dump=function(){if(0===r.length)return 2===t.quotingType?'""':"''";if(!t.noCompatMode&&(-1!==d.indexOf(r)||c.test(r)))return 2===t.quotingType?'"'+r+'"':"'"+r+"'";var s=t.indent*Math.max(1,n),l=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-s);switch(w(r,a||t.flowLevel>-1&&n>=t.flowLevel,t.indent,l,function(r){return function(t,r){var n,i;for(n=0,i=t.implicitTypes.length;n<i;n+=1)if(t.implicitTypes[n].resolve(r))return!0;return!1}(t,r)},t.quotingType,t.forceQuotes&&!a,o)){case 1:return r;case 2:return"'"+r.replace(/'/g,"''")+"'";case 3:return"|"+E(r,t.indent)+S(p(r,s));case 4:return">"+E(r,t.indent)+S(p(function(t,r){for(var n,i,a,o=/(\n+)([^\n]*)/g,s=(o.lastIndex=n=-1!==(n=t.indexOf("\n"))?n:t.length,C(t.slice(0,n),r)),l="\n"===t[0]||" "===t[0];a=o.exec(t);){var u=a[1],d=a[2];i=" "===d[0],s+=u+(l||i||""===d?"":"\n")+C(d,r),l=i}return s}(r,l),s));case 5:return'"'+function(t){for(var r,n="",i=0,a=0;a<t.length;i>=65536?a+=2:a++)!(r=u[i=v(t,a)])&&b(i)?(n+=t[a],i>=65536&&(n+=t[a+1])):n+=r||h(i);return n}(r)+'"';default:throw new i("impossible error: invalid scalar style")}}()}function E(t,r){var n=A(t)?String(r):"",i="\n"===t[t.length-1];return n+(i&&("\n"===t[t.length-2]||"\n"===t)?"+":i?"":"-")+"\n"}function S(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function C(t,r){if(""===t||" "===t[0])return t;for(var n,i,a=/ [^ ]/g,o=0,s=0,l=0,u="";n=a.exec(t);)(l=n.index)-o>r&&(i=s>o?s:l,u+="\n"+t.slice(o,i),o=i+1),s=l;return u+="\n",t.length-o>r&&s>o?u+=t.slice(o,s)+"\n"+t.slice(s+1):u+=t.slice(o),u.slice(1)}function I(t,r,n,i){var a,o,s,l="",u=t.tag;for(a=0,o=n.length;a<o;a+=1)s=n[a],t.replacer&&(s=t.replacer.call(n,String(a),s)),(k(t,r+1,s,!0,!0,!1,!0)||void 0===s&&k(t,r+1,null,!0,!0,!1,!0))&&(i&&""===l||(l+=m(t,r)),t.dump&&10===t.dump.charCodeAt(0)?l+="-":l+="- ",l+=t.dump);t.tag=u,t.dump=l||"[]"}function T(t,r,n){var a,l,u,d,c,h;for(u=0,d=(l=n?t.explicitTypes:t.implicitTypes).length;u<d;u+=1)if(((c=l[u]).instanceOf||c.predicate)&&(!c.instanceOf||"object"==typeof r&&r instanceof c.instanceOf)&&(!c.predicate||c.predicate(r))){if(n?c.multi&&c.representName?t.tag=c.representName(r):t.tag=c.tag:t.tag="?",c.represent){if(h=t.styleMap[c.tag]||c.defaultStyle,"[object Function]"===o.call(c.represent))a=c.represent(r,h);else{if(!s.call(c.represent,h))throw new i("!<"+c.tag+'> tag resolver accepts not "'+h+'" style');a=c.represent[h](r,h)}t.dump=a}return!0}return!1}function k(t,r,n,a,s,l,u){t.tag=null,t.dump=n,T(t,n,!1)||T(t,n,!0);var d,c=o.call(t.dump),h=a;a&&(a=t.flowLevel<0||t.flowLevel>r);var f,p,g="[object Object]"===c||"[object Array]"===c;if(g&&(p=-1!==(f=t.duplicates.indexOf(n))),(null!==t.tag&&"?"!==t.tag||p||2!==t.indent&&r>0)&&(s=!1),p&&t.usedDuplicates[f])t.dump="*ref_"+f;else{if(g&&p&&!t.usedDuplicates[f]&&(t.usedDuplicates[f]=!0),"[object Object]"===c)a&&0!==Object.keys(t.dump).length?(!function(t,r,n,a){var o,s,l,u,d,c,h="",f=t.tag,p=Object.keys(n);if(!0===t.sortKeys)p.sort();else if("function"==typeof t.sortKeys)p.sort(t.sortKeys);else if(t.sortKeys)throw new i("sortKeys must be a boolean or a function");for(o=0,s=p.length;o<s;o+=1)c="",a&&""===h||(c+=m(t,r)),u=n[l=p[o]],t.replacer&&(u=t.replacer.call(n,l,u)),k(t,r+1,l,!0,!0,!0)&&((d=null!==t.tag&&"?"!==t.tag||t.dump&&t.dump.length>1024)&&(t.dump&&10===t.dump.charCodeAt(0)?c+="?":c+="? "),c+=t.dump,d&&(c+=m(t,r)),k(t,r+1,u,!0,d)&&(t.dump&&10===t.dump.charCodeAt(0)?c+=":":c+=": ",h+=c+=t.dump));t.tag=f,t.dump=h||"{}"}(t,r,t.dump,s),p&&(t.dump="&ref_"+f+t.dump)):(!function(t,r,n){var i,a,o,s,l,u="",d=t.tag,c=Object.keys(n);for(i=0,a=c.length;i<a;i+=1)l="",""!==u&&(l+=", "),t.condenseFlow&&(l+='"'),s=n[o=c[i]],t.replacer&&(s=t.replacer.call(n,o,s)),k(t,r,o,!1,!1)&&(t.dump.length>1024&&(l+="? "),l+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),k(t,r,s,!1,!1)&&(u+=l+=t.dump));t.tag=d,t.dump="{"+u+"}"}(t,r,t.dump),p&&(t.dump="&ref_"+f+" "+t.dump));else if("[object Array]"===c)a&&0!==t.dump.length?(t.noArrayIndent&&!u&&r>0?I(t,r-1,t.dump,s):I(t,r,t.dump,s),p&&(t.dump="&ref_"+f+t.dump)):(!function(t,r,n){var i,a,o,s="",l=t.tag;for(i=0,a=n.length;i<a;i+=1)o=n[i],t.replacer&&(o=t.replacer.call(n,String(i),o)),(k(t,r,o,!1,!1)||void 0===o&&k(t,r,null,!1,!1))&&(""!==s&&(s+=","+(t.condenseFlow?"":" ")),s+=t.dump);t.tag=l,t.dump="["+s+"]"}(t,r,t.dump),p&&(t.dump="&ref_"+f+" "+t.dump));else{if("[object String]"!==c){if("[object Undefined]"===c||t.skipInvalid)return!1;throw new i("unacceptable kind of an object to dump "+c)}"?"!==t.tag&&x(t,t.dump,r,l,h)}null!==t.tag&&"?"!==t.tag&&(d=encodeURI("!"===t.tag[0]?t.tag.slice(1):t.tag).replace(/!/g,"%21"),d="!"===t.tag[0]?"!"+d:"tag:yaml.org,2002:"===d.slice(0,18)?"!!"+d.slice(18):"!<"+d+">",t.dump=d+" "+t.dump)}return!0}function P(t,r){var n,i,a=[],o=[];for(R(t,a,o),n=0,i=o.length;n<i;n+=1)r.duplicates.push(a[o[n]]);r.usedDuplicates=Array(i)}function R(t,r,n){var i,a,o;if(null!==t&&"object"==typeof t)if(-1!==(a=r.indexOf(t)))-1===n.indexOf(a)&&n.push(a);else if(r.push(t),Array.isArray(t))for(a=0,o=t.length;a<o;a+=1)R(t[a],r,n);else for(a=0,o=(i=Object.keys(t)).length;a<o;a+=1)R(t[i[a]],r,n)}r.exports.dump=function(t,r){var n=new f(r=r||{});n.noRefs||P(t,n);var i=t;return n.replacer&&(i=n.replacer.call({"":i},"",i)),k(n,0,i,!0,!0)?n.dump+"\n":""}}}),require_js_yaml=__commonJS({"../../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/index.js"(t,r){init_globals();var n=require_loader(),i=require_dumper();function a(t,r){return function(){throw Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+r+" instead, which is now safe by default.")}}r.exports.Type=require_type2(),r.exports.Schema=require_schema(),r.exports.FAILSAFE_SCHEMA=require_failsafe(),r.exports.JSON_SCHEMA=require_json2(),r.exports.CORE_SCHEMA=require_core6(),r.exports.DEFAULT_SCHEMA=require_default2(),r.exports.load=n.load,r.exports.loadAll=n.loadAll,r.exports.dump=i.dump,r.exports.YAMLException=require_exception(),r.exports.types={binary:require_binary(),float:require_float(),map:require_map2(),null:require_null2(),pairs:require_pairs(),set:require_set2(),timestamp:require_timestamp(),bool:require_bool(),int:require_int(),merge:require_merge(),omap:require_omap(),seq:require_seq(),str:require_str()},r.exports.safeLoad=a("safeLoad","load"),r.exports.safeLoadAll=a("safeLoadAll","loadAll"),r.exports.safeDump=a("safeDump","dump")}}),require_constants11=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/constants.js"(t,r){init_globals(),r.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER||0x1fffffffffffff,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}}),require_debug2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/debug.js"(t,r){init_globals(),r.exports="object"==typeof import_browser.default&&import_browser.default.env&&import_browser.default.env.NODE_DEBUG&&/\bsemver\b/i.test(import_browser.default.env.NODE_DEBUG)?(...t)=>import_console_browserify.default.error("SEMVER",...t):()=>{}}}),require_re2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/re.js"(t,r){init_globals();var{MAX_SAFE_COMPONENT_LENGTH:n}=require_constants11(),i=require_debug2(),a=(t=r.exports={}).re=[],o=t.safeRe=[],s=t.src=[],l=t.t={},u=0,d=(t,r,n)=>{let d=r.split("\\s*").join("\\s{0,1}").split("\\s+").join("\\s"),c=u++;i(t,c,r),l[t]=c,s[c]=r,a[c]=new RegExp(r,n?"g":void 0),o[c]=new RegExp(d,n?"g":void 0)};d("NUMERICIDENTIFIER","0|[1-9]\\d*"),d("NUMERICIDENTIFIERLOOSE","[0-9]+"),d("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),d("MAINVERSION",`(${s[l.NUMERICIDENTIFIER]})\\.(${s[l.NUMERICIDENTIFIER]})\\.(${s[l.NUMERICIDENTIFIER]})`),d("MAINVERSIONLOOSE",`(${s[l.NUMERICIDENTIFIERLOOSE]})\\.(${s[l.NUMERICIDENTIFIERLOOSE]})\\.(${s[l.NUMERICIDENTIFIERLOOSE]})`),d("PRERELEASEIDENTIFIER",`(?:${s[l.NUMERICIDENTIFIER]}|${s[l.NONNUMERICIDENTIFIER]})`),d("PRERELEASEIDENTIFIERLOOSE",`(?:${s[l.NUMERICIDENTIFIERLOOSE]}|${s[l.NONNUMERICIDENTIFIER]})`),d("PRERELEASE",`(?:-(${s[l.PRERELEASEIDENTIFIER]}(?:\\.${s[l.PRERELEASEIDENTIFIER]})*))`),d("PRERELEASELOOSE",`(?:-?(${s[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${s[l.PRERELEASEIDENTIFIERLOOSE]})*))`),d("BUILDIDENTIFIER","[0-9A-Za-z-]+"),d("BUILD",`(?:\\+(${s[l.BUILDIDENTIFIER]}(?:\\.${s[l.BUILDIDENTIFIER]})*))`),d("FULLPLAIN",`v?${s[l.MAINVERSION]}${s[l.PRERELEASE]}?${s[l.BUILD]}?`),d("FULL",`^${s[l.FULLPLAIN]}$`),d("LOOSEPLAIN",`[v=\\s]*${s[l.MAINVERSIONLOOSE]}${s[l.PRERELEASELOOSE]}?${s[l.BUILD]}?`),d("LOOSE",`^${s[l.LOOSEPLAIN]}$`),d("GTLT","((?:<|>)?=?)"),d("XRANGEIDENTIFIERLOOSE",`${s[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),d("XRANGEIDENTIFIER",`${s[l.NUMERICIDENTIFIER]}|x|X|\\*`),d("XRANGEPLAIN",`[v=\\s]*(${s[l.XRANGEIDENTIFIER]})(?:\\.(${s[l.XRANGEIDENTIFIER]})(?:\\.(${s[l.XRANGEIDENTIFIER]})(?:${s[l.PRERELEASE]})?${s[l.BUILD]}?)?)?`),d("XRANGEPLAINLOOSE",`[v=\\s]*(${s[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${s[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${s[l.XRANGEIDENTIFIERLOOSE]})(?:${s[l.PRERELEASELOOSE]})?${s[l.BUILD]}?)?)?`),d("XRANGE",`^${s[l.GTLT]}\\s*${s[l.XRANGEPLAIN]}$`),d("XRANGELOOSE",`^${s[l.GTLT]}\\s*${s[l.XRANGEPLAINLOOSE]}$`),d("COERCE",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?(?:$|[^\\d])`),d("COERCERTL",s[l.COERCE],!0),d("LONETILDE","(?:~>?)"),d("TILDETRIM",`(\\s*)${s[l.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",d("TILDE",`^${s[l.LONETILDE]}${s[l.XRANGEPLAIN]}$`),d("TILDELOOSE",`^${s[l.LONETILDE]}${s[l.XRANGEPLAINLOOSE]}$`),d("LONECARET","(?:\\^)"),d("CARETTRIM",`(\\s*)${s[l.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",d("CARET",`^${s[l.LONECARET]}${s[l.XRANGEPLAIN]}$`),d("CARETLOOSE",`^${s[l.LONECARET]}${s[l.XRANGEPLAINLOOSE]}$`),d("COMPARATORLOOSE",`^${s[l.GTLT]}\\s*(${s[l.LOOSEPLAIN]})$|^$`),d("COMPARATOR",`^${s[l.GTLT]}\\s*(${s[l.FULLPLAIN]})$|^$`),d("COMPARATORTRIM",`(\\s*)${s[l.GTLT]}\\s*(${s[l.LOOSEPLAIN]}|${s[l.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",d("HYPHENRANGE",`^\\s*(${s[l.XRANGEPLAIN]})\\s+-\\s+(${s[l.XRANGEPLAIN]})\\s*$`),d("HYPHENRANGELOOSE",`^\\s*(${s[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${s[l.XRANGEPLAINLOOSE]})\\s*$`),d("STAR","(<|>)?=?\\s*\\*"),d("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),d("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}}),require_parse_options2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/parse-options.js"(t,r){init_globals();var n=Object.freeze({loose:!0}),i=Object.freeze({});r.exports=t=>t?"object"!=typeof t?n:t:i}}),require_identifiers2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/internal/identifiers.js"(t,r){init_globals();var n=/^[0-9]+$/,i=(t,r)=>{let i=n.test(t),a=n.test(r);return i&&a&&(t*=1,r*=1),t===r?0:i&&!a?-1:a&&!i?1:t<r?-1:1};r.exports={compareIdentifiers:i,rcompareIdentifiers:(t,r)=>i(r,t)}}}),require_semver3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/semver.js"(t,r){init_globals();var n=require_debug2(),{MAX_LENGTH:i,MAX_SAFE_INTEGER:a}=require_constants11(),{safeRe:o,t:s}=require_re2(),l=require_parse_options2(),{compareIdentifiers:u}=require_identifiers2();r.exports=class t{constructor(r,u){if(u=l(u),r instanceof t){if(!!u.loose===r.loose&&!!u.includePrerelease===r.includePrerelease)return r;r=r.version}else if("string"!=typeof r)throw TypeError(`Invalid version. Must be a string. Got type "${typeof r}".`);if(r.length>i)throw TypeError(`version is longer than ${i} characters`);n("SemVer",r,u),this.options=u,this.loose=!!u.loose,this.includePrerelease=!!u.includePrerelease;let d=r.trim().match(u.loose?o[s.LOOSE]:o[s.FULL]);if(!d)throw TypeError(`Invalid Version: ${r}`);if(this.raw=r,this.major=+d[1],this.minor=+d[2],this.patch=+d[3],this.major>a||this.major<0)throw TypeError("Invalid major version");if(this.minor>a||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>a||this.patch<0)throw TypeError("Invalid patch version");d[4]?this.prerelease=d[4].split(".").map(t=>{if(/^[0-9]+$/.test(t)){let r=+t;if(r>=0&&r<a)return r}return t}):this.prerelease=[],this.build=d[5]?d[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(r){if(n("SemVer.compare",this.version,this.options,r),!(r instanceof t)){if("string"==typeof r&&r===this.version)return 0;r=new t(r,this.options)}return r.version===this.version?0:this.compareMain(r)||this.comparePre(r)}compareMain(r){return r instanceof t||(r=new t(r,this.options)),u(this.major,r.major)||u(this.minor,r.minor)||u(this.patch,r.patch)}comparePre(r){if(r instanceof t||(r=new t(r,this.options)),this.prerelease.length&&!r.prerelease.length)return -1;if(!this.prerelease.length&&r.prerelease.length)return 1;if(!this.prerelease.length&&!r.prerelease.length)return 0;let i=0;do{let t=this.prerelease[i],a=r.prerelease[i];if(n("prerelease compare",i,t,a),void 0===t&&void 0===a)return 0;if(void 0===a)return 1;if(void 0===t)return -1;if(t!==a)return u(t,a)}while(++i)}compareBuild(r){r instanceof t||(r=new t(r,this.options));let i=0;do{let t=this.build[i],a=r.build[i];if(n("prerelease compare",i,t,a),void 0===t&&void 0===a)return 0;if(void 0===a)return 1;if(void 0===t)return -1;if(t!==a)return u(t,a)}while(++i)}inc(t,r,n){switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{let t=+!!Number(n);if(!r&&!1===n)throw Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[t];else{let i=this.prerelease.length;for(;--i>=0;)"number"==typeof this.prerelease[i]&&(this.prerelease[i]++,i=-2);if(-1===i){if(r===this.prerelease.join(".")&&!1===n)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(r){let i=[r,t];!1===n&&(i=[r]),0===u(this.prerelease[0],r)?isNaN(this.prerelease[1])&&(this.prerelease=i):this.prerelease=i}break}default:throw Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}}}),require_parse4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/parse.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i=!1)=>{if(t instanceof n)return t;try{return new n(t,r)}catch(t){if(!i)return null;throw t}}}}),require_valid3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/valid.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,r);return i?i.version:null}}}),require_clean2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/clean.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t.trim().replace(/^[=v]+/,""),r);return i?i.version:null}}}),require_inc2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/inc.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i,a,o)=>{"string"==typeof i&&(o=a,a=i,i=void 0);try{return new n(t instanceof n?t.version:t,i).inc(r,a,o).version}catch(t){return null}}}}),require_diff2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/diff.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,null,!0),a=n(r,null,!0),o=i.compare(a);if(0===o)return null;let s=o>0,l=s?i:a,u=s?a:i,d=!!l.prerelease.length;if(u.prerelease.length&&!d)return u.patch||u.minor?l.patch?"patch":l.minor?"minor":"major":"major";let c=d?"pre":"";return i.major!==a.major?c+"major":i.minor!==a.minor?c+"minor":i.patch!==a.patch?c+"patch":"prerelease"}}}),require_major2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/major.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).major}}),require_minor2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/minor.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).minor}}),require_patch2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/patch.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r)=>new n(t,r).patch}}),require_prerelease2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/prerelease.js"(t,r){init_globals();var n=require_parse4();r.exports=(t,r)=>{let i=n(t,r);return i&&i.prerelease.length?i.prerelease:null}}}),require_compare2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i)=>new n(t,i).compare(new n(r,i))}}),require_rcompare2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/rcompare.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(r,t,i)}}),require_compare_loose2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare-loose.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r)=>n(t,r,!0)}}),require_compare_build2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/compare-build.js"(t,r){init_globals();var n=require_semver3();r.exports=(t,r,i)=>{let a=new n(t,i),o=new n(r,i);return a.compare(o)||a.compareBuild(o)}}}),require_sort2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/sort.js"(t,r){init_globals();var n=require_compare_build2();r.exports=(t,r)=>t.sort((t,i)=>n(t,i,r))}}),require_rsort2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/rsort.js"(t,r){init_globals();var n=require_compare_build2();r.exports=(t,r)=>t.sort((t,i)=>n(i,t,r))}}),require_gt2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/gt.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(t,r,i)>0}}),require_lt2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/lt.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0>n(t,r,i)}}),require_eq2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/eq.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0===n(t,r,i)}}),require_neq2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/neq.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0!==n(t,r,i)}}),require_gte2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/gte.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>n(t,r,i)>=0}}),require_lte2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/lte.js"(t,r){init_globals();var n=require_compare2();r.exports=(t,r,i)=>0>=n(t,r,i)}}),require_cmp2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/cmp.js"(t,r){init_globals();var n=require_eq2(),i=require_neq2(),a=require_gt2(),o=require_gte2(),s=require_lt2(),l=require_lte2();r.exports=(t,r,u,d)=>{switch(r){case"===":return"object"==typeof t&&(t=t.version),"object"==typeof u&&(u=u.version),t===u;case"!==":return"object"==typeof t&&(t=t.version),"object"==typeof u&&(u=u.version),t!==u;case"":case"=":case"==":return n(t,u,d);case"!=":return i(t,u,d);case">":return a(t,u,d);case">=":return o(t,u,d);case"<":return s(t,u,d);case"<=":return l(t,u,d);default:throw TypeError(`Invalid operator: ${r}`)}}}}),require_coerce2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/coerce.js"(t,r){init_globals();var n=require_semver3(),i=require_parse4(),{safeRe:a,t:o}=require_re2();r.exports=(t,r)=>{if(t instanceof n)return t;if("number"==typeof t&&(t=String(t)),"string"!=typeof t)return null;let s=null;if((r=r||{}).rtl){let r;for(;(r=a[o.COERCERTL].exec(t))&&(!s||s.index+s[0].length!==t.length);)s&&r.index+r[0].length===s.index+s[0].length||(s=r),a[o.COERCERTL].lastIndex=r.index+r[1].length+r[2].length;a[o.COERCERTL].lastIndex=-1}else s=t.match(a[o.COERCE]);return null===s?null:i(`${s[2]}.${s[3]||"0"}.${s[4]||"0"}`,r)}}}),require_iterator=__commonJS({"../../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js"(t,r){init_globals(),r.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}}}),require_yallist=__commonJS({"../../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js"(t,r){function n(t){var r=this;if(r instanceof n||(r=new n),r.tail=null,r.head=null,r.length=0,t&&"function"==typeof t.forEach)t.forEach(function(t){r.push(t)});else if(arguments.length>0)for(var i=0,a=arguments.length;i<a;i++)r.push(arguments[i]);return r}function i(t,r,n){var i=r===t.head?new s(n,null,r,t):new s(n,r,r.next,t);return null===i.next&&(t.tail=i),null===i.prev&&(t.head=i),t.length++,i}function a(t,r){t.tail=new s(r,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function o(t,r){t.head=new s(r,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function s(t,r,n,i){if(!(this instanceof s))return new s(t,r,n,i);this.list=i,this.value=t,r?(r.next=this,this.prev=r):this.prev=null,n?(n.prev=this,this.next=n):this.next=null}init_globals(),r.exports=n,n.Node=s,n.create=n,n.prototype.removeNode=function(t){if(t.list!==this)throw Error("removing node which does not belong to this list");var r=t.next,n=t.prev;return r&&(r.prev=n),n&&(n.next=r),t===this.head&&(this.head=r),t===this.tail&&(this.tail=n),t.list.length--,t.next=null,t.prev=null,t.list=null,r},n.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var r=this.head;t.list=this,t.next=r,r&&(r.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}},n.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var r=this.tail;t.list=this,t.prev=r,r&&(r.next=t),this.tail=t,this.head||(this.head=t),this.length++}},n.prototype.push=function(){for(var t=0,r=arguments.length;t<r;t++)a(this,arguments[t]);return this.length},n.prototype.unshift=function(){for(var t=0,r=arguments.length;t<r;t++)o(this,arguments[t]);return this.length},n.prototype.pop=function(){if(this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}},n.prototype.shift=function(){if(this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}},n.prototype.forEach=function(t,r){r=r||this;for(var n=this.head,i=0;null!==n;i++)t.call(r,n.value,i,this),n=n.next},n.prototype.forEachReverse=function(t,r){r=r||this;for(var n=this.tail,i=this.length-1;null!==n;i--)t.call(r,n.value,i,this),n=n.prev},n.prototype.get=function(t){for(var r=0,n=this.head;null!==n&&r<t;r++)n=n.next;if(r===t&&null!==n)return n.value},n.prototype.getReverse=function(t){for(var r=0,n=this.tail;null!==n&&r<t;r++)n=n.prev;if(r===t&&null!==n)return n.value},n.prototype.map=function(t,r){r=r||this;for(var i=new n,a=this.head;null!==a;)i.push(t.call(r,a.value,this)),a=a.next;return i},n.prototype.mapReverse=function(t,r){r=r||this;for(var i=new n,a=this.tail;null!==a;)i.push(t.call(r,a.value,this)),a=a.prev;return i},n.prototype.reduce=function(t,r){var n,i=this.head;if(arguments.length>1)n=r;else{if(!this.head)throw TypeError("Reduce of empty list with no initial value");i=this.head.next,n=this.head.value}for(var a=0;null!==i;a++)n=t(n,i.value,a),i=i.next;return n},n.prototype.reduceReverse=function(t,r){var n,i=this.tail;if(arguments.length>1)n=r;else{if(!this.tail)throw TypeError("Reduce of empty list with no initial value");i=this.tail.prev,n=this.tail.value}for(var a=this.length-1;null!==i;a--)n=t(n,i.value,a),i=i.prev;return n},n.prototype.toArray=function(){for(var t=Array(this.length),r=0,n=this.head;null!==n;r++)t[r]=n.value,n=n.next;return t},n.prototype.toArrayReverse=function(){for(var t=Array(this.length),r=0,n=this.tail;null!==n;r++)t[r]=n.value,n=n.prev;return t},n.prototype.slice=function(t,r){(r=r||this.length)<0&&(r+=this.length),(t=t||0)<0&&(t+=this.length);var i=new n;if(r<t||r<0)return i;t<0&&(t=0),r>this.length&&(r=this.length);for(var a=0,o=this.head;null!==o&&a<t;a++)o=o.next;for(;null!==o&&a<r;a++,o=o.next)i.push(o.value);return i},n.prototype.sliceReverse=function(t,r){(r=r||this.length)<0&&(r+=this.length),(t=t||0)<0&&(t+=this.length);var i=new n;if(r<t||r<0)return i;t<0&&(t=0),r>this.length&&(r=this.length);for(var a=this.length,o=this.tail;null!==o&&a>r;a--)o=o.prev;for(;null!==o&&a>t;a--,o=o.prev)i.push(o.value);return i},n.prototype.splice=function(t,r,...n){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var a=0,o=this.head;null!==o&&a<t;a++)o=o.next;var s=[];for(a=0;o&&a<r;a++)s.push(o.value),o=this.removeNode(o);for(null===o&&(o=this.tail),o!==this.head&&o!==this.tail&&(o=o.prev),a=0;a<n.length;a++)o=i(this,o,n[a]);return s},n.prototype.reverse=function(){for(var t=this.head,r=this.tail,n=t;null!==n;n=n.prev){var i=n.prev;n.prev=n.next,n.next=i}return this.head=r,this.tail=t,this};try{require_iterator()(n)}catch(t){}}}),require_lru_cache=__commonJS({"../../node_modules/.pnpm/lru-cache@6.0.0/node_modules/lru-cache/index.js"(t,r){init_globals();var n=require_yallist(),i=Symbol("max"),a=Symbol("length"),o=Symbol("lengthCalculator"),s=Symbol("allowStale"),l=Symbol("maxAge"),u=Symbol("dispose"),d=Symbol("noDisposeOnSet"),c=Symbol("lruList"),h=Symbol("cache"),f=Symbol("updateAgeOnGet"),p=()=>1,m=(t,r,n)=>{let i=t[h].get(r);if(i){let r=i.value;if(g(t,r)){if(y(t,i),!t[s])return}else n&&(t[f]&&(i.value.now=Date.now()),t[c].unshiftNode(i));return r.value}},g=(t,r)=>{if(!r||!r.maxAge&&!t[l])return!1;let n=Date.now()-r.now;return r.maxAge?n>r.maxAge:t[l]&&n>t[l]},b=t=>{if(t[a]>t[i])for(let r=t[c].tail;t[a]>t[i]&&null!==r;){let n=r.prev;y(t,r),r=n}},y=(t,r)=>{if(r){let n=r.value;t[u]&&t[u](n.key,n.value),t[a]-=n.length,t[h].delete(n.key),t[c].removeNode(r)}},_=class{constructor(t,r,n,i,a){this.key=t,this.value=r,this.length=n,this.now=i,this.maxAge=a||0}},v=(t,r,n,i)=>{let a=n.value;g(t,a)&&(y(t,n),t[s]||(a=void 0)),a&&r.call(i,a.value,a.key,t)};r.exports=class{constructor(t){if("number"==typeof t&&(t={max:t}),t||(t={}),t.max&&("number"!=typeof t.max||t.max<0))throw TypeError("max must be a non-negative number");this[i]=t.max||1/0;let r=t.length||p;if(this[o]="function"!=typeof r?p:r,this[s]=t.stale||!1,t.maxAge&&"number"!=typeof t.maxAge)throw TypeError("maxAge must be a number");this[l]=t.maxAge||0,this[u]=t.dispose,this[d]=t.noDisposeOnSet||!1,this[f]=t.updateAgeOnGet||!1,this.reset()}set max(t){if("number"!=typeof t||t<0)throw TypeError("max must be a non-negative number");this[i]=t||1/0,b(this)}get max(){return this[i]}set allowStale(t){this[s]=!!t}get allowStale(){return this[s]}set maxAge(t){if("number"!=typeof t)throw TypeError("maxAge must be a non-negative number");this[l]=t,b(this)}get maxAge(){return this[l]}set lengthCalculator(t){"function"!=typeof t&&(t=p),t!==this[o]&&(this[o]=t,this[a]=0,this[c].forEach(t=>{t.length=this[o](t.value,t.key),this[a]+=t.length})),b(this)}get lengthCalculator(){return this[o]}get length(){return this[a]}get itemCount(){return this[c].length}rforEach(t,r){r=r||this;for(let n=this[c].tail;null!==n;){let i=n.prev;v(this,t,n,r),n=i}}forEach(t,r){r=r||this;for(let n=this[c].head;null!==n;){let i=n.next;v(this,t,n,r),n=i}}keys(){return this[c].toArray().map(t=>t.key)}values(){return this[c].toArray().map(t=>t.value)}reset(){this[u]&&this[c]&&this[c].length&&this[c].forEach(t=>this[u](t.key,t.value)),this[h]=new Map,this[c]=new n,this[a]=0}dump(){return this[c].map(t=>!g(this,t)&&{k:t.key,v:t.value,e:t.now+(t.maxAge||0)}).toArray().filter(t=>t)}dumpLru(){return this[c]}set(t,r,n){if((n=n||this[l])&&"number"!=typeof n)throw TypeError("maxAge must be a number");let s=n?Date.now():0,f=this[o](r,t);if(this[h].has(t)){if(f>this[i])return y(this,this[h].get(t)),!1;let o=this[h].get(t).value;return this[u]&&(this[d]||this[u](t,o.value)),o.now=s,o.maxAge=n,o.value=r,this[a]+=f-o.length,o.length=f,this.get(t),b(this),!0}let p=new _(t,r,f,s,n);return p.length>this[i]?(this[u]&&this[u](t,r),!1):(this[a]+=p.length,this[c].unshift(p),this[h].set(t,this[c].head),b(this),!0)}has(t){return!!this[h].has(t)&&!g(this,this[h].get(t).value)}get(t){return m(this,t,!0)}peek(t){return m(this,t,!1)}pop(){let t=this[c].tail;return t?(y(this,t),t.value):null}del(t){y(this,this[h].get(t))}load(t){this.reset();let r=Date.now();for(let n=t.length-1;n>=0;n--){let i=t[n],a=i.e||0;if(0===a)this.set(i.k,i.v);else{let t=a-r;t>0&&this.set(i.k,i.v,t)}}}prune(){this[h].forEach((t,r)=>m(this,r,!1))}}}}),require_range3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/range.js"(t,r){init_globals(),r.exports=class t{constructor(r,n){if(n=i(n),r instanceof t)return!!n.loose===r.loose&&!!n.includePrerelease===r.includePrerelease?r:new t(r.raw,n);if(r instanceof a)return this.raw=r.value,this.set=[[r]],this.format(),this;if(this.options=n,this.loose=!!n.loose,this.includePrerelease=!!n.includePrerelease,this.raw=r.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(t=>this.parseRange(t)).filter(t=>t.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let t=this.set[0];if(this.set=this.set.filter(t=>!m(t[0])),0===this.set.length)this.set=[t];else if(this.set.length>1){for(let t of this.set)if(1===t.length&&g(t[0])){this.set=[t];break}}}this.format()}format(){return this.range=this.set.map(t=>t.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(t){let r=((this.options.includePrerelease&&f)|(this.options.loose&&p))+":"+t,i=n.get(r);if(i)return i;let s=this.options.loose,g=s?l[u.HYPHENRANGELOOSE]:l[u.HYPHENRANGE];o("hyphen replace",t=t.replace(g,T(this.options.includePrerelease))),o("comparator trim",t=t.replace(l[u.COMPARATORTRIM],d));let b=(t=(t=t.replace(l[u.TILDETRIM],c)).replace(l[u.CARETTRIM],h)).split(" ").map(t=>y(t,this.options)).join(" ").split(/\s+/).map(t=>I(t,this.options));s&&(b=b.filter(t=>(o("loose invalid filter",t,this.options),!!t.match(l[u.COMPARATORLOOSE])))),o("range list",b);let _=new Map;for(let t of b.map(t=>new a(t,this.options))){if(m(t))return[t];_.set(t.value,t)}_.size>1&&_.has("")&&_.delete("");let v=[..._.values()];return n.set(r,v),v}intersects(r,n){if(!(r instanceof t))throw TypeError("a Range is required");return this.set.some(t=>b(t,n)&&r.set.some(r=>b(r,n)&&t.every(t=>r.every(r=>t.intersects(r,n)))))}test(t){if(!t)return!1;if("string"==typeof t)try{t=new s(t,this.options)}catch(t){return!1}for(let r=0;r<this.set.length;r++)if(k(this.set[r],t,this.options))return!0;return!1}};var n=new(require_lru_cache())({max:1e3}),i=require_parse_options2(),a=require_comparator2(),o=require_debug2(),s=require_semver3(),{safeRe:l,t:u,comparatorTrimReplace:d,tildeTrimReplace:c,caretTrimReplace:h}=require_re2(),{FLAG_INCLUDE_PRERELEASE:f,FLAG_LOOSE:p}=require_constants11(),m=t=>"<0.0.0-0"===t.value,g=t=>""===t.value,b=(t,r)=>{let n=!0,i=t.slice(),a=i.pop();for(;n&&i.length;)n=i.every(t=>a.intersects(t,r)),a=i.pop();return n},y=(t,r)=>(o("comp",t,r),o("caret",t=w(t,r)),o("tildes",t=v(t,r)),o("xrange",t=E(t,r)),o("stars",t=C(t,r)),t),_=t=>!t||"x"===t.toLowerCase()||"*"===t,v=(t,r)=>t.trim().split(/\s+/).map(t=>A(t,r)).join(" "),A=(t,r)=>{let n=r.loose?l[u.TILDELOOSE]:l[u.TILDE];return t.replace(n,(r,n,i,a,s)=>{let l;return o("tilde",t,r,n,i,a,s),_(n)?l="":_(i)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:_(a)?l=`>=${n}.${i}.0 <${n}.${+i+1}.0-0`:s?(o("replaceTilde pr",s),l=`>=${n}.${i}.${a}-${s} <${n}.${+i+1}.0-0`):l=`>=${n}.${i}.${a} <${n}.${+i+1}.0-0`,o("tilde return",l),l})},w=(t,r)=>t.trim().split(/\s+/).map(t=>x(t,r)).join(" "),x=(t,r)=>{o("caret",t,r);let n=r.loose?l[u.CARETLOOSE]:l[u.CARET],i=r.includePrerelease?"-0":"";return t.replace(n,(r,n,a,s,l)=>{let u;return o("caret",t,r,n,a,s,l),_(n)?u="":_(a)?u=`>=${n}.0.0${i} <${+n+1}.0.0-0`:_(s)?u="0"===n?`>=${n}.${a}.0${i} <${n}.${+a+1}.0-0`:`>=${n}.${a}.0${i} <${+n+1}.0.0-0`:l?(o("replaceCaret pr",l),u="0"===n?"0"===a?`>=${n}.${a}.${s}-${l} <${n}.${a}.${+s+1}-0`:`>=${n}.${a}.${s}-${l} <${n}.${+a+1}.0-0`:`>=${n}.${a}.${s}-${l} <${+n+1}.0.0-0`):(o("no pr"),u="0"===n?"0"===a?`>=${n}.${a}.${s}${i} <${n}.${a}.${+s+1}-0`:`>=${n}.${a}.${s}${i} <${n}.${+a+1}.0-0`:`>=${n}.${a}.${s} <${+n+1}.0.0-0`),o("caret return",u),u})},E=(t,r)=>(o("replaceXRanges",t,r),t.split(/\s+/).map(t=>S(t,r)).join(" ")),S=(t,r)=>{t=t.trim();let n=r.loose?l[u.XRANGELOOSE]:l[u.XRANGE];return t.replace(n,(n,i,a,s,l,u)=>{o("xRange",t,n,i,a,s,l,u);let d=_(a),c=d||_(s),h=c||_(l),f=h;return"="===i&&f&&(i=""),u=r.includePrerelease?"-0":"",d?n=">"===i||"<"===i?"<0.0.0-0":"*":i&&f?(c&&(s=0),l=0,">"===i?(i=">=",c?(a=+a+1,s=0):s=+s+1,l=0):"<="===i&&(i="<",c?a=+a+1:s=+s+1),"<"===i&&(u="-0"),n=`${i+a}.${s}.${l}${u}`):c?n=`>=${a}.0.0${u} <${+a+1}.0.0-0`:h&&(n=`>=${a}.${s}.0${u} <${a}.${+s+1}.0-0`),o("xRange return",n),n})},C=(t,r)=>(o("replaceStars",t,r),t.trim().replace(l[u.STAR],"")),I=(t,r)=>(o("replaceGTE0",t,r),t.trim().replace(l[r.includePrerelease?u.GTE0PRE:u.GTE0],"")),T=t=>(r,n,i,a,o,s,l,u,d,c,h,f,p)=>`${n=_(i)?"":_(a)?`>=${i}.0.0${t?"-0":""}`:_(o)?`>=${i}.${a}.0${t?"-0":""}`:s?`>=${n}`:`>=${n}${t?"-0":""}`} ${u=_(d)?"":_(c)?`<${+d+1}.0.0-0`:_(h)?`<${d}.${+c+1}.0-0`:f?`<=${d}.${c}.${h}-${f}`:t?`<${d}.${c}.${+h+1}-0`:`<=${u}`}`.trim(),k=(t,r,n)=>{for(let n=0;n<t.length;n++)if(!t[n].test(r))return!1;if(r.prerelease.length&&!n.includePrerelease){for(let n=0;n<t.length;n++)if(o(t[n].semver),t[n].semver!==a.ANY&&t[n].semver.prerelease.length>0){let i=t[n].semver;if(i.major===r.major&&i.minor===r.minor&&i.patch===r.patch)return!0}return!1}return!0}}}),require_comparator2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/classes/comparator.js"(t,r){init_globals();var n=Symbol("SemVer ANY");r.exports=class t{static get ANY(){return n}constructor(r,a){if(a=i(a),r instanceof t){if(!!a.loose===r.loose)return r;r=r.value}l("comparator",r=r.trim().split(/\s+/).join(" "),a),this.options=a,this.loose=!!a.loose,this.parse(r),this.semver===n?this.value="":this.value=this.operator+this.semver.version,l("comp",this)}parse(t){let r=this.options.loose?a[o.COMPARATORLOOSE]:a[o.COMPARATOR],i=t.match(r);if(!i)throw TypeError(`Invalid comparator: ${t}`);this.operator=void 0!==i[1]?i[1]:"","="===this.operator&&(this.operator=""),i[2]?this.semver=new u(i[2],this.options.loose):this.semver=n}toString(){return this.value}test(t){if(l("Comparator.test",t,this.options.loose),this.semver===n||t===n)return!0;if("string"==typeof t)try{t=new u(t,this.options)}catch(t){return!1}return s(t,this.operator,this.semver,this.options)}intersects(r,n){if(!(r instanceof t))throw TypeError("a Comparator is required");return""===this.operator?""===this.value||new d(r.value,n).test(this.value):""===r.operator?""===r.value||new d(this.value,n).test(r.semver):(!(n=i(n)).includePrerelease||"<0.0.0-0"!==this.value&&"<0.0.0-0"!==r.value)&&!(!n.includePrerelease&&(this.value.startsWith("<0.0.0")||r.value.startsWith("<0.0.0")))&&(!(!this.operator.startsWith(">")||!r.operator.startsWith(">"))||!(!this.operator.startsWith("<")||!r.operator.startsWith("<"))||!(this.semver.version!==r.semver.version||!this.operator.includes("=")||!r.operator.includes("="))||!!(s(this.semver,"<",r.semver,n)&&this.operator.startsWith(">")&&r.operator.startsWith("<"))||!!(s(this.semver,">",r.semver,n)&&this.operator.startsWith("<")&&r.operator.startsWith(">")))}};var i=require_parse_options2(),{safeRe:a,t:o}=require_re2(),s=require_cmp2(),l=require_debug2(),u=require_semver3(),d=require_range3()}}),require_satisfies2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/satisfies.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r,i)=>{try{r=new n(r,i)}catch(t){return!1}return r.test(t)}}}),require_to_comparators2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/to-comparators.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r)=>new n(t,r).set.map(t=>t.map(t=>t.value).join(" ").trim().split(" "))}}),require_max_satisfying2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/max-satisfying.js"(t,r){init_globals();var n=require_semver3(),i=require_range3();r.exports=(t,r,a)=>{let o=null,s=null,l=null;try{l=new i(r,a)}catch(t){return null}return t.forEach(t=>{l.test(t)&&(o&&-1!==s.compare(t)||(s=new n(o=t,a)))}),o}}}),require_min_satisfying2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/min-satisfying.js"(t,r){init_globals();var n=require_semver3(),i=require_range3();r.exports=(t,r,a)=>{let o=null,s=null,l=null;try{l=new i(r,a)}catch(t){return null}return t.forEach(t=>{l.test(t)&&(o&&1!==s.compare(t)||(s=new n(o=t,a)))}),o}}}),require_min_version2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/min-version.js"(t,r){init_globals();var n=require_semver3(),i=require_range3(),a=require_gt2();r.exports=(t,r)=>{t=new i(t,r);let o=new n("0.0.0");if(t.test(o)||(o=new n("0.0.0-0"),t.test(o)))return o;o=null;for(let r=0;r<t.set.length;++r){let i=t.set[r],s=null;i.forEach(t=>{let r=new n(t.semver.version);switch(t.operator){case">":0===r.prerelease.length?r.patch++:r.prerelease.push(0),r.raw=r.format();case"":case">=":s&&!a(r,s)||(s=r);break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${t.operator}`)}}),s&&(!o||a(o,s))&&(o=s)}return o&&t.test(o)?o:null}}}),require_valid4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/valid.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r)=>{try{return new n(t,r).range||"*"}catch(t){return null}}}}),require_outside2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/outside.js"(t,r){init_globals();var n=require_semver3(),i=require_comparator2(),{ANY:a}=i,o=require_range3(),s=require_satisfies2(),l=require_gt2(),u=require_lt2(),d=require_lte2(),c=require_gte2();r.exports=(t,r,h,f)=>{let p,m,g,b,y;switch(t=new n(t,f),r=new o(r,f),h){case">":p=l,m=d,g=u,b=">",y=">=";break;case"<":p=u,m=c,g=l,b="<",y="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(s(t,r,f))return!1;for(let n=0;n<r.set.length;++n){let o=r.set[n],s=null,l=null;if(o.forEach(t=>{t.semver===a&&(t=new i(">=0.0.0")),s=s||t,l=l||t,p(t.semver,s.semver,f)?s=t:g(t.semver,l.semver,f)&&(l=t)}),s.operator===b||s.operator===y||(!l.operator||l.operator===b)&&m(t,l.semver)||l.operator===y&&g(t,l.semver))return!1}return!0}}}),require_gtr2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/gtr.js"(t,r){init_globals();var n=require_outside2();r.exports=(t,r,i)=>n(t,r,">",i)}}),require_ltr2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/ltr.js"(t,r){init_globals();var n=require_outside2();r.exports=(t,r,i)=>n(t,r,"<",i)}}),require_intersects2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/intersects.js"(t,r){init_globals();var n=require_range3();r.exports=(t,r,i)=>(t=new n(t,i),r=new n(r,i),t.intersects(r,i))}}),require_simplify3=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/simplify.js"(t,r){init_globals();var n=require_satisfies2(),i=require_compare2();r.exports=(t,r,a)=>{let o=[],s=null,l=null,u=t.sort((t,r)=>i(t,r,a));for(let t of u)n(t,r,a)?(l=t,s||(s=t)):(l&&o.push([s,l]),l=null,s=null);s&&o.push([s,null]);let d=[];for(let[t,r]of o)t===r?d.push(t):r||t!==u[0]?r?t===u[0]?d.push(`<=${r}`):d.push(`${t} - ${r}`):d.push(`>=${t}`):d.push("*");let c=d.join(" || "),h="string"==typeof r.raw?r.raw:String(r);return c.length<h.length?c:r}}}),require_subset2=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/ranges/subset.js"(t,r){init_globals();var n=require_range3(),i=require_comparator2(),{ANY:a}=i,o=require_satisfies2(),s=require_compare2(),l=[new i(">=0.0.0-0")],u=[new i(">=0.0.0")],d=(t,r,n)=>{let i,d,f,p,m,g,b;if(t===r)return!0;if(1===t.length&&t[0].semver===a){if(1===r.length&&r[0].semver===a)return!0;t=n.includePrerelease?l:u}if(1===r.length&&r[0].semver===a){if(n.includePrerelease)return!0;r=u}let y=new Set;for(let r of t)">"===r.operator||">="===r.operator?i=c(i,r,n):"<"===r.operator||"<="===r.operator?d=h(d,r,n):y.add(r.semver);if(y.size>1||i&&d&&((f=s(i.semver,d.semver,n))>0||0===f&&(">="!==i.operator||"<="!==d.operator)))return null;for(let t of y){if(i&&!o(t,String(i),n)||d&&!o(t,String(d),n))return null;for(let i of r)if(!o(t,String(i),n))return!1;return!0}let _=!(!d||n.includePrerelease||!d.semver.prerelease.length)&&d.semver,v=!(!i||n.includePrerelease||!i.semver.prerelease.length)&&i.semver;for(let t of(_&&1===_.prerelease.length&&"<"===d.operator&&0===_.prerelease[0]&&(_=!1),r)){if(b=b||">"===t.operator||">="===t.operator,g=g||"<"===t.operator||"<="===t.operator,i){if(v&&t.semver.prerelease&&t.semver.prerelease.length&&t.semver.major===v.major&&t.semver.minor===v.minor&&t.semver.patch===v.patch&&(v=!1),">"===t.operator||">="===t.operator){if((p=c(i,t,n))===t&&p!==i)return!1}else if(">="===i.operator&&!o(i.semver,String(t),n))return!1}if(d){if(_&&t.semver.prerelease&&t.semver.prerelease.length&&t.semver.major===_.major&&t.semver.minor===_.minor&&t.semver.patch===_.patch&&(_=!1),"<"===t.operator||"<="===t.operator){if((m=h(d,t,n))===t&&m!==d)return!1}else if("<="===d.operator&&!o(d.semver,String(t),n))return!1}if(!t.operator&&(d||i)&&0!==f)return!1}return!(i&&g&&!d&&0!==f)&&!(d&&b&&!i&&0!==f)&&!v&&!_},c=(t,r,n)=>{if(!t)return r;let i=s(t.semver,r.semver,n);return i>0?t:i<0||">"===r.operator&&">="===t.operator?r:t},h=(t,r,n)=>{if(!t)return r;let i=s(t.semver,r.semver,n);return i<0?t:i>0||"<"===r.operator&&"<="===t.operator?r:t};r.exports=(t,r,i={})=>{if(t===r)return!0;t=new n(t,i),r=new n(r,i);let a=!1;e:for(let n of t.set){for(let t of r.set){let r=d(n,t,i);if(a=a||null!==r,r)continue e}if(a)return!1}return!0}}}),require_semver4=__commonJS({"../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/index.js"(t,r){init_globals();var n=require_re2(),i=require_constants11(),a=require_semver3(),o=require_identifiers2();r.exports={parse:require_parse4(),valid:require_valid3(),clean:require_clean2(),inc:require_inc2(),diff:require_diff2(),major:require_major2(),minor:require_minor2(),patch:require_patch2(),prerelease:require_prerelease2(),compare:require_compare2(),rcompare:require_rcompare2(),compareLoose:require_compare_loose2(),compareBuild:require_compare_build2(),sort:require_sort2(),rsort:require_rsort2(),gt:require_gt2(),lt:require_lt2(),eq:require_eq2(),neq:require_neq2(),gte:require_gte2(),lte:require_lte2(),cmp:require_cmp2(),coerce:require_coerce2(),Comparator:require_comparator2(),Range:require_range3(),satisfies:require_satisfies2(),toComparators:require_to_comparators2(),maxSatisfying:require_max_satisfying2(),minSatisfying:require_min_satisfying2(),minVersion:require_min_version2(),validRange:require_valid4(),outside:require_outside2(),gtr:require_gtr2(),ltr:require_ltr2(),intersects:require_intersects2(),simplifyRange:require_simplify3(),subset:require_subset2(),SemVer:a,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:i.SEMVER_SPEC_VERSION,RELEASE_TYPES:i.RELEASE_TYPES,compareIdentifiers:o.compareIdentifiers,rcompareIdentifiers:o.rcompareIdentifiers}}}),require_lib7=__commonJS({"../core/dist/lib/index.js"(t){function r(t){let r,n=t[0],i=1;for(;i<t.length;){let a=t[i],o=t[i+1];if(i+=2,("optionalAccess"===a||"optionalCall"===a)&&null==n)return;"access"===a||"optionalAccess"===a?(r=n,n=o(n)):"call"!==a&&"optionalCall"!==a||(n=o((...t)=>n.call(r,...t)),r=void 0)}return n}init_globals(),Object.defineProperty(t,"__esModule",{value:!0});var n=require_chunk_4CBFCRNS(),i=require_chunk_I5LBWOQA(),a=require_env(),o=require_utils5(),s=require_img();function l(t,i){let s={sdkVersion:n.getVersion.call(void 0),logTime:Date.now(),model_name:a.getAIConfig.call(void 0,a.MIDSCENE_MODEL_NAME)||""},l={logId:o.uuid.call(void 0),...s,...t};r([i,"optionalCall",t=>t(l)])}var u=require_logger().getDebug.call(void 0,"ai:insight"),d=class{constructor(t,n){this.aiVendorFn=i.callAiFn,o.assert.call(void 0,t,"context is required for Insight"),this.contextRetrieverFn="function"==typeof t?t:()=>Promise.resolve(t),void 0!==r([n,"optionalAccess",t=>t.aiVendorFn])&&(this.aiVendorFn=n.aiVendorFn),void 0!==r([n,"optionalAccess",t=>t.taskInfo])&&(this.taskInfo=n.taskInfo)}async locate(t,n){let s,d,c,h,f,p,{callAI:m}=n||{},g="string"==typeof t?t:t.prompt;o.assert.call(void 0,g,"query is required for locate");let b=this.onceDumpUpdatedFn;this.onceDumpUpdatedFn=void 0,o.assert.call(void 0,"object"==typeof t,"query should be an object for locate");let y=a.getAIConfigInBoolean.call(void 0,a.MIDSCENE_FORCE_DEEP_THINK);y&&u("globalDeepThinkSwitch",y),(t.deepThink||y)&&(s=t.prompt),s&&!a.vlLocateMode.call(void 0)&&(import_console_browserify.default.warn('The "deepThink" feature is not supported with multimodal LLM. Please config VL model for Midscene. https://midscenejs.com/choose-a-model'),s=void 0);let _=r([n,"optionalAccess",t=>t.context])||await this.contextRetrieverFn("locate");s&&(f=await i.AiLocateSection.call(void 0,{context:_,sectionDescription:s}),o.assert.call(void 0,f.rect,`cannot find search area for "${s}"${f.error?`: ${f.error}`:""}`),c=f.rawResponse,h=f.usage,d=f.rect);let v=Date.now(),{parseResult:A,rect:w,elementById:x,rawResponse:E,usage:S,isOrderSensitive:C}=await i.AiLocateElement.call(void 0,{callAI:m||this.aiVendorFn,context:_,targetElementDescription:g,searchConfig:f}),I=Date.now()-v,T={...this.taskInfo?this.taskInfo:{},durationMs:I,rawResponse:JSON.stringify(E),formatResponse:JSON.stringify(A),usage:S,searchArea:d,searchAreaRawResponse:c,searchAreaUsage:h};r([A,"access",t=>t.errors,"optionalAccess",t=>t.length])&&(p=`AI model failed to locate:
|
|
732
732
|
${A.errors.join("\n")}`);let k={type:"locate",userQuery:{element:g},matchedElement:[],matchedRect:w,data:null,taskInfo:T,deepThink:!!d,error:p},P=[];if((A.elements||[]).forEach(t=>{if("id"in t){let n=x(r([t,"optionalAccess",t=>t.id]));if(!n)return void import_console_browserify.default.warn(`locate: cannot find element id=${t.id}. Maybe an unstable response from AI model`);P.push(n)}}),l({...k,matchedElement:P},b),p)throw Error(p);return o.assert.call(void 0,P.length<=1,`locate: multiple elements found, length = ${P.length}`),1===P.length?{element:{id:P[0].id,indexId:P[0].indexId,center:P[0].center,rect:P[0].rect,xpaths:P[0].xpaths||[],attributes:P[0].attributes,isOrderSensitive:C},rect:w}:{element:null,rect:w}}async extract(t,n,a){let s;o.assert.call(void 0,"object"==typeof t||"string"==typeof t,"dataDemand should be object or string, but get "+typeof t);let u=this.onceDumpUpdatedFn;this.onceDumpUpdatedFn=void 0;let d=await this.contextRetrieverFn("extract"),c=Date.now(),{parseResult:h,usage:f}=await i.AiExtractElementInfo.call(void 0,{context:d,dataQuery:t,multimodalPrompt:a,extractOption:n}),p=Date.now()-c,m={...this.taskInfo?this.taskInfo:{},durationMs:p,rawResponse:JSON.stringify(h)};r([h,"access",t=>t.errors,"optionalAccess",t=>t.length])&&(s=`AI response error:
|
|
733
733
|
${h.errors.join("\n")}`);let{data:g,thought:b}=h||{};if(l({type:"extract",userQuery:{dataDemand:t},matchedElement:[],data:null,taskInfo:m,error:s,data:g},u),s&&!g)throw Error(s);return{data:g,thought:b,usage:f}}async assert(t){let r=this.onceDumpUpdatedFn;this.onceDumpUpdatedFn=void 0;let n=await this.contextRetrieverFn("assert"),a=Date.now(),o=await i.AiAssert.call(void 0,{assertion:t,context:n}),s=Date.now()-a,u={...this.taskInfo?this.taskInfo:{},durationMs:s,rawResponse:JSON.stringify(o.content)},{thought:d,pass:c}=o.content;return l({type:"assert",userQuery:{assertion:t},matchedElement:[],data:null,taskInfo:u,assertionPass:c,assertionThought:d,error:c?void 0:d},r),{pass:c,thought:d,usage:o.usage}}async describe(t,n){o.assert.call(void 0,t,"target is required for insight.describe");let l=await this.contextRetrieverFn("describe"),{screenshotBase64:d,size:c}=l;o.assert.call(void 0,d,"screenshot is required for insight.describe");let h=`
|
|
734
734
|
Describe the element in the red rectangle for precise identification. Use ${a.getPreferredLanguage.call(void 0)}.
|
|
@@ -771,7 +771,7 @@ Return JSON:
|
|
|
771
771
|
"error"?: "error message if any"
|
|
772
772
|
}`,f=Array.isArray(t)?{left:Math.floor(t[0]-15),top:Math.floor(t[1]-15),width:30,height:30}:t,p=await s.compositeElementInfoImg.call(void 0,{inputImgBase64:d,size:c,elementsPositionInfo:[{rect:f}],borderThickness:3});if(r([n,"optionalAccess",t=>t.deepThink])){let t=i.expandSearchArea.call(void 0,f,l.size);u("describe: set searchArea",t),p=await s.cropByRect.call(void 0,p,t,a.getAIConfigInBoolean.call(void 0,a.MIDSCENE_USE_QWEN_VL))}let m=[{role:"system",content:h},{role:"user",content:[{type:"image_url",image_url:{url:p,detail:"high"}}]}],g=this.aiVendorFn||i.callToGetJSONObject,{content:b}=await g(m,4);return o.assert.call(void 0,!b.error,`describe failed: ${b.error}`),o.assert.call(void 0,b.description,"failed to describe the element"),b}},c=d;t.AiAssert=i.AiAssert,t.AiLocateElement=i.AiLocateElement,t.Executor=class{constructor(t,n){this.status=r([n,"optionalAccess",t=>t.tasks])&&n.tasks.length>0?"pending":"init",this.name=t,this.tasks=(r([n,"optionalAccess",t=>t.tasks])||[]).map(t=>this.markTaskAsPending(t)),this.onTaskStart=r([n,"optionalAccess",t=>t.onTaskStart])}markTaskAsPending(t){return{status:"pending",...t}}async append(t){o.assert.call(void 0,"error"!==this.status,`executor is in error state, cannot append task
|
|
773
773
|
error=${r([this,"access",t=>t.latestErrorTask,"call",t=>t(),"optionalAccess",t=>t.error])}
|
|
774
|
-
${r([this,"access",t=>t.latestErrorTask,"call",t=>t(),"optionalAccess",t=>t.errorStack])}`),Array.isArray(t)?this.tasks.push(...t.map(t=>this.markTaskAsPending(t))):this.tasks.push(this.markTaskAsPending(t)),"running"!==this.status&&(this.status="pending")}async flush(){"init"===this.status&&this.tasks.length>0&&import_console_browserify.default.warn("illegal state for executor, status is init but tasks are not empty"),o.assert.call(void 0,"running"!==this.status,"executor is already running"),o.assert.call(void 0,"completed"!==this.status,"executor is already completed"),o.assert.call(void 0,"error"!==this.status,"executor is in error state");let t=this.tasks.findIndex(t=>"pending"===t.status);if(t<0)return;this.status="running";let n,i=t,a=!0;for(;i<this.tasks.length;){let t=this.tasks[i];o.assert.call(void 0,"pending"===t.status,`task status should be pending, but got: ${t.status}`),t.timing={start:Date.now()};try{let a;t.status="running";try{this.onTaskStart&&await this.onTaskStart(t)}catch(t){import_console_browserify.default.error("error in onTaskStart",t)}o.assert.call(void 0,["Insight","Action","Planning"].indexOf(t.type)>=0,`unsupported task type: ${t.type}`);let{executor:s,param:l}=t;o.assert.call(void 0,s,`executor is required for task type: ${t.type}`);let u={task:t,element:r([n,"optionalAccess",t=>t.element])};"Insight"===t.type?(o.assert.call(void 0,"Locate"===t.subType||"Query"===t.subType||"Assert"===t.subType||"Boolean"===t.subType||"Number"===t.subType||"String"===t.subType,`unsupported insight subType: ${t.subType}`),a=await t.executor(l,u),"Locate"===t.subType&&(n=r([a,"optionalAccess",t=>t.output]))):("Action"===t.type||"Planning"===t.type||import_console_browserify.default.warn(`unsupported task type: ${t.type}, will try to execute it directly`),a=await t.executor(l,u)),Object.assign(t,a),t.status="finished",t.timing.end=Date.now(),t.timing.cost=t.timing.end-t.timing.start,i++}catch(n){a=!1,t.error=n,t.errorMessage=r([n,"optionalAccess",t=>t.message])||("string"==typeof n?n:"error-without-message"),t.errorStack=n.stack,t.status="failed",t.timing.end=Date.now(),t.timing.cost=t.timing.end-t.timing.start;break}}for(let t=i+1;t<this.tasks.length;t++)this.tasks[t].status="cancelled";if(this.status=a?"completed":"error",this.tasks.length){let t=Math.min(i,this.tasks.length-1),{thought:r,output:n}=this.tasks[t];return{thought:r,output:n}}}isInErrorState(){return"error"===this.status}latestErrorTask(){if("error"!==this.status)return null;let t=this.tasks.findIndex(t=>"failed"===t.status);return t>=0?this.tasks[t]:null}dump(){let t="";if(a.vlLocateMode.call(void 0)){let r=a.uiTarsModelVersion.call(void 0);t=r?`UI-TARS=${r}`:`${a.vlLocateMode.call(void 0)} mode`}return{sdkVersion:n.getVersion.call(void 0),model_name:a.getAIConfig.call(void 0,a.MIDSCENE_MODEL_NAME)||"",model_description:t,logTime:Date.now(),name:this.name,tasks:this.tasks}}},t.Insight=d,t.MIDSCENE_MODEL_NAME=a.MIDSCENE_MODEL_NAME,t.default=c,t.describeUserPage=i.describeUserPage,t.getAIConfig=a.getAIConfig,t.getVersion=n.getVersion,t.plan=i.plan}}),require_playground=__commonJS({"../web-integration/dist/lib/playground.js"(t,r){init_globals();var n,i=Object.create,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,l=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,d=(t,r,n,i)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let l of s(r))u.call(t,l)||l===n||a(t,l,{get:()=>r[l],enumerable:!(i=o(r,l))||i.enumerable});return t},c=(t,r,n)=>(n=null!=t?i(l(t)):{},d(!r&&t&&t.__esModule?n:a(n,"default",{value:t,enumerable:!0}),t)),h={};((t,r)=>{for(var n in r)a(t,n,{get:r[n],enumerable:!0})})(h,{ERROR_CODE_NOT_IMPLEMENTED_AS_DESIGNED:()=>U,StaticPage:()=>eS,StaticPageAgent:()=>ex}),n=h,r.exports=d(a({},"__esModule",{value:!0}),n);var f=require_ai_model(),p=require_utils12(),m=require_env(),g=require_extractor(),b=require_img(),y=require_logger(),_=require_utils5(),v=c(require_dayjs_min()),A=class{constructor({content:t,rect:r,id:n,attributes:i,indexId:a,xpaths:o,isVisible:s}){this.content=t,this.rect=r,this.center=[Math.floor(r.left+r.width/2),Math.floor(r.top+r.height/2)],this.id=n,this.attributes=i,this.indexId=a,this.xpaths=o,this.isVisible=s}},w=c(require_assert()),x=require_fs(),E=require_path_browserify(),S=require_util(),C=require_common6(),I=require_env(),T=require_logger(),k=require_utils5(),P=require_utils5(),R=c(require_js_yaml()),O=c(require_semver4()),M="0.26.
|
|
774
|
+
${r([this,"access",t=>t.latestErrorTask,"call",t=>t(),"optionalAccess",t=>t.errorStack])}`),Array.isArray(t)?this.tasks.push(...t.map(t=>this.markTaskAsPending(t))):this.tasks.push(this.markTaskAsPending(t)),"running"!==this.status&&(this.status="pending")}async flush(){"init"===this.status&&this.tasks.length>0&&import_console_browserify.default.warn("illegal state for executor, status is init but tasks are not empty"),o.assert.call(void 0,"running"!==this.status,"executor is already running"),o.assert.call(void 0,"completed"!==this.status,"executor is already completed"),o.assert.call(void 0,"error"!==this.status,"executor is in error state");let t=this.tasks.findIndex(t=>"pending"===t.status);if(t<0)return;this.status="running";let n,i=t,a=!0;for(;i<this.tasks.length;){let t=this.tasks[i];o.assert.call(void 0,"pending"===t.status,`task status should be pending, but got: ${t.status}`),t.timing={start:Date.now()};try{let a;t.status="running";try{this.onTaskStart&&await this.onTaskStart(t)}catch(t){import_console_browserify.default.error("error in onTaskStart",t)}o.assert.call(void 0,["Insight","Action","Planning"].indexOf(t.type)>=0,`unsupported task type: ${t.type}`);let{executor:s,param:l}=t;o.assert.call(void 0,s,`executor is required for task type: ${t.type}`);let u={task:t,element:r([n,"optionalAccess",t=>t.element])};"Insight"===t.type?(o.assert.call(void 0,"Locate"===t.subType||"Query"===t.subType||"Assert"===t.subType||"Boolean"===t.subType||"Number"===t.subType||"String"===t.subType,`unsupported insight subType: ${t.subType}`),a=await t.executor(l,u),"Locate"===t.subType&&(n=r([a,"optionalAccess",t=>t.output]))):("Action"===t.type||"Planning"===t.type||import_console_browserify.default.warn(`unsupported task type: ${t.type}, will try to execute it directly`),a=await t.executor(l,u)),Object.assign(t,a),t.status="finished",t.timing.end=Date.now(),t.timing.cost=t.timing.end-t.timing.start,i++}catch(n){a=!1,t.error=n,t.errorMessage=r([n,"optionalAccess",t=>t.message])||("string"==typeof n?n:"error-without-message"),t.errorStack=n.stack,t.status="failed",t.timing.end=Date.now(),t.timing.cost=t.timing.end-t.timing.start;break}}for(let t=i+1;t<this.tasks.length;t++)this.tasks[t].status="cancelled";if(this.status=a?"completed":"error",this.tasks.length){let t=Math.min(i,this.tasks.length-1),{thought:r,output:n}=this.tasks[t];return{thought:r,output:n}}}isInErrorState(){return"error"===this.status}latestErrorTask(){if("error"!==this.status)return null;let t=this.tasks.findIndex(t=>"failed"===t.status);return t>=0?this.tasks[t]:null}dump(){let t="";if(a.vlLocateMode.call(void 0)){let r=a.uiTarsModelVersion.call(void 0);t=r?`UI-TARS=${r}`:`${a.vlLocateMode.call(void 0)} mode`}return{sdkVersion:n.getVersion.call(void 0),model_name:a.getAIConfig.call(void 0,a.MIDSCENE_MODEL_NAME)||"",model_description:t,logTime:Date.now(),name:this.name,tasks:this.tasks}}},t.Insight=d,t.MIDSCENE_MODEL_NAME=a.MIDSCENE_MODEL_NAME,t.default=c,t.describeUserPage=i.describeUserPage,t.getAIConfig=a.getAIConfig,t.getVersion=n.getVersion,t.plan=i.plan}}),require_playground=__commonJS({"../web-integration/dist/lib/playground.js"(t,r){init_globals();var n,i=Object.create,a=Object.defineProperty,o=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,l=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,d=(t,r,n,i)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let l of s(r))u.call(t,l)||l===n||a(t,l,{get:()=>r[l],enumerable:!(i=o(r,l))||i.enumerable});return t},c=(t,r,n)=>(n=null!=t?i(l(t)):{},d(!r&&t&&t.__esModule?n:a(n,"default",{value:t,enumerable:!0}),t)),h={};((t,r)=>{for(var n in r)a(t,n,{get:r[n],enumerable:!0})})(h,{ERROR_CODE_NOT_IMPLEMENTED_AS_DESIGNED:()=>U,StaticPage:()=>eS,StaticPageAgent:()=>ex}),n=h,r.exports=d(a({},"__esModule",{value:!0}),n);var f=require_ai_model(),p=require_utils12(),m=require_env(),g=require_extractor(),b=require_img(),y=require_logger(),_=require_utils5(),v=c(require_dayjs_min()),A=class{constructor({content:t,rect:r,id:n,attributes:i,indexId:a,xpaths:o,isVisible:s}){this.content=t,this.rect=r,this.center=[Math.floor(r.left+r.width/2),Math.floor(r.top+r.height/2)],this.id=n,this.attributes=i,this.indexId=a,this.xpaths=o,this.isVisible=s}},w=c(require_assert()),x=require_fs(),E=require_path_browserify(),S=require_util(),C=require_common6(),I=require_env(),T=require_logger(),k=require_utils5(),P=require_utils5(),R=c(require_js_yaml()),O=c(require_semver4()),M="0.26.1",j=(0,T.getDebug)("cache"),N=".cache.yaml",B=class{constructor(t,r,n){let i;this.matchedCacheIndices=new Set,(0,w.default)(t,"cacheId is required");let a=t.replace(/[:*?"<>| ]/g,"-"),o=(0,I.getAIConfigInNumber)(I.MIDSCENE_CACHE_MAX_FILENAME_LENGTH)||200;if(Buffer.byteLength(a,"utf8")>o){let t=a.slice(0,32);a=`${t}-${(0,P.generateHashId)(void 0,a)}`}this.cacheId=a,this.cacheFilePath=k.ifInBrowser||k.ifInWorker?void 0:n||(0,E.join)((0,C.getMidsceneRunSubDir)("cache"),`${this.cacheId}${N}`),this.isCacheResultUsed=r,this.cacheFilePath&&(i=this.loadCacheFromFile()),i||(i={midsceneVersion:M,cacheId:this.cacheId,caches:[]}),this.cache=i,this.cacheOriginalLength=this.cache.caches.length}matchCache(t,r){for(let n=0;n<this.cacheOriginalLength;n++){let i=this.cache.caches[n],a="string"==typeof t?t:JSON.stringify(t),o=`${r}:${a}:${n}`;if(i.type===r&&(0,S.isDeepStrictEqual)(i.prompt,t)&&!this.matchedCacheIndices.has(o))return this.matchedCacheIndices.add(o),j("cache found and marked as used, type: %s, prompt: %s, index: %d",r,t,n),{cacheContent:i,updateFn:a=>{j("will call updateFn to update cache, type: %s, prompt: %s, index: %d",r,t,n),a(i),j("cache updated, will flush to file, type: %s, prompt: %s, index: %d",r,t,n),this.flushCacheToFile()}}}j("no unused cache found, type: %s, prompt: %s",r,t)}matchPlanCache(t){return this.matchCache(t,"plan")}matchLocateCache(t){return this.matchCache(t,"locate")}appendCache(t){j("will append cache",t),this.cache.caches.push(t),this.flushCacheToFile()}loadCacheFromFile(){let t=this.cacheFilePath;if((0,w.default)(t,"cache file path is required"),!(0,x.existsSync)(t))return void j("no cache file found, path: %s",t);let r=t.replace(N,".json");if((0,x.existsSync)(r)&&this.isCacheResultUsed)import_console_browserify.default.warn(`An outdated cache file from an earlier version of Midscene has been detected. Since version 0.17, we have implemented an improved caching strategy. Please delete the old file located at: ${r}.`);else try{let r=(0,x.readFileSync)(t,"utf8"),n=R.default.load(r);return O.default.lt(n.midsceneVersion,"0.16.10")&&!n.midsceneVersion.includes("beta")?void import_console_browserify.default.warn(`You are using an old version of Midscene cache file, and we cannot match any info from it. Starting from Midscene v0.17, we changed our strategy to use xpath for cache info, providing better performance.
|
|
775
775
|
Please delete the existing cache and rebuild it. Sorry for the inconvenience.
|
|
776
776
|
cache file: ${t}`):(j("cache loaded from file, path: %s, cache version: %s, record length: %s",t,n.midsceneVersion,n.caches.length),n.midsceneVersion=M,n)}catch(r){return void j("cache file exists but load failed, path: %s, error: %s",t,r)}}flushCacheToFile(){if(this.cacheFilePath)try{let t=(0,E.dirname)(this.cacheFilePath);(0,x.existsSync)(t)||((0,x.mkdirSync)(t,{recursive:!0}),j("created cache directory: %s",t));let r=[...this.cache.caches].sort((t,r)=>"plan"===t.type&&"locate"===r.type?-1:+("locate"===t.type&&"plan"===r.type)),n={...this.cache,caches:r},i=R.default.dump(n);(0,x.writeFileSync)(this.cacheFilePath,i),j("cache flushed to file: %s",this.cacheFilePath)}catch(t){j("write cache to file failed, path: %s, error: %s",this.cacheFilePath,t)}else j("no cache file path, will not write cache to file")}updateOrAppendCacheRecord(t,r){r?"plan"===t.type?r.updateFn(r=>{r.yamlWorkflow=t.yamlWorkflow}):r.updateFn(r=>{r.xpaths=t.xpaths}):this.appendCache(t)}},L=(0,y.getDebug)("tool:profile");async function D(t,r){let n,i;if((0,_.assert)(t,"page is required"),t._forceUsePageContext)return await t._forceUsePageContext();L("Getting page URL");let a=await t.url();L("URL end"),L("Uploading test info to server"),(0,p.uploadTestInfoToServer)({testUrl:a}),L("UploadTestInfoToServer end"),L("Starting parallel operations: screenshot and element tree"),await Promise.all([t.screenshotBase64().then(t=>{n=t,L("ScreenshotBase64 end")}),t.getElementsNodeTree().then(async t=>{i=t,L("GetElementsNodeTree end")})]),L("ParseContextFromWebPage end"),L("Traversing element tree");let o=(0,g.traverseTree)(i,t=>{let{rect:r,id:n,content:i,attributes:a,indexId:o,isVisible:s}=t;return new A({rect:r,id:n,content:i,attributes:a,indexId:o,isVisible:s})});L("TraverseTree end"),(0,_.assert)(n,"screenshotBase64 is required");let s=await t.size();return L(`size: ${s.width}x${s.height} dpr: ${s.dpr}`),s.dpr&&s.dpr>1&&(L("Resizing screenshot for high DPR display"),n=await (0,b.resizeImgBase64)(n,{width:s.width,height:s.height}),L("ResizeImgBase64 end")),{tree:o,size:s,screenshotBase64:n,url:a}}var U="NOT_IMPLEMENTED_AS_DESIGNED",F=t=>"string"==typeof t?{textPrompt:t,multimodalPrompt:void 0}:{textPrompt:t.prompt,multimodalPrompt:t.images?{images:t.images,convertHttpImage2Base64:!!t.convertHttpImage2Base64}:void 0},z=require_lib7(),G=c(require_js_yaml()),H=require_fs(),q=require_path_browserify(),V=require_utils5(),W=require_common6(),$=class{constructor(t,r,n,i){if(this.script=t,this.setupAgent=r,this.onTaskStatusChange=n,this.taskStatusList=[],this.status="init",this.unnamedResultIndex=0,this.pageAgent=null,this.scriptPath=i,this.result={},this.target=t.target||t.web||t.android,V.ifInBrowser||V.ifInWorker)this.output=void 0;else if(this.target?.output)this.output=(0,q.resolve)(import_browser.default.cwd(),this.target.output);else{let t=this.scriptPath?(0,q.basename)(this.scriptPath,".yaml").replace(/\.(ya?ml)$/i,""):"script";this.output=(0,q.join)((0,W.getMidsceneRunSubDir)("output"),`${t}-${Date.now()}.json`)}V.ifInBrowser||V.ifInWorker?this.unstableLogContent=void 0:"string"==typeof this.target?.unstableLogContent?this.unstableLogContent=(0,q.resolve)(import_browser.default.cwd(),this.target.unstableLogContent):!0===this.target?.unstableLogContent&&(this.unstableLogContent=(0,q.join)((0,W.getMidsceneRunSubDir)("output"),"unstableLogContent.json")),this.taskStatusList=(t.tasks||[]).map((t,r)=>({...t,index:r,status:"init",totalSteps:t.flow?.length||0}))}setResult(t,r){let n=t||this.unnamedResultIndex++;return this.result[n]&&import_console_browserify.default.warn(`result key ${n} already exists, will overwrite`),this.result[n]=r,this.flushResult()}setPlayerStatus(t,r){this.status=t,this.errorInSetup=r}notifyCurrentTaskStatusChange(t){let r="number"==typeof t?t:this.currentTaskIndex;if("number"!=typeof r)return;let n=this.taskStatusList[r];this.onTaskStatusChange&&this.onTaskStatusChange(n)}async setTaskStatus(t,r,n){this.taskStatusList[t].status=r,n&&(this.taskStatusList[t].error=n),this.notifyCurrentTaskStatusChange(t)}setTaskIndex(t){this.currentTaskIndex=t}flushResult(){if(this.output){let t=(0,q.resolve)(import_browser.default.cwd(),this.output),r=(0,q.dirname)(t);(0,H.existsSync)(r)||(0,H.mkdirSync)(r,{recursive:!0}),(0,H.writeFileSync)(t,JSON.stringify(this.result||{},void 0,2))}}flushUnstableLogContent(){if(this.unstableLogContent){let t=this.pageAgent?._unstableLogContent(),r=(0,q.resolve)(import_browser.default.cwd(),this.unstableLogContent),n=(0,q.dirname)(r);(0,H.existsSync)(n)||(0,H.mkdirSync)(n,{recursive:!0}),(0,H.writeFileSync)(r,JSON.stringify(t,null,2))}}async playTask(t,r){let{flow:n}=t;for(let i in(0,V.assert)(n,"missing flow in task"),n){t.currentStep=Number.parseInt(i,10);let a=n[i];if("aiAction"in a||"ai"in a){let t=a,n=t.aiAction||t.ai;(0,V.assert)(n,"missing prompt for ai (aiAction)"),(0,V.assert)("string"==typeof n,"prompt for aiAction must be a string"),await r.aiAction(n,{cacheable:t.cacheable})}else if("aiAssert"in a){let t=a,n=t.aiAssert,i=t.errorMessage;(0,V.assert)(n,"missing prompt for aiAssert"),(0,V.assert)("string"==typeof n,"prompt for aiAssert must be a string"),await r.aiAssert(n,i)}else if("aiQuery"in a){let t=a,n=t.aiQuery,i={domIncluded:t.domIncluded,screenshotIncluded:t.screenshotIncluded};(0,V.assert)(n,"missing prompt for aiQuery"),(0,V.assert)("string"==typeof n,"prompt for aiQuery must be a string");let o=await r.aiQuery(n,i);this.setResult(t.name,o)}else if("aiNumber"in a){let t=a,n=t.aiNumber,i={domIncluded:t.domIncluded,screenshotIncluded:t.screenshotIncluded};(0,V.assert)(n,"missing prompt for aiNumber"),(0,V.assert)("string"==typeof n,"prompt for number must be a string");let o=await r.aiNumber(n,i);this.setResult(t.name,o)}else if("aiString"in a){let t=a,n=t.aiString,i={domIncluded:t.domIncluded,screenshotIncluded:t.screenshotIncluded};(0,V.assert)(n,"missing prompt for aiString"),(0,V.assert)("string"==typeof n,"prompt for string must be a string");let o=await r.aiString(n,i);this.setResult(t.name,o)}else if("aiBoolean"in a){let t=a,n=t.aiBoolean,i={domIncluded:t.domIncluded,screenshotIncluded:t.screenshotIncluded};(0,V.assert)(n,"missing prompt for aiBoolean"),(0,V.assert)("string"==typeof n,"prompt for boolean must be a string");let o=await r.aiBoolean(n,i);this.setResult(t.name,o)}else if("aiAsk"in a){let t=a,n=t.aiAsk;(0,V.assert)(n,"missing prompt for aiAsk"),(0,V.assert)("string"==typeof n,"prompt for aiAsk must be a string");let i=await r.aiAsk(n);this.setResult(t.name,i)}else if("aiLocate"in a){let t=a,n=t.aiLocate;(0,V.assert)(n,"missing prompt for aiLocate"),(0,V.assert)("string"==typeof n,"prompt for aiLocate must be a string");let i=await r.aiLocate(n,t);this.setResult(t.name,i)}else if("aiWaitFor"in a){let t=a,n=t.aiWaitFor;(0,V.assert)(n,"missing prompt for aiWaitFor"),(0,V.assert)("string"==typeof n,"prompt for aiWaitFor must be a string");let i=t.timeout;await r.aiWaitFor(n,{timeoutMs:i})}else if("sleep"in a){let t=a.sleep,r=t;"string"==typeof t&&(r=Number.parseInt(t,10)),(0,V.assert)(r&&r>0,`ms for sleep must be greater than 0, but got ${t}`),await new Promise(t=>setTimeout(t,r))}else if("aiTap"in a){let t=a;await r.aiTap(t.aiTap,t)}else if("aiRightClick"in a){let t=a;await r.aiRightClick(t.aiRightClick,t)}else if("aiHover"in a){let t=a;await r.aiHover(t.aiHover,t)}else if("aiInput"in a){let t=a;await r.aiInput(t.aiInput,t.locate,t)}else if("aiKeyboardPress"in a){let t=a;await r.aiKeyboardPress(t.aiKeyboardPress,t.locate,t)}else if("aiScroll"in a){let t=a;await r.aiScroll(t,t.locate,t)}else if("javascript"in a){let t=a,n=await r.evaluateJavaScript(t.javascript);this.setResult(t.name,n)}else{if(!("logScreenshot"in a))throw Error(`unknown flowItem: ${JSON.stringify(a)}`);{let t=a;await r.logScreenshot(t.logScreenshot,{content:t.content||""})}}}this.reportFile=r.reportFile,await this.flushUnstableLogContent()}async run(){let{target:t,web:r,android:n,tasks:i}=this.script,a=r||t||n;this.setPlayerStatus("running");let o=null,s=[];try{let{agent:t,freeFn:r}=await this.setupAgent(a),n=(o=t).onTaskStartTip;o.onTaskStartTip=t=>{"running"===this.status&&(this.agentStatusTip=t),n?.(t)},s=[...r||[],{name:"restore-agent-onTaskStartTip",fn:()=>{o&&(o.onTaskStartTip=n)}}]}catch(t){return void this.setPlayerStatus("error",t)}this.pageAgent=o;let l=0;this.setPlayerStatus("running");let u=!1;for(;l<i.length;){let t=this.taskStatusList[l];this.setTaskStatus(l,"running"),this.setTaskIndex(l);try{await this.playTask(t,this.pageAgent),this.setTaskStatus(l,"done")}catch(r){if(this.setTaskStatus(l,"error",r),!t.continueOnError){this.reportFile=o.reportFile,u=!0;break}}this.reportFile=o?.reportFile,l++}for(let t of(u?this.setPlayerStatus("error"):this.setPlayerStatus("done"),this.agentStatusTip="",s))try{await t.fn()}catch(t){}}},K=(c(require_js_yaml()),require_utils5()),Z=c(require_js_yaml());function X(t,r,n){let i=t;if(-1!==t.indexOf("android")&&t.match(/deviceId:\s*(\d+)/)){let r;i=t.replace(/deviceId:\s*(\d+)/g,(t,n)=>(r=n,`deviceId: '${n}'`)),import_console_browserify.default.warn(`please use string-style deviceId in yaml script, for example: deviceId: "${r}"`)}let a=function(t){return t.replace(/\$\{([^}]+)\}/g,(t,r)=>{let n=import_browser.default.env[r.trim()];if(void 0===n)throw Error(`Environment variable "${r.trim()}" is not defined`);return n})}(i),o=Z.default.load(a,{schema:Z.default.JSON_SCHEMA}),s=r?`, failed to load ${r}`:"",l=void 0!==o.android?Object.assign({},o.android||{}):void 0,u=o.web||o.target,d=void 0!==u?Object.assign({},u||{}):void 0;return n||((0,K.assert)(d||l,`at least one of "target", "web", or "android" properties is required in yaml script${s}`),(0,K.assert)(d&&!l||!d&&l,`only one of "target", "web", or "android" properties is allowed in yaml script${s}`),(d||l)&&(0,K.assert)("object"==typeof d||"object"==typeof l,`property "target/web/android" must be an object${s}`)),(0,K.assert)(o.tasks,`property "tasks" is required in yaml script ${s}`),(0,K.assert)(Array.isArray(o.tasks),`property "tasks" must be an array in yaml script, but got ${o.tasks}`),o}var Y=require_utils12(),J=require_constants(),Q=require_env(),ee=require_logger(),et=require_utils5(),er=require_lib7(),en=require_ai_model(),ei=require_utils12(),ea=require_constants(),eo=require_env(),es=require_logger(),el=require_utils5();function eu(t){return t.subType&&"Plan"!==t.subType?`${t.type} / ${t.subType||""}`:t.type}function ed(t){return t?"string"==typeof t?t:"string"==typeof t.prompt?t.prompt:t.prompt.prompt:""}function ec(t){return t?`${t.direction||"down"}, ${t.scrollType||"once"}, ${t.distance||"distance-not-set"}`:""}function eh(t,r){return r?`${t} - ${r}`:t}var ef=(0,es.getDebug)("page-task-executor"),ep=t=>"android"===t.pageType,em=class{constructor(t,r,n){this.conversationHistory=[],this.page=t,this.insight=r,this.taskCache=n.taskCache,this.onTaskStartCallback=n?.onTaskStart}async recordScreenshot(t){let r=await this.page.screenshotBase64();return{type:"screenshot",ts:Date.now(),screenshot:r,timing:t}}async getElementXpath(t,r){let n=r?.id;if(void 0!==r?.isOrderSensitive)return await this.page.getXpathsByPoint({left:r.center[0],top:r.center[1]},r?.isOrderSensitive);if(r?.attributes?.nodeType===ea.NodeType.POSITION){await this.insight.contextRetrieverFn("locate");let i=(0,en.elementByPositionWithElementInfo)(t.tree,{x:r.center[0],y:r.center[1]},{requireStrictDistance:!1,filterPositionElements:!0});i?.id?n=i.id:ef("no element id found for position node, will not update cache",r)}if(n)try{return await this.page.getXpathsById(n)}catch(t){ef("getXpathsById error: ",t)}}prependExecutorWithScreenshot(t,r=!1){return{...t,executor:async(n,i,...a)=>{let o=[],{task:s}=i;s.recorder=o;let l=await this.recordScreenshot(`before ${s.type}`);o.push(l);let u=await t.executor(n,i,...a);if("Action"===t.type&&await Promise.all([(async()=>{if(await (0,ei.sleep)(100),this.page.waitUntilNetworkIdle)try{await this.page.waitUntilNetworkIdle()}catch(t){}})(),(0,ei.sleep)(200)]),r){let t=await this.recordScreenshot("after Action");o.push(t)}return u}}}async convertPlanToExecutable(t,r){let n=[];return t.forEach(t=>{if("Locate"===t.type){if(null===t.locate||null===t.locate?.id||"null"===t.locate?.id)return;let i={type:"Insight",subType:"Locate",param:t.locate?{...t.locate,cacheable:r?.cacheable}:void 0,thought:t.thought,locate:t.locate,executor:async(t,r)=>{let n,i,a,o,{task:s}=r;(0,el.assert)(t?.prompt||t?.id||t?.bbox,"No prompt or id or position or bbox to locate"),this.insight.onceDumpUpdatedFn=t=>{n=t,i=t?.taskInfo?.usage,s.log={dump:n},s.usage=i};let l=Date.now(),u=await this.insight.contextRetrieverFn("locate");s.pageContext=u,s.recorder=[{type:"screenshot",ts:l,screenshot:u.screenshotBase64,timing:"before Insight"}];let d=t.xpath?await this.page.getElementInfoByXpath(t.xpath):void 0,c=!!d,h=t.prompt,p=this.taskCache?.matchLocateCache(h),m=p?.cacheContent?.xpaths,b=c?null:await async function(t,r,n,i){try{if(r?.length&&t.taskCache?.isCacheResultUsed&&!1!==i)for(let i=0;i<r.length;i++){let a=await t.page.getElementInfoByXpath(r[i]);if(a?.id)return j("cache hit, prompt: %s",n),j("found a new element with same xpath, xpath: %s, id: %s",r[i],a?.id),a}}catch(t){j("get element info by xpath error: ",t)}}(this,m,h,t.cacheable),y=!!b,_=c||y?void 0:function(t,r){if(t){if(t.id)return(0,g.getNodeFromCacheList)(t.id);if(t.bbox){let n={x:Math.floor((t.bbox[0]+t.bbox[2])/2),y:Math.floor((t.bbox[1]+t.bbox[3])/2)},i=(0,f.elementByPositionWithElementInfo)(r,n);return i||(i=(0,g.generateElementByPosition)(n)),i}}}(t,u.tree),v=!!_,A=c||y||v?void 0:(await this.insight.locate(t,{context:u})).element,w=!!A,x=d||b||_||A;if(x&&this.taskCache&&!y&&!1!==t?.cacheable){let t=await this.getElementXpath(u,x);t?.length?(a=t,this.taskCache.updateOrAppendCacheRecord({type:"locate",prompt:h,xpaths:t},p)):ef("no xpaths found, will not update cache",h,t)}if(!x)throw Error(`Element not found: ${t.prompt}`);return c?o={from:"User expected path",context:{xpath:t.xpath}}:y?o={from:"Cache",context:{xpathsFromCache:m,xpathsToSave:a}}:v?o={from:"Planning",context:{id:_?.id,bbox:_?.bbox}}:w&&(o={from:"AI model",context:{prompt:t.prompt}}),{output:{element:x},pageContext:u,hitBy:o}}};n.push(i)}else if("Assert"===t.type||"AssertWithoutThrow"===t.type){let r=t,i={type:"Insight",subType:"Assert",param:r.param,thought:r.thought,locate:r.locate,executor:async(n,i)=>{let a,{task:o}=i;this.insight.onceDumpUpdatedFn=t=>{a=t};let s=Date.now(),l=await this.insight.contextRetrieverFn("assert");o.pageContext=l,o.recorder=[{type:"screenshot",ts:s,screenshot:l.screenshotBase64,timing:"before Insight"}];let u=await this.insight.assert(r.param.assertion);if(!u.pass){if("Assert"===t.type)throw o.output=u,o.log={dump:a},Error(u.thought||"Assertion failed without reason");o.error=Error(u.thought)}return{output:u,pageContext:l,log:{dump:a},usage:u.usage}}};n.push(i)}else if("Input"===t.type){let r={type:"Action",subType:"Input",param:t.param,thought:t.thought,locate:t.locate,executor:async(t,{element:r})=>{(!r||(await this.page.clearInput(r),t&&t.value))&&await this.page.keyboard.type(t.value,{autoDismissKeyboard:t.autoDismissKeyboard})}};n.push(r)}else if("KeyboardPress"===t.type){let r={type:"Action",subType:"KeyboardPress",param:t.param,thought:t.thought,locate:t.locate,executor:async t=>{let r=function(t){let r=Array.isArray(t)?t:[t];return r.reduce((t,n)=>{let i=r.includes("Meta")||r.includes("Control");return i&&("a"===n||"A"===n)?t.concat([{key:n,command:"SelectAll"}]):i&&("c"===n||"C"===n)?t.concat([{key:n,command:"Copy"}]):i&&("v"===n||"V"===n)?t.concat([{key:n,command:"Paste"}]):t.concat([{key:n}])},[])}(t.value);await this.page.keyboard.press(r)}};n.push(r)}else if("Tap"===t.type){let r={type:"Action",subType:"Tap",thought:t.thought,locate:t.locate,executor:async(t,{element:r})=>{(0,el.assert)(r,"Element not found, cannot tap"),await this.page.mouse.click(r.center[0],r.center[1])}};n.push(r)}else if("RightClick"===t.type){let r={type:"Action",subType:"RightClick",thought:t.thought,locate:t.locate,executor:async(t,{element:r})=>{(0,el.assert)(r,"Element not found, cannot right click"),await this.page.mouse.click(r.center[0],r.center[1],{button:"right"})}};n.push(r)}else if("Drag"===t.type){let r={type:"Action",subType:"Drag",param:t.param,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(t?.start_box&&t?.end_box,"No start_box or end_box to drag"),await this.page.mouse.drag(t.start_box,t.end_box)}};n.push(r)}else if("Hover"===t.type){let r={type:"Action",subType:"Hover",thought:t.thought,locate:t.locate,executor:async(t,{element:r})=>{(0,el.assert)(r,"Element not found, cannot hover"),await this.page.mouse.move(r.center[0],r.center[1])}};n.push(r)}else if("Scroll"===t.type){let r={type:"Action",subType:"Scroll",param:t.param,thought:t.thought,locate:t.locate,executor:async(t,{element:r})=>{let n=r?{left:r.center[0],top:r.center[1]}:void 0,i=t?.scrollType;if("untilTop"===i)await this.page.scrollUntilTop(n);else if("untilBottom"===i)await this.page.scrollUntilBottom(n);else if("untilRight"===i)await this.page.scrollUntilRight(n);else if("untilLeft"===i)await this.page.scrollUntilLeft(n);else{if("once"!==i&&i)throw Error(`Unknown scroll event type: ${i}, taskParam: ${JSON.stringify(t)}`);if("down"!==t?.direction&&t&&t.direction)if("up"===t.direction)await this.page.scrollUp(t.distance||void 0,n);else if("left"===t.direction)await this.page.scrollLeft(t.distance||void 0,n);else{if("right"!==t.direction)throw Error(`Unknown scroll direction: ${t.direction}`);await this.page.scrollRight(t.distance||void 0,n)}else await this.page.scrollDown(t?.distance||void 0,n);await (0,ei.sleep)(500)}}};n.push(r)}else if("Sleep"===t.type){let r={type:"Action",subType:"Sleep",param:t.param,thought:t.thought,locate:t.locate,executor:async t=>{await (0,ei.sleep)(t?.timeMs||3e3)}};n.push(r)}else if("Error"===t.type){let r={type:"Action",subType:"Error",param:t.param,thought:t.thought||t.param?.thought,locate:t.locate,executor:async()=>{throw Error(t?.thought||t.param?.thought||"error without thought")}};n.push(r)}else if("ExpectedFalsyCondition"===t.type){let r={type:"Action",subType:"ExpectedFalsyCondition",param:null,thought:t.param?.reason,locate:t.locate,executor:async()=>{}};n.push(r)}else if("Finished"===t.type){let r={type:"Action",subType:"Finished",param:null,thought:t.thought,locate:t.locate,executor:async t=>{}};n.push(r)}else if("AndroidHomeButton"===t.type){let r={type:"Action",subType:"AndroidHomeButton",param:null,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(ep(this.page),"Cannot use home button on non-Android devices"),await this.page.home()}};n.push(r)}else if("AndroidBackButton"===t.type){let r={type:"Action",subType:"AndroidBackButton",param:null,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(ep(this.page),"Cannot use back button on non-Android devices"),await this.page.back()}};n.push(r)}else if("AndroidRecentAppsButton"===t.type){let r={type:"Action",subType:"AndroidRecentAppsButton",param:null,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(ep(this.page),"Cannot use recent apps button on non-Android devices"),await this.page.recentApps()}};n.push(r)}else if("AndroidLongPress"===t.type){let r={type:"Action",subType:"AndroidLongPress",param:t.param,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(ep(this.page),"Cannot use long press on non-Android devices");let{x:r,y:n,duration:i}=t;await this.page.longPress(r,n,i)}};n.push(r)}else{if("AndroidPull"!==t.type)throw Error(`Unknown or unsupported task type: ${t.type}`);{let r={type:"Action",subType:"AndroidPull",param:t.param,thought:t.thought,locate:t.locate,executor:async t=>{(0,el.assert)(ep(this.page),"Cannot use pull action on non-Android devices");let{direction:r,startPoint:n,distance:i,duration:a}=t,o=n?{left:n.x,top:n.y}:void 0;if("down"===r)await this.page.pullDown(o,i,a);else{if("up"!==r)throw Error(`Unknown pull direction: ${r}`);await this.page.pullUp(o,i,a)}}};n.push(r)}}}),{tasks:n.map((t,r)=>"Action"===t.type?this.prependExecutorWithScreenshot(t,r===n.length-1):t)}}async setupPlanningContext(t){let r=Date.now(),n=await this.insight.contextRetrieverFn("locate"),i={type:"screenshot",ts:r,screenshot:n.screenshotBase64,timing:"before Planning"};return t.task.recorder=[i],t.task.pageContext=n,{pageContext:n}}async loadYamlFlowAsPlanning(t,r){let n=new er.Executor(eh("Action",t),{onTaskStart:this.onTaskStartCallback}),i={type:"Planning",subType:"LoadYaml",locate:null,param:{userInstruction:t},executor:async(t,n)=>(await this.setupPlanningContext(n),{output:{actions:[],more_actions_needed_by_instruction:!1,log:"",yamlString:r},cache:{hit:!0}})};return await n.append(i),await n.flush(),{executor:n}}planningTaskFromPrompt(t,r,n){return{type:"Planning",subType:"Plan",locate:null,param:{userInstruction:t,log:r},executor:async(t,r)=>{let i=Date.now(),{pageContext:a}=await this.setupPlanningContext(r),o=await (0,er.plan)(t.userInstruction,{context:a,log:t.log,actionContext:n,pageType:this.page.pageType}),{actions:s,log:l,more_actions_needed_by_instruction:u,error:d,usage:c,rawResponse:h,sleep:f}=o;r.task.log={...r.task.log||{},rawResponse:h},r.task.usage=c;let p=!1,m=!1,g="",b=(s||[]).reduce((t,r)=>{if(p)return t;if(r.locate)m&&r.locate.bbox&&delete r.locate.bbox,r.locate.bbox&&(m=!0),t.push({type:"Locate",locate:r.locate,param:null,thought:r.locate.prompt});else if(["Tap","Hover","Input"].includes(r.type))return g=`invalid planning response: ${JSON.stringify(r)}`,p=!0,t;return t.push(r),t},[]);if(f){let t=f-(Date.now()-i);t>0&&b.push({type:"Sleep",param:{timeMs:t},locate:null})}return 0===b.length&&(0,el.assert)(!u||f,d?`Failed to plan: ${d}`:g||"No plan found"),{output:{actions:b,more_actions_needed_by_instruction:u,log:l,yamlFlow:o.yamlFlow},cache:{hit:!1},pageContext:a}}}}planningTaskToGoal(t){return{type:"Planning",subType:"Plan",locate:null,param:{userInstruction:t},executor:async(t,r)=>{let{pageContext:n}=await this.setupPlanningContext(r),i=await (0,en.resizeImageForUiTars)(n.screenshotBase64,n.size);this.appendConversationHistory({role:"user",content:[{type:"image_url",image_url:{url:i}}]});let a=await (0,en.vlmPlanning)({userInstruction:t.userInstruction,conversationHistory:this.conversationHistory,size:n.size}),{actions:o,action_summary:s,usage:l}=a;return r.task.log={...r.task.log||{},rawResponse:a.rawResponse},r.task.usage=l,this.appendConversationHistory({role:"assistant",content:s}),{output:{actions:o,thought:o[0]?.thought,actionType:o[0].type,more_actions_needed_by_instruction:!0,log:"",yamlFlow:a.yamlFlow},cache:{hit:!1}}}}}async runPlans(t,r,n){let i=new er.Executor(t,{onTaskStart:this.onTaskStartCallback}),{tasks:a}=await this.convertPlanToExecutable(r,n);await i.append(a);let{output:o}=await i.flush();return{output:o,executor:i}}async action(t,r,n){let i=new er.Executor(eh("Action",t),{onTaskStart:this.onTaskStartCallback}),a=this.planningTaskFromPrompt(t,void 0,r),o=0,s=[],l=[],u=(0,eo.getAIConfigInNumber)(eo.MIDSCENE_REPLANNING_CYCLE_LIMIT)||10;for(;a;){let d;if(o>u){let t="Replanning too many times, please split the task into multiple steps";return this.appendErrorPlan(i,t)}await i.append(a);let c=await i.flush(),h=c?.output;if(i.isInErrorState())return{output:h,executor:i};let f=h.actions||[];l.push(...h.yamlFlow||[]);try{d=await this.convertPlanToExecutable(f,n),i.append(d.tasks)}catch(t){return this.appendErrorPlan(i,`Error converting plans to executable tasks: ${t}, plans: ${JSON.stringify(f)}`)}if(await i.flush(),i.isInErrorState())return{output:void 0,executor:i};if(h?.log&&s.push(h.log),!h.more_actions_needed_by_instruction){a=null;break}a=this.planningTaskFromPrompt(t,s.length>0?`- ${s.join("\n- ")}`:void 0,r),o++}return{output:{yamlFlow:l},executor:i}}async actionToGoal(t,r){let n=new er.Executor(eh("Action",t),{onTaskStart:this.onTaskStartCallback});this.conversationHistory=[];let i=0,a=[];for(;i<40;){let o;i++;let s=this.planningTaskToGoal(t);await n.append(s);let l=await n.flush();if(n.isInErrorState())return{output:void 0,executor:n};if(!l)throw Error("result of taskExecutor.flush() is undefined in function actionToGoal");let{output:u}=l,d=u.actions;a.push(...u.yamlFlow||[]);try{o=await this.convertPlanToExecutable(d,r),n.append(o.tasks)}catch(t){return this.appendErrorPlan(n,`Error converting plans to executable tasks: ${t}, plans: ${JSON.stringify(d)}`)}if(await n.flush(),n.isInErrorState())return{output:void 0,executor:n};if("Finished"===d[0].type)break}return{output:{yamlFlow:a},executor:n}}async createTypeQueryTask(t,r,n,i){let a=new er.Executor(eh(t,"string"==typeof r?r:JSON.stringify(r)),{onTaskStart:this.onTaskStartCallback}),o={type:"Insight",subType:t,locate:null,param:{dataDemand:i?{demand:r,multimodalPrompt:i}:r},executor:async(a,o)=>{let s,{task:l}=o;this.insight.onceDumpUpdatedFn=t=>{s=t};let u=Date.now(),d=await this.insight.contextRetrieverFn("extract");l.pageContext=d,l.recorder=[{type:"screenshot",ts:u,screenshot:d.screenshotBase64,timing:"before Extract"}];let c="Query"!==t,h=r;c&&(h={result:`${t}, ${r}`});let{data:f,usage:p,thought:m}=await this.insight.extract(h,n,i),g=f;return c&&((0,el.assert)(void 0!==f?.result,"No result in query data"),g=f.result),{output:g,log:{dump:s},usage:p,thought:m}}};await a.append(this.prependExecutorWithScreenshot(o));let s=await a.flush();if(!s)throw Error("result of taskExecutor.flush() is undefined in function createTypeQueryTask");let{output:l,thought:u}=s;return{output:l,thought:u,executor:a}}async query(t,r){return this.createTypeQueryTask("Query",t,r)}async boolean(t,r){let{textPrompt:n,multimodalPrompt:i}=F(t);return this.createTypeQueryTask("Boolean",n,r,i)}async number(t,r){let{textPrompt:n,multimodalPrompt:i}=F(t);return this.createTypeQueryTask("Number",n,r,i)}async string(t,r){let{textPrompt:n,multimodalPrompt:i}=F(t);return this.createTypeQueryTask("String",n,r,i)}async assert(t,r){let{textPrompt:n,multimodalPrompt:i}=F(t);return await this.createTypeQueryTask("Assert",n,r,i)}appendConversationHistory(t){if("user"===t.role&&this.conversationHistory.filter(t=>"user"===t.role).length>=4&&"user"===t.role){let t=this.conversationHistory.findIndex(t=>"user"===t.role);t>=0&&this.conversationHistory.splice(t,1)}this.conversationHistory.push(t)}async appendErrorPlan(t,r){let n={type:"Error",param:{thought:r},locate:null},{tasks:i}=await this.convertPlanToExecutable([n]);return await t.append(this.prependExecutorWithScreenshot(i[0])),await t.flush(),{output:void 0,executor:t}}async waitFor(t,r){let n=`waitFor: ${t}`,i=new er.Executor(eh("WaitFor",n),{onTaskStart:this.onTaskStartCallback}),{timeoutMs:a,checkIntervalMs:o}=r;(0,el.assert)(t,"No assertion for waitFor"),(0,el.assert)(a,"No timeoutMs for waitFor"),(0,el.assert)(o,"No checkIntervalMs for waitFor");let s=Date.now(),l=Date.now(),u="";for(;Date.now()-s<a;){l=Date.now();let r={type:"AssertWithoutThrow",param:{assertion:t},locate:null},{tasks:n}=await this.convertPlanToExecutable([r]);await i.append(this.prependExecutorWithScreenshot(n[0]));let a=await i.flush();if(!a)throw Error("result of taskExecutor.flush() is undefined in function waitFor");let{output:s}=a;if(s?.pass)return{output:void 0,executor:i};u=s?.thought||`unknown error when waiting for assertion: ${t}`;let d=Date.now();if(d-l<o){let t={type:"Sleep",param:{timeMs:o-(d-l)},locate:null},{tasks:r}=await this.convertPlanToExecutable([t]);await i.append(this.prependExecutorWithScreenshot(r[0])),await i.flush()}}return this.appendErrorPlan(i,`waitFor timeout: ${u}`)}},eg=require_logger(),eb=require_utils5(),ey=(0,eg.getDebug)("plan-builder");function e_(t,r,n){let i=[],a=r?{type:"Locate",locate:r,param:r,thought:""}:null;if(("Tap"===t||"Hover"===t||"RightClick"===t)&&((0,eb.assert)(r,`missing locate info for action "${t}"`),(0,eb.assert)(a,`missing locate info for action "${t}"`),i=[a,{type:t,param:null,thought:"",locate:r}]),"Input"===t||"KeyboardPress"===t){"Input"===t&&(0,eb.assert)(r,`missing locate info for action "${t}"`),(0,eb.assert)(n,`missing param for action "${t}"`);let o={type:t,param:n,thought:"",locate:r};i=a?[a,o]:[o]}if("Scroll"===t){(0,eb.assert)(n,`missing param for action "${t}"`);let o={type:t,param:n,thought:"",locate:r};i=a?[a,o]:[o]}if("Sleep"===t&&((0,eb.assert)(n,`missing param for action "${t}"`),i=[{type:t,param:n,thought:"",locate:null}]),"Locate"===t&&((0,eb.assert)(r,`missing locate info for action "${t}"`),i=[{type:t,param:r,locate:r,thought:""}]),i)return ey("buildPlans",i),i;throw Error(`Not supported type: ${t}`)}var ev=(0,ee.getDebug)("web-integration"),eA={domIncluded:!1,screenshotIncluded:!0},ew=class{constructor(t,r){this.dryMode=!1,this.destroyed=!1,this.page=t,this.opts=Object.assign({generateReport:!0,autoPrintReportMsg:!0,groupName:"Midscene Report",groupDescription:""},r||{}),"puppeteer"!==this.page.pageType&&"playwright"!==this.page.pageType||(this.page.waitForNavigationTimeout=this.opts.waitForNavigationTimeout??J.DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT,this.page.waitForNetworkIdleTimeout=this.opts.waitForNetworkIdleTimeout??J.DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT),this.onTaskStartTip=this.opts.onTaskStartTip,this.insight=new z.Insight(async t=>this.getUIContext(t)),r?.cacheId&&"android"!==this.page.pageType&&(this.taskCache=new B(r.cacheId,(0,Q.getAIConfigInBoolean)("MIDSCENE_CACHE"))),this.taskExecutor=new em(this.page,this.insight,{taskCache:this.taskCache,onTaskStart:this.callbackOnTaskStartTip.bind(this)}),this.dump=this.resetDump(),this.reportFileName=r?.reportFileName||function(t="web"){return`${(0,m.getAIConfig)(m.MIDSCENE_REPORT_TAG_NAME)||t}-${(0,v.default)().format("YYYY-MM-DD_HH-mm-ss")}-${(0,_.uuid)().substring(0,8)}`}(r?.testId||this.page.pageType||"web")}async getUIContext(t){return this.frozenPageContext?(ev("Using frozen page context for action:",t),this.frozenPageContext):t&&("extract"===t||"assert"===t)?await D(this.page):await D(this.page,(0,Q.vlLocateMode)())}async _snapshotContext(){return await this.getUIContext("locate")}async setAIActionContext(t){this.opts.aiActionContext=t}resetDump(){return this.dump={groupName:this.opts.groupName,groupDescription:this.opts.groupDescription,executions:[]},this.dump}appendExecutionDump(t){let r=function(t){function r(t){if(!t)return null;let n=Array.isArray(t.children)?t.children.map(r).filter(t=>null!==t):[];return t.node&&!0===t.node.isVisible?{...t,children:n}:n.length>0?{node:null,children:n}:null}return{...t,tasks:Array.isArray(t.tasks)?t.tasks.map(t=>{let n={...t};return t.pageContext?.tree&&(n.pageContext={...t.pageContext,tree:r(t.pageContext.tree)||{node:null,children:[]}}),n}):t.tasks}}(t);this.dump.executions.push(r)}dumpDataString(){return this.dump.groupName=this.opts.groupName,this.dump.groupDescription=this.opts.groupDescription,(0,Y.stringifyDumpData)(this.dump)}reportHTMLString(){return(0,Y.reportHTMLContent)(this.dumpDataString())}writeOutActionDumps(){var t;if(this.destroyed)throw Error("PageAgent has been destroyed. Cannot update report file.");let{generateReport:r,autoPrintReportMsg:n}=this.opts;this.reportFile=(0,Y.writeLogFile)({fileName:this.reportFileName,fileExt:Y.groupedActionDumpFileExt,fileContent:this.dumpDataString(),type:"dump",generateReport:r}),ev("writeOutActionDumps",this.reportFile),r&&n&&this.reportFile&&(t=this.reportFile,(0,_.logMsg)(`Midscene - report file updated: ${t}`))}async callbackOnTaskStartTip(t){let r=function(t){let r;if("Planning"===t.type&&(r=t?.param?.userInstruction),"Insight"===t.type&&(r=t?.param?.prompt||t?.param?.id||t?.param?.dataDemand||t?.param?.assertion),"Action"===t.type){let n=t?.locate,i=n?ed(n):"";r=t.thought||"","number"==typeof t?.param?.timeMs?r=`${t?.param?.timeMs}ms`:"string"==typeof t?.param?.scrollType?r=ec(t?.param):"string"==typeof t?.param?.direction&&"AndroidPull"===t?.subType?r=function(t){if(!t)return"";let r=[];return r.push(`direction: ${t.direction||"down"}`),t.startPoint&&r.push(`start: (${t.startPoint.x}, ${t.startPoint.y})`),t.distance&&r.push(`distance: ${t.distance}`),t.duration&&r.push(`duration: ${t.duration}ms`),r.join(", ")}(t?.param):void 0!==t?.param?.value&&(r=t?.param?.value),i&&(r=r?`${i} - ${r}`:i)}return void 0===r?"":"string"==typeof r?r:JSON.stringify(r,void 0,2)}(t),n=r?`${eu(t)} - ${r}`:eu(t);this.onTaskStartTip&&await this.onTaskStartTip(n)}async afterTaskRunning(t,r=!1){this.appendExecutionDump(t.dump());try{await this.onDumpUpdate?.(this.dumpDataString())}catch(t){import_console_browserify.default.error("Error in onDumpUpdate",t)}if(this.writeOutActionDumps(),t.isInErrorState()&&!r){let r=t.latestErrorTask();throw Error(`${r?.errorMessage}
|
|
777
777
|
${r?.errorStack}`,{cause:r?.error})}}buildDetailedLocateParam(t,r){return((0,et.assert)(t,"missing locate prompt"),"object"==typeof r&&null!==r)?{prompt:t,deepThink:r.deepThink??!1,cacheable:r.cacheable??!0,xpath:r.xpath}:{prompt:t}}async aiTap(t,r){let n=this.buildDetailedLocateParam(t,r),i=e_("Tap",n),{executor:a,output:o}=await this.taskExecutor.runPlans(eh("Tap",ed(n)),i,{cacheable:r?.cacheable});return await this.afterTaskRunning(a),o}async aiRightClick(t,r){let n=this.buildDetailedLocateParam(t,r),i=e_("RightClick",n),{executor:a,output:o}=await this.taskExecutor.runPlans(eh("RightClick",ed(n)),i,{cacheable:r?.cacheable});return await this.afterTaskRunning(a),o}async aiHover(t,r){let n=this.buildDetailedLocateParam(t,r),i=e_("Hover",n),{executor:a,output:o}=await this.taskExecutor.runPlans(eh("Hover",ed(n)),i,{cacheable:r?.cacheable});return await this.afterTaskRunning(a),o}async aiInput(t,r,n){(0,et.assert)("string"==typeof t,"input value must be a string, use empty string if you want to clear the input"),(0,et.assert)(r,"missing locate prompt for input");let i=this.buildDetailedLocateParam(r,n),a=e_("Input",i,{value:t,autoDismissKeyboard:n?.autoDismissKeyboard}),{executor:o,output:s}=await this.taskExecutor.runPlans(eh("Input",ed(i)),a,{cacheable:n?.cacheable});return await this.afterTaskRunning(o),s}async aiKeyboardPress(t,r,n){(0,et.assert)(t,"missing keyName for keyboard press");let i=r?this.buildDetailedLocateParam(r,n):void 0,a=e_("KeyboardPress",i,{value:t}),{executor:o,output:s}=await this.taskExecutor.runPlans(eh("KeyboardPress",ed(i)),a,{cacheable:n?.cacheable});return await this.afterTaskRunning(o),s}async aiScroll(t,r,n){let i=r?this.buildDetailedLocateParam(r,n):void 0,a=e_("Scroll",i,t),o=r?`${ed(i)} - ${ec(t)}`:ec(t),{executor:s,output:l}=await this.taskExecutor.runPlans(eh("Scroll",o),a,{cacheable:n?.cacheable});return await this.afterTaskRunning(s),l}async aiAction(t,r){let n=r?.cacheable,i="vlm-ui-tars"===(0,Q.vlLocateMode)(),a=i||!1===n?void 0:this.taskCache?.matchPlanCache(t);if(a&&this.taskCache?.isCacheResultUsed){let{executor:r}=await this.taskExecutor.loadYamlFlowAsPlanning(t,a.cacheContent?.yamlWorkflow);await await this.afterTaskRunning(r),ev("matched cache, will call .runYaml to run the action");let n=a.cacheContent?.yamlWorkflow;return this.runYaml(n)}let{output:o,executor:s}=await (i?this.taskExecutor.actionToGoal(t,{cacheable:n}):this.taskExecutor.action(t,this.opts.aiActionContext,{cacheable:n}));if(this.taskCache&&o?.yamlFlow&&!1!==n){let r={tasks:[{name:t,flow:o.yamlFlow}]},n=G.default.dump(r);this.taskCache.updateOrAppendCacheRecord({type:"plan",prompt:t,yamlWorkflow:n},a)}return await this.afterTaskRunning(s),o}async aiQuery(t,r=eA){let{output:n,executor:i}=await this.taskExecutor.query(t,r);return await this.afterTaskRunning(i),n}async aiBoolean(t,r=eA){let{output:n,executor:i}=await this.taskExecutor.boolean(t,r);return await this.afterTaskRunning(i),n}async aiNumber(t,r=eA){let{output:n,executor:i}=await this.taskExecutor.number(t,r);return await this.afterTaskRunning(i),n}async aiString(t,r=eA){let{output:n,executor:i}=await this.taskExecutor.string(t,r);return await this.afterTaskRunning(i),n}async aiAsk(t,r=eA){return this.aiString(t,r)}async describeElementAtPoint(t,r){let{verifyPrompt:n=!0,retryLimit:i=3}=r||{},a,o=!1,s=0,l="",u=r?.deepThink||!1;for(;!o&&s<i;){s>=2&&(u=!0),ev("aiDescribe",t,"verifyPrompt",n,"retryCount",s,"deepThink",u);let i=await this.insight.describe(t,{deepThink:u});ev("aiDescribe text",i),(0,et.assert)(i.description,`failed to describe element at [${t}]`),l=i.description,(a=await this.verifyLocator(l,u?{deepThink:!0}:void 0,t,r)).pass?o=!0:s++}return{prompt:l,deepThink:u,verifyResult:a}}async verifyLocator(t,r,n,i){ev("verifyLocator",t,r,n,i);let{center:a,rect:o}=await this.aiLocate(t,r),s=((t,r)=>{let[n,i]=t,[a,o]=r;return Math.round(Math.sqrt((n-a)**2+(i-o)**2))})(n,a),l=((t,r)=>{let[n,i]=t,{left:a,top:o,width:s,height:l}=r;return n>=a&&n<=a+s&&i>=o&&i<=o+l})(n,o),u={pass:s<=(i?.centerDistanceThreshold||20)||l,rect:o,center:a,centerDistance:s};return ev("aiDescribe verifyResult",u),u}async aiLocate(t,r){let n=this.buildDetailedLocateParam(t,r),i=e_("Locate",n),{executor:a,output:o}=await this.taskExecutor.runPlans(eh("Locate",ed(n)),i,{cacheable:r?.cacheable});await this.afterTaskRunning(a);let{element:s}=o;return{rect:s?.rect,center:s?.center,scale:(await this.page.size()).dpr}}async aiAssert(t,r,n){let{output:i,executor:a,thought:o}=await this.taskExecutor.assert(t,{returnThought:!0});if(await this.afterTaskRunning(a,!0),n?.keepRawResponse)return{pass:i,thought:o};if(!i){let n=r||`Assertion failed: ${t}`,i=`Reason: ${o||a.latestErrorTask()?.error||"(no_reason)"}`;throw Error(`${n}
|
|
@@ -902,6 +902,6 @@ ${i.join("\n")}
|
|
|
902
902
|
font-style: ${t.fontStyle};
|
|
903
903
|
}`}var FontStylePromiseCache,init_loadFontCSS=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadFontCSS.mjs"(){init_globals(),init_loadFontAsBase64()}});async function getFontCss(t,r,n){let i=t.filter(t=>Cache.has(`${t}-and-url`)).map((t,i)=>{if(!FontStylePromiseCache.has(t)){let{url:a}=Cache.get(`${t}-and-url`);0===i?FontStylePromiseCache.set(t,loadFontCSS(r,a)):FontStylePromiseCache.set(t,loadFontCSS({fontWeight:n.fontWeight,fontStyle:n.fontStyle,fontFamily:t},a))}return FontStylePromiseCache.get(t)});return(await Promise.all(i)).join("\n")}var init_getFontCss=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getFontCss.mjs"(){init_globals(),init_Cache(),init_loadFontCSS(),FontStylePromiseCache=new Map}});function getSVGUrl(t,r,n,i,a){let{domElement:o,styleElement:s,svgRoot:l}=a;o.innerHTML=`<style>${r.cssStyle}</style><div>${t}</div>`,o.setAttribute("style",`transform: scale(${n});transform-origin: top left; display: inline-block`),s.textContent=i;let{width:u,height:d}=a.image;return l.setAttribute("width",u.toString()),l.setAttribute("height",d.toString()),(new XMLSerializer).serializeToString(l)}var init_getSVGUrl=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getSVGUrl.mjs"(){init_globals()}});function getTemporaryCanvasFromImage(t,r){let n=CanvasPool.getOptimalCanvasAndContext(t.width,t.height,r),{context:i}=n;return i.clearRect(0,0,t.width,t.height),i.drawImage(t,0,0),CanvasPool.returnCanvasAndContext(n),n.canvas}var init_getTemporaryCanvasFromImage=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getTemporaryCanvasFromImage.mjs"(){init_globals(),init_CanvasPool()}});function loadSVGImage(t,r,n){return new Promise(async i=>{n&&await new Promise(t=>setTimeout(t,100)),t.onload=()=>{i()},t.src=`data:image/svg+xml;charset=utf8,${encodeURIComponent(r)}`,t.crossOrigin="anonymous"})}var tempHTMLTextRenderData,init_loadSVGImage=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadSVGImage.mjs"(){init_globals()}});function measureHtmlText(t,r,n,i){let{domElement:a,styleElement:o,svgRoot:s}=i=i||tempHTMLTextRenderData||(tempHTMLTextRenderData=new HTMLTextRenderData);a.innerHTML=`<style>${r.cssStyle}</style><div>${t}</div>`,a.setAttribute("style","transform-origin: top left; display: inline-block"),n&&(o.textContent=n),document.body.appendChild(s);let l=a.getBoundingClientRect();s.remove();let u=CanvasTextMetrics.measureFont(r.fontStyle).descent;return{width:l.width,height:l.height+u}}var HTMLTextSystem,_MeshGeometry,MeshGeometry,localUniformBit,localUniformBitGroup2,localUniformBitGl,tilingBit,tilingBitGl,gpuProgram,glProgram,TilingSpriteShader,QuadGeometry,init_measureHtmlText=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/measureHtmlText.mjs"(){init_globals(),init_CanvasTextMetrics(),init_HTMLTextRenderData()}}),init_HTMLTextSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HTMLTextSystem.mjs"(){init_globals(),init_Extensions(),init_TexturePool(),init_types2(),init_isSafari(),init_warn2(),init_PoolGroup(),init_getPo2TextureFromSource(),init_HTMLTextRenderData(),init_HtmlTextStyle(),init_extractFontFamilies(),init_getFontCss(),init_getSVGUrl(),init_getTemporaryCanvasFromImage(),init_loadSVGImage(),init_measureHtmlText(),(HTMLTextSystem=class{constructor(t){this._activeTextures={},this._renderer=t,this._createCanvas=t.type===RendererType.WEBGPU}getTexture(t){return this._buildTexturePromise(t.text,t.resolution,t.style)}getManagedTexture(t,r,n,i){if(this._activeTextures[i])return this._increaseReferenceCount(i),this._activeTextures[i].promise;let a=this._buildTexturePromise(t,r,n).then(t=>(this._activeTextures[i].texture=t,t));return this._activeTextures[i]={texture:null,promise:a,usageCount:1},a}async _buildTexturePromise(t,r,n){let i=BigPool.get(HTMLTextRenderData),a=extractFontFamilies(t,n),o=await getFontCss(a,n,HTMLTextStyle.defaultTextStyle),s=measureHtmlText(t,n,o,i),l=Math.ceil(Math.ceil(Math.max(1,s.width)+2*n.padding)*r),u=Math.ceil(Math.ceil(Math.max(1,s.height)+2*n.padding)*r),d=i.image;d.width=0|l,d.height=0|u;let c=getSVGUrl(t,n,r,o,i);await loadSVGImage(d,c,isSafari()&&a.length>0);let h=d;this._createCanvas&&(h=getTemporaryCanvasFromImage(d,r));let f=getPo2TextureFromSource(h,d.width,d.height,r);return this._createCanvas&&this._renderer.texture.initSource(f.source),BigPool.return(i),f}_increaseReferenceCount(t){this._activeTextures[t].usageCount++}decreaseReferenceCount(t){let r=this._activeTextures[t];r&&(r.usageCount--,0===r.usageCount&&(r.texture?this._cleanUp(r):r.promise.then(t=>{r.texture=t,this._cleanUp(r)}).catch(()=>{warn("HTMLTextSystem: Failed to clean texture")}),this._activeTextures[t]=null))}_cleanUp(t){TexturePool.returnTexture(t.texture),t.texture.source.resource=null,t.texture.source.uploadMethodId="unknown"}getReferenceCount(t){return this._activeTextures[t].usageCount}destroy(){this._activeTextures=null}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem,ExtensionType.CanvasSystem],name:"htmlText"},HTMLTextSystem.defaultFontOptions={fontFamily:"Arial",fontStyle:"normal",fontWeight:"normal"}}}),init_init10=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/init.mjs"(){init_globals(),init_Extensions(),init_HTMLTextPipe(),init_HTMLTextSystem(),extensions.add(HTMLTextSystem),extensions.add(HTMLTextPipe)}}),init_MeshGeometry=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/shared/MeshGeometry.mjs"(){init_globals(),init_Buffer(),init_const(),init_Geometry(),init_deprecation(),(_MeshGeometry=class t extends Geometry{constructor(...r){let n=r[0]??{};n instanceof Float32Array&&(deprecation(v8_0_0,"use new MeshGeometry({ positions, uvs, indices }) instead"),n={positions:n,uvs:r[1],indices:r[2]});let i=(n={...t.defaultOptions,...n}).positions||new Float32Array([0,0,1,0,1,1,0,1]),a=n.uvs||new Float32Array([0,0,1,0,1,1,0,1]),o=n.indices||new Uint32Array([0,1,2,0,2,3]),s=n.shrinkBuffersToFit;super({attributes:{aPosition:{buffer:new Buffer3({data:i,label:"attribute-mesh-positions",shrinkToFit:s,usage:BufferUsage.VERTEX|BufferUsage.COPY_DST}),format:"float32x2",stride:8,offset:0},aUV:{buffer:new Buffer3({data:a,label:"attribute-mesh-uvs",shrinkToFit:s,usage:BufferUsage.VERTEX|BufferUsage.COPY_DST}),format:"float32x2",stride:8,offset:0}},indexBuffer:new Buffer3({data:o,label:"index-mesh-buffer",shrinkToFit:s,usage:BufferUsage.INDEX|BufferUsage.COPY_DST}),topology:n.topology}),this.batchMode="auto"}get positions(){return this.attributes.aPosition.buffer.data}set positions(t){this.attributes.aPosition.buffer.data=t}get uvs(){return this.attributes.aUV.buffer.data}set uvs(t){this.attributes.aUV.buffer.data=t}get indices(){return this.indexBuffer.data}set indices(t){this.indexBuffer.data=t}}).defaultOptions={topology:"triangle-list",shrinkBuffersToFit:!1},MeshGeometry=_MeshGeometry}}),init_localUniformBit=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/localUniformBit.mjs"(){init_globals(),localUniformBitGroup2={...localUniformBit={name:"local-uniform-bit",vertex:{header:"\n\n struct LocalUniforms {\n uTransformMatrix:mat3x3<f32>,\n uColor:vec4<f32>,\n uRound:f32,\n }\n\n @group(1) @binding(0) var<uniform> localUniforms : LocalUniforms;\n ",main:"\n vColor *= localUniforms.uColor;\n modelMatrix *= localUniforms.uTransformMatrix;\n ",end:"\n if(localUniforms.uRound == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n "}},vertex:{...localUniformBit.vertex,header:localUniformBit.vertex.header.replace("group(1)","group(2)")}},localUniformBitGl={name:"local-uniform-bit",vertex:{header:"\n\n uniform mat3 uTransformMatrix;\n uniform vec4 uColor;\n uniform float uRound;\n ",main:"\n vColor *= uColor;\n modelMatrix = uTransformMatrix;\n ",end:"\n if(uRound == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n "}}}}),init_tilingBit=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/shader/tilingBit.mjs"(){init_globals(),tilingBit={name:"tiling-bit",vertex:{header:"\n struct TilingUniforms {\n uMapCoord:mat3x3<f32>,\n uClampFrame:vec4<f32>,\n uClampOffset:vec2<f32>,\n uTextureTransform:mat3x3<f32>,\n uSizeAnchor:vec4<f32>\n };\n\n @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;\n @group(2) @binding(1) var uTexture: texture_2d<f32>;\n @group(2) @binding(2) var uSampler: sampler;\n ",main:"\n uv = (tilingUniforms.uTextureTransform * vec3(uv, 1.0)).xy;\n\n position = (position - tilingUniforms.uSizeAnchor.zw) * tilingUniforms.uSizeAnchor.xy;\n "},fragment:{header:"\n struct TilingUniforms {\n uMapCoord:mat3x3<f32>,\n uClampFrame:vec4<f32>,\n uClampOffset:vec2<f32>,\n uTextureTransform:mat3x3<f32>,\n uSizeAnchor:vec4<f32>\n };\n\n @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;\n @group(2) @binding(1) var uTexture: texture_2d<f32>;\n @group(2) @binding(2) var uSampler: sampler;\n ",main:"\n\n var coord = vUV + ceil(tilingUniforms.uClampOffset - vUV);\n coord = (tilingUniforms.uMapCoord * vec3(coord, 1.0)).xy;\n var unclamped = coord;\n coord = clamp(coord, tilingUniforms.uClampFrame.xy, tilingUniforms.uClampFrame.zw);\n\n var bias = 0.;\n\n if(unclamped.x == coord.x && unclamped.y == coord.y)\n {\n bias = -32.;\n } \n\n outColor = textureSampleBias(uTexture, uSampler, coord, bias);\n "}},tilingBitGl={name:"tiling-bit",vertex:{header:"\n uniform mat3 uTextureTransform;\n uniform vec4 uSizeAnchor;\n \n ",main:"\n uv = (uTextureTransform * vec3(aUV, 1.0)).xy;\n\n position = (position - uSizeAnchor.zw) * uSizeAnchor.xy;\n "},fragment:{header:"\n uniform sampler2D uTexture;\n uniform mat3 uMapCoord;\n uniform vec4 uClampFrame;\n uniform vec2 uClampOffset;\n ",main:"\n\n vec2 coord = vUV + ceil(uClampOffset - vUV);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n \n outColor = texture(uTexture, coord, unclamped == coord ? 0.0 : -32.0);// lod-bias very negative to force lod 0\n \n "}}}}),init_TilingSpriteShader=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/shader/TilingSpriteShader.mjs"(){init_globals(),init_Matrix(),init_compileHighShaderToProgram(),init_localUniformBit(),init_roundPixelsBit(),init_Shader(),init_UniformGroup(),init_Texture(),init_tilingBit(),TilingSpriteShader=class extends Shader{constructor(){gpuProgram??(gpuProgram=compileHighShaderGpuProgram({name:"tiling-sprite-shader",bits:[localUniformBit,tilingBit,roundPixelsBit]})),glProgram??(glProgram=compileHighShaderGlProgram({name:"tiling-sprite-shader",bits:[localUniformBitGl,tilingBitGl,roundPixelsBitGl]})),super({glProgram:glProgram,gpuProgram:gpuProgram,resources:{localUniforms:new UniformGroup({uTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),tilingUniforms:new UniformGroup({uMapCoord:{value:new Matrix,type:"mat3x3<f32>"},uClampFrame:{value:new Float32Array([0,0,1,1]),type:"vec4<f32>"},uClampOffset:{value:new Float32Array([0,0]),type:"vec2<f32>"},uTextureTransform:{value:new Matrix,type:"mat3x3<f32>"},uSizeAnchor:{value:new Float32Array([100,100,.5,.5]),type:"vec4<f32>"}}),uTexture:Texture.EMPTY.source,uSampler:Texture.EMPTY.source.style}})}updateUniforms(t,r,n,i,a,o){let s=this.resources.tilingUniforms,l=o.width,u=o.height,d=o.textureMatrix,c=s.uniforms.uTextureTransform;c.set(n.a*l/t,n.b*l/r,n.c*u/t,n.d*u/r,n.tx/t,n.ty/r),c.invert(),s.uniforms.uMapCoord=d.mapCoord,s.uniforms.uClampFrame=d.uClampFrame,s.uniforms.uClampOffset=d.uClampOffset,s.uniforms.uTextureTransform=c,s.uniforms.uSizeAnchor[0]=t,s.uniforms.uSizeAnchor[1]=r,s.uniforms.uSizeAnchor[2]=i,s.uniforms.uSizeAnchor[3]=a,o&&(this.resources.uTexture=o.source,this.resources.uSampler=o.source.style)}}}}),init_QuadGeometry=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/QuadGeometry.mjs"(){init_globals(),init_MeshGeometry(),QuadGeometry=class extends MeshGeometry{constructor(){super({positions:new Float32Array([0,0,1,0,1,1,0,1]),uvs:new Float32Array([0,0,1,0,1,1,0,1]),indices:new Uint32Array([0,1,2,0,2,3])})}}}});function setPositions(t,r){let n=t.anchor.x,i=t.anchor.y;r[0]=-n*t.width,r[1]=-i*t.height,r[2]=(1-n)*t.width,r[3]=-i*t.height,r[4]=(1-n)*t.width,r[5]=(1-i)*t.height,r[6]=-n*t.width,r[7]=(1-i)*t.height}var init_setPositions=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/setPositions.mjs"(){init_globals()}});function applyMatrix(t,r,n,i){let a=0,o=t.length/(r||2),s=i.a,l=i.b,u=i.c,d=i.d,c=i.tx,h=i.ty;for(n*=r;a<o;){let i=t[n],o=t[n+1];t[n]=s*i+u*o+c,t[n+1]=l*i+d*o+h,n+=r,a++}}var init_applyMatrix=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/applyMatrix.mjs"(){init_globals()}});function setUvs(t,r){let n=t.texture,i=n.frame.width,a=n.frame.height,o=0,s=0;t._applyAnchorToTexture&&(o=t.anchor.x,s=t.anchor.y),r[0]=r[6]=-o,r[2]=r[4]=1-o,r[1]=r[3]=-s,r[5]=r[7]=1-s;let l=Matrix.shared;l.copyFrom(t._tileTransform.matrix),l.tx/=t.width,l.ty/=t.height,l.invert(),l.scale(t.width/i,t.height/a),applyMatrix(r,2,0,l)}var sharedQuad,TilingSpritePipe,_PlaneGeometry,PlaneGeometry,_NineSliceGeometry,NineSliceGeometry,NineSliceSpritePipe,FilterPipe,tempMatrix4,init_setUvs=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/setUvs.mjs"(){init_globals(),init_Matrix(),init_applyMatrix()}}),init_TilingSpritePipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/TilingSpritePipe.mjs"(){init_globals(),init_Extensions(),init_State(),init_types2(),init_colorToUniform(),init_BatchableMesh(),init_MeshGeometry(),init_TilingSpriteShader(),init_QuadGeometry(),init_setPositions(),init_setUvs(),sharedQuad=new QuadGeometry,(TilingSpritePipe=class{constructor(t){this._tilingSpriteDataHash=Object.create(null),this._renderer=t}validateRenderable(t){let r=this._getTilingSpriteData(t),n=r.canBatch;this._updateCanBatch(t);let i=r.canBatch;if(i&&i===n){let{batchableMesh:n}=r;if(n.texture._source!==t.texture._source)return!n.batcher.checkAndUpdateTexture(n,t.texture)}return n!==i}addRenderable(t,r){let n=this._renderer.renderPipes.batch;this._updateCanBatch(t);let i=this._getTilingSpriteData(t),{geometry:a,canBatch:o}=i;if(o){i.batchableMesh||(i.batchableMesh=new BatchableMesh);let r=i.batchableMesh;t._didTilingSpriteUpdate&&(t._didTilingSpriteUpdate=!1,this._updateBatchableMesh(t),r.geometry=a,r.mesh=t,r.texture=t._texture),r.roundPixels=this._renderer._roundPixels|t._roundPixels,n.addToBatch(r)}else n.break(r),i.shader||(i.shader=new TilingSpriteShader),this.updateRenderable(t),r.add(t)}execute(t){let{shader:r}=this._tilingSpriteDataHash[t.uid];r.groups[0]=this._renderer.globalUniforms.bindGroup;let n=r.resources.localUniforms.uniforms;n.uTransformMatrix=t.groupTransform,n.uRound=this._renderer._roundPixels|t._roundPixels,color32BitToUniform(t.groupColorAlpha,n.uColor,0),this._renderer.encoder.draw({geometry:sharedQuad,shader:r,state:State.default2d})}updateRenderable(t){let r=this._getTilingSpriteData(t),{canBatch:n}=r;if(n){let{batchableMesh:n}=r;t._didTilingSpriteUpdate&&this._updateBatchableMesh(t),n.batcher.updateElement(n)}else if(t._didTilingSpriteUpdate){let{shader:n}=r;n.updateUniforms(t.width,t.height,t._tileTransform.matrix,t.anchor.x,t.anchor.y,t.texture)}t._didTilingSpriteUpdate=!1}destroyRenderable(t){let r=this._getTilingSpriteData(t);r.batchableMesh=null,r.shader?.destroy(),this._tilingSpriteDataHash[t.uid]=null}_getTilingSpriteData(t){return this._tilingSpriteDataHash[t.uid]||this._initTilingSpriteData(t)}_initTilingSpriteData(t){let r=new MeshGeometry({indices:sharedQuad.indices,positions:sharedQuad.positions.slice(),uvs:sharedQuad.uvs.slice()});return this._tilingSpriteDataHash[t.uid]={canBatch:!0,renderable:t,geometry:r},t.on("destroyed",()=>{this.destroyRenderable(t)}),this._tilingSpriteDataHash[t.uid]}_updateBatchableMesh(t){let{geometry:r}=this._getTilingSpriteData(t),n=t.texture.source.style;"repeat"!==n.addressMode&&(n.addressMode="repeat",n.update()),setUvs(t,r.uvs),setPositions(t,r.positions)}destroy(){for(let t in this._tilingSpriteDataHash)this.destroyRenderable(this._tilingSpriteDataHash[t].renderable);this._tilingSpriteDataHash=null,this._renderer=null}_updateCanBatch(t){let r=this._getTilingSpriteData(t),n=t.texture,i=!0;return this._renderer.type===RendererType.WEBGL&&(i=this._renderer.context.supports.nonPowOf2wrapping),r.canBatch=n.textureMatrix.isSimple&&(i||n.source.isPowerOfTwo),r.canBatch}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"tilingSprite"}}}),init_init11=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/init.mjs"(){init_globals(),init_Extensions(),init_TilingSpritePipe(),extensions.add(TilingSpritePipe)}}),init_PlaneGeometry=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh-plane/PlaneGeometry.mjs"(){init_globals(),init_deprecation(),init_MeshGeometry(),(_PlaneGeometry=class t extends MeshGeometry{constructor(...t){super({});let r=t[0]??{};"number"==typeof r&&(deprecation(v8_0_0,"PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead"),r={width:r,height:t[1],verticesX:t[2],verticesY:t[3]}),this.build(r)}build(r){r={...t.defaultOptions,...r},this.verticesX=this.verticesX??r.verticesX,this.verticesY=this.verticesY??r.verticesY,this.width=this.width??r.width,this.height=this.height??r.height;let n=this.verticesX*this.verticesY,i=[],a=[],o=[],s=this.verticesX-1,l=this.verticesY-1,u=this.width/s,d=this.height/l;for(let t=0;t<n;t++){let r=t%this.verticesX,n=t/this.verticesX|0;i.push(r*u,n*d),a.push(r/s,n/l)}let c=s*l;for(let t=0;t<c;t++){let r=t%s,n=t/s|0,i=n*this.verticesX+r,a=n*this.verticesX+r+1,l=(n+1)*this.verticesX+r,u=(n+1)*this.verticesX+r+1;o.push(i,a,l,a,u,l)}this.buffers[0].data=new Float32Array(i),this.buffers[1].data=new Float32Array(a),this.indexBuffer.data=new Uint32Array(o),this.buffers[0].update(),this.buffers[1].update(),this.indexBuffer.update()}}).defaultOptions={width:100,height:100,verticesX:10,verticesY:10},PlaneGeometry=_PlaneGeometry}}),init_NineSliceGeometry=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/NineSliceGeometry.mjs"(){init_globals(),init_PlaneGeometry(),(_NineSliceGeometry=class t extends PlaneGeometry{constructor(r={}){super({width:(r={...t.defaultOptions,...r}).width,height:r.height,verticesX:4,verticesY:4}),this.update(r)}update(t){this.width=t.width??this.width,this.height=t.height??this.height,this._originalWidth=t.originalWidth??this._originalWidth,this._originalHeight=t.originalHeight??this._originalHeight,this._leftWidth=t.leftWidth??this._leftWidth,this._rightWidth=t.rightWidth??this._rightWidth,this._topHeight=t.topHeight??this._topHeight,this._bottomHeight=t.bottomHeight??this._bottomHeight,this.updateUvs(),this.updatePositions()}updatePositions(){let t=this.positions,r=this._leftWidth+this._rightWidth,n=this.width>r?1:this.width/r,i=this._topHeight+this._bottomHeight,a=Math.min(n,this.height>i?1:this.height/i);t[9]=t[11]=t[13]=t[15]=this._topHeight*a,t[17]=t[19]=t[21]=t[23]=this.height-this._bottomHeight*a,t[25]=t[27]=t[29]=t[31]=this.height,t[2]=t[10]=t[18]=t[26]=this._leftWidth*a,t[4]=t[12]=t[20]=t[28]=this.width-this._rightWidth*a,t[6]=t[14]=t[22]=t[30]=this.width,this.getBuffer("aPosition").update()}updateUvs(){let t=this.uvs;t[0]=t[8]=t[16]=t[24]=0,t[1]=t[3]=t[5]=t[7]=0,t[6]=t[14]=t[22]=t[30]=1,t[25]=t[27]=t[29]=t[31]=1;let r=1/this._originalWidth,n=1/this._originalHeight;t[2]=t[10]=t[18]=t[26]=r*this._leftWidth,t[9]=t[11]=t[13]=t[15]=n*this._topHeight,t[4]=t[12]=t[20]=t[28]=1-r*this._rightWidth,t[17]=t[19]=t[21]=t[23]=1-n*this._bottomHeight,this.getBuffer("aUV").update()}}).defaultOptions={width:100,height:100,leftWidth:10,topHeight:10,rightWidth:10,bottomHeight:10,originalWidth:100,originalHeight:100},NineSliceGeometry=_NineSliceGeometry}}),init_NineSliceSpritePipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/NineSliceSpritePipe.mjs"(){init_globals(),init_Extensions(),init_PoolGroup(),init_BatchableMesh(),init_NineSliceGeometry(),(NineSliceSpritePipe=class{constructor(t){this._gpuSpriteHash=Object.create(null),this._renderer=t}addRenderable(t,r){let n=this._getGpuSprite(t);t._didSpriteUpdate&&this._updateBatchableSprite(t,n),this._renderer.renderPipes.batch.addToBatch(n)}updateRenderable(t){let r=this._gpuSpriteHash[t.uid];t._didSpriteUpdate&&this._updateBatchableSprite(t,r),r.batcher.updateElement(r)}validateRenderable(t){let r=t._texture,n=this._getGpuSprite(t);return n.texture._source!==r._source&&!n.batcher.checkAndUpdateTexture(n,r)}destroyRenderable(t){let r=this._gpuSpriteHash[t.uid];BigPool.return(r),this._gpuSpriteHash[t.uid]=null}_updateBatchableSprite(t,r){t._didSpriteUpdate=!1,r.geometry.update(t),r.texture=t._texture}_getGpuSprite(t){return this._gpuSpriteHash[t.uid]||this._initGPUSprite(t)}_initGPUSprite(t){let r=new BatchableMesh;return r.geometry=new NineSliceGeometry,r.mesh=t,r.texture=t._texture,r.roundPixels=this._renderer._roundPixels|t._roundPixels,this._gpuSpriteHash[t.uid]=r,t.on("destroyed",()=>{this.destroyRenderable(t)}),r}destroy(){for(let t in this._gpuSpriteHash)this._gpuSpriteHash[t].geometry.destroy();this._gpuSpriteHash=null,this._renderer=null}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"nineSliceSprite"}}}),init_init12=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/init.mjs"(){init_globals(),init_Extensions(),init_NineSliceSpritePipe(),extensions.add(NineSliceSpritePipe)}}),init_FilterPipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/FilterPipe.mjs"(){init_globals(),init_Extensions(),(FilterPipe=class{constructor(t){this._renderer=t}push(t,r,n){this._renderer.renderPipes.batch.break(n),n.add({renderPipeId:"filter",canBundle:!1,action:"pushFilter",container:r,filterEffect:t})}pop(t,r,n){this._renderer.renderPipes.batch.break(n),n.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}execute(t){"pushFilter"===t.action?this._renderer.filter.push(t):"popFilter"===t.action&&this._renderer.filter.pop()}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"filter"}}});function getFastGlobalBounds(t,r){return r.clear(),_getGlobalBoundsRecursive(t,r),r.isValid||r.set(0,0,0,0),t.isRenderGroupRoot?r.applyMatrix(t.renderGroup.localTransform):r.applyMatrix(t.renderGroup.worldTransform),r}function _getGlobalBoundsRecursive(t,r){if(7!==t.localDisplayStatus||!t.measurable)return;let n=!!t.effects.length,i=r;if((t.isRenderGroupRoot||n)&&(i=boundsPool.get().clear()),t.boundsArea)r.addRect(t.boundsArea,t.worldTransform);else{if(t.renderPipeId){let r=t.bounds;i.addFrame(r.minX,r.minY,r.maxX,r.maxY,t.groupTransform)}let r=t.children;for(let t=0;t<r.length;t++)_getGlobalBoundsRecursive(r[t],i)}if(n){let n=!1;for(let r=0;r<t.effects.length;r++)t.effects[r].addBounds&&(n||(n=!0,i.applyMatrix(t.renderGroup.worldTransform)),t.effects[r].addBounds(i,!0));n&&(i.applyMatrix(t.renderGroup.worldTransform.copyTo(tempMatrix4).invert()),r.addBounds(i,t.relativeGroupTransform)),r.addBounds(i),boundsPool.return(i)}else t.isRenderGroupRoot&&(r.addBounds(i,t.relativeGroupTransform),boundsPool.return(i))}var init_getFastGlobalBounds=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/bounds/getFastGlobalBounds.mjs"(){init_globals(),init_Matrix(),init_matrixAndBoundsPool(),tempMatrix4=new Matrix}});function getGlobalRenderableBounds(t,r){r.clear();let n=r.matrix;for(let n=0;n<t.length;n++){let i=t[n];i.globalDisplayStatus<7||(r.matrix=i.worldTransform,i.addBounds(r))}return r.matrix=n,r}var quadGeometry,FilterSystem,_Filter,Filter,GpuGraphicsAdaptor,textureBit,textureBitGl,GpuMeshAdapter,tempState,GpuBatchAdaptor,CustomRenderPipe,init_getRenderableBounds=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/bounds/getRenderableBounds.mjs"(){init_globals()}}),init_FilterSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/FilterSystem.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_Point(),init_BindGroup(),init_Geometry(),init_UniformGroup(),init_Texture(),init_TexturePool(),init_types2(),init_Bounds(),init_getFastGlobalBounds(),init_getRenderableBounds(),init_warn2(),quadGeometry=new Geometry({attributes:{aPosition:{buffer:new Float32Array([0,0,1,0,1,1,0,1]),location:0,format:"float32x2",stride:8,offset:0}},indexBuffer:new Uint32Array([0,1,2,0,2,3])}),(FilterSystem=class{constructor(t){this._filterStackIndex=0,this._filterStack=[],this._filterGlobalUniforms=new UniformGroup({uInputSize:{value:new Float32Array(4),type:"vec4<f32>"},uInputPixel:{value:new Float32Array(4),type:"vec4<f32>"},uInputClamp:{value:new Float32Array(4),type:"vec4<f32>"},uOutputFrame:{value:new Float32Array(4),type:"vec4<f32>"},uGlobalFrame:{value:new Float32Array(4),type:"vec4<f32>"},uOutputTexture:{value:new Float32Array(4),type:"vec4<f32>"}}),this._globalFilterBindGroup=new BindGroup({}),this.renderer=t}get activeBackTexture(){return this._activeFilterData?.backTexture}push(t){let r=this.renderer,n=t.filterEffect.filters;this._filterStack[this._filterStackIndex]||(this._filterStack[this._filterStackIndex]=this._getFilterData());let i=this._filterStack[this._filterStackIndex];if(this._filterStackIndex++,0===n.length)return void(i.skip=!0);let a=i.bounds;t.renderables?getGlobalRenderableBounds(t.renderables,a):t.filterEffect.filterArea?(a.clear(),a.addRect(t.filterEffect.filterArea),a.applyMatrix(t.container.worldTransform)):getFastGlobalBounds(t.container,a);let o=r.renderTarget.rootRenderTarget.colorTexture.source,s=o._resolution,l=0,u=o.antialias,d=!1,c=!1;for(let t=0;t<n.length;t++){let i=n[t];if(s=Math.min(s,i.resolution),l+=i.padding,"inherit"!==i.antialias&&(u="on"===i.antialias),!(i.compatibleRenderers&r.type)){c=!1;break}if(i.blendRequired&&!(r.backBuffer?.useBackBuffer??1)){warn("Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options."),c=!1;break}c=i.enabled||c,d=d||i.blendRequired}if(!c)return void(i.skip=!0);let h=r.renderTarget.rootViewPort;a.scale(s).fitBounds(0,h.width,0,h.height).scale(1/s).pad(l).ceil(),a.isPositive?(i.skip=!1,i.bounds=a,i.blendRequired=d,i.container=t.container,i.filterEffect=t.filterEffect,i.previousRenderSurface=r.renderTarget.renderSurface,i.inputTexture=TexturePool.getOptimalTexture(a.width,a.height,s,u),r.renderTarget.bind(i.inputTexture,!0),r.globalUniforms.push({offset:a})):i.skip=!0}pop(){let t=this.renderer;this._filterStackIndex--;let r=this._filterStack[this._filterStackIndex];if(r.skip)return;this._activeFilterData=r;let n=r.inputTexture,i=r.bounds,a=Texture.EMPTY;if(t.renderTarget.finishRenderPass(),r.blendRequired){let n=this._filterStackIndex>0?this._filterStack[this._filterStackIndex-1].bounds:null,o=t.renderTarget.getRenderTarget(r.previousRenderSurface);a=this.getBackTexture(o,i,n)}r.backTexture=a;let o=r.filterEffect.filters;if(this._globalFilterBindGroup.setResource(n.source.style,2),this._globalFilterBindGroup.setResource(a.source,3),t.globalUniforms.pop(),1===o.length)o[0].apply(this,n,r.previousRenderSurface,!1),TexturePool.returnTexture(n);else{let t=r.inputTexture,n=TexturePool.getOptimalTexture(i.width,i.height,t.source._resolution,!1),a=0;for(a=0;a<o.length-1;++a){o[a].apply(this,t,n,!0);let r=t;t=n,n=r}o[a].apply(this,t,r.previousRenderSurface,!1),TexturePool.returnTexture(t),TexturePool.returnTexture(n)}r.blendRequired&&TexturePool.returnTexture(a)}getBackTexture(t,r,n){let i=t.colorTexture.source._resolution,a=TexturePool.getOptimalTexture(r.width,r.height,i,!1),o=r.minX,s=r.minY;n&&(o-=n.minX,s-=n.minY),o=Math.floor(o*i),s=Math.floor(s*i);let l=Math.ceil(r.width*i),u=Math.ceil(r.height*i);return this.renderer.renderTarget.copyToTexture(t,a,{x:o,y:s},{width:l,height:u},{x:0,y:0}),a}applyFilter(t,r,n,i){let a=this.renderer,o=this._filterStack[this._filterStackIndex],s=o.bounds,l=Point.shared,u=o.previousRenderSurface===n,d=this.renderer.renderTarget.rootRenderTarget.colorTexture.source._resolution,c=this._filterStackIndex-1;for(;c>0&&this._filterStack[c].skip;)--c;c>0&&(d=this._filterStack[c].inputTexture.source._resolution);let h=this._filterGlobalUniforms,f=h.uniforms,p=f.uOutputFrame,m=f.uInputSize,g=f.uInputPixel,b=f.uInputClamp,y=f.uGlobalFrame,_=f.uOutputTexture;if(u){let t=this._filterStackIndex;for(;t>0;){t--;let r=this._filterStack[this._filterStackIndex-1];if(!r.skip){l.x=r.bounds.minX,l.y=r.bounds.minY;break}}p[0]=s.minX-l.x,p[1]=s.minY-l.y}else p[0]=0,p[1]=0;p[2]=r.frame.width,p[3]=r.frame.height,m[0]=r.source.width,m[1]=r.source.height,m[2]=1/m[0],m[3]=1/m[1],g[0]=r.source.pixelWidth,g[1]=r.source.pixelHeight,g[2]=1/g[0],g[3]=1/g[1],b[0]=.5*g[2],b[1]=.5*g[3],b[2]=r.frame.width*m[2]-.5*g[2],b[3]=r.frame.height*m[3]-.5*g[3];let v=this.renderer.renderTarget.rootRenderTarget.colorTexture;y[0]=l.x*d,y[1]=l.y*d,y[2]=v.source.width*d,y[3]=v.source.height*d;let A=this.renderer.renderTarget.getRenderTarget(n);if(a.renderTarget.bind(n,!!i),n instanceof Texture?(_[0]=n.frame.width,_[1]=n.frame.height):(_[0]=A.width,_[1]=A.height),_[2]=A.isRoot?-1:1,h.update(),a.renderPipes.uniformBatch){let t=a.renderPipes.uniformBatch.getUboResource(h);this._globalFilterBindGroup.setResource(t,0)}else this._globalFilterBindGroup.setResource(h,0);this._globalFilterBindGroup.setResource(r.source,1),this._globalFilterBindGroup.setResource(r.source.style,2),t.groups[0]=this._globalFilterBindGroup,a.encoder.draw({geometry:quadGeometry,shader:t,state:t._state,topology:"triangle-list"}),a.type===RendererType.WEBGL&&a.renderTarget.finishRenderPass()}_getFilterData(){return{skip:!1,inputTexture:null,bounds:new Bounds,container:null,filterEffect:null,blendRequired:!1,previousRenderSurface:null}}calculateSpriteMatrix(t,r){let n=this._activeFilterData,i=t.set(n.inputTexture._source.width,0,0,n.inputTexture._source.height,n.bounds.minX,n.bounds.minY),a=r.worldTransform.copyTo(Matrix.shared);return a.invert(),i.prepend(a),i.scale(1/r.texture.frame.width,1/r.texture.frame.height),i.translate(r.anchor.x,r.anchor.y),i}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem],name:"filter"}}}),init_init13=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/init.mjs"(){init_globals(),init_Extensions(),init_FilterPipe(),init_FilterSystem(),extensions.add(FilterSystem),extensions.add(FilterPipe)}}),browserAll_exports={},init_browserAll=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/environment-browser/browserAll.mjs"(){init_globals(),init_init(),init_init2(),init_init3(),init_init4(),init_init5(),init_init6(),init_init7(),init_init8(),init_init9(),init_init10(),init_init11(),init_init12(),init_init13()}}),webworkerAll_exports={},init_webworkerAll=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/environment-webworker/webworkerAll.mjs"(){init_globals(),init_init2(),init_init4(),init_init5(),init_init6(),init_init7(),init_init8(),init_init9(),init_init10(),init_init11(),init_init12(),init_init13()}}),init_Filter=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/Filter.mjs"(){init_globals(),init_GlProgram(),init_GpuProgram(),init_Shader(),init_State(),(_Filter=class t extends Shader{constructor(r){super(r={...t.defaultOptions,...r}),this.enabled=!0,this._state=State.for2d(),this.padding=r.padding,"boolean"==typeof r.antialias?this.antialias=r.antialias?"on":"off":this.antialias=r.antialias,this.resolution=r.resolution,this.blendRequired=r.blendRequired,this.addResource("uTexture",0,1)}apply(t,r,n,i){t.applyFilter(this,r,n,i)}get blendMode(){return this._state.blendMode}set blendMode(t){this._state.blendMode=t}static from(r){let n,i,{gpu:a,gl:o,...s}=r;return a&&(n=GpuProgram.from(a)),o&&(i=GlProgram.from(o)),new t({gpuProgram:n,glProgram:i,...s})}}).defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1},Filter=_Filter}}),init_GpuGraphicsAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/gpu/GpuGraphicsAdaptor.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_getTextureBatchBindGroup(),init_const5(),init_compileHighShaderToProgram(),init_colorBit(),init_generateTextureBatchBit(),init_localUniformBit(),init_roundPixelsBit(),init_Shader(),init_UniformGroup(),(GpuGraphicsAdaptor=class{init(){let t=new UniformGroup({uTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),r=compileHighShaderGpuProgram({name:"graphics",bits:[colorBit,generateTextureBatchBit(MAX_TEXTURES),localUniformBitGroup2,roundPixelsBit]});this.shader=new Shader({gpuProgram:r,resources:{localUniforms:t}})}execute(t,r){let n=r.context,i=n.customShader||this.shader,a=t.renderer,{geometry:o,instructions:s}=a.graphicsContext.getContextRenderData(n),l=a.encoder;l.setPipelineFromGeometryProgramAndState(o,i.gpuProgram,t.state),l.setGeometry(o);let u=a.globalUniforms.bindGroup;l.setBindGroup(0,u,i.gpuProgram);let d=a.renderPipes.uniformBatch.getUniformBindGroup(i.resources.localUniforms,!0);l.setBindGroup(2,d,i.gpuProgram);let c=s.instructions;for(let t=0;t<s.instructionSize;t++){let r=c[t];if(i.groups[1]=r.bindGroup,!r.gpuBindGroup){let t=r.textures;r.bindGroup=getTextureBatchBindGroup(t.textures,t.count),r.gpuBindGroup=a.bindGroup.getBindGroup(r.bindGroup,i.gpuProgram,1)}l.setBindGroup(1,r.bindGroup,i.gpuProgram),l.renderPassEncoder.drawIndexed(r.size,1,r.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}).extension={type:[ExtensionType.WebGPUPipesAdaptor],name:"graphics"}}}),init_textureBit=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/high-shader/shader-bits/textureBit.mjs"(){init_globals(),textureBit={name:"texture-bit",vertex:{header:"\n\n struct TextureUniforms {\n uTextureMatrix:mat3x3<f32>,\n }\n\n @group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;\n ",main:"\n uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;\n "},fragment:{header:"\n @group(2) @binding(0) var uTexture: texture_2d<f32>;\n @group(2) @binding(1) var uSampler: sampler;\n\n \n ",main:"\n outColor = textureSample(uTexture, uSampler, vUV);\n "}},textureBitGl={name:"texture-bit",vertex:{header:"\n uniform mat3 uTextureMatrix;\n ",main:"\n uv = (uTextureMatrix * vec3(uv, 1.0)).xy;\n "},fragment:{header:"\n uniform sampler2D uTexture;\n\n \n ",main:"\n outColor = texture(uTexture, vUV);\n "}}}}),init_GpuMeshAdapter=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/gpu/GpuMeshAdapter.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_compileHighShaderToProgram(),init_localUniformBit(),init_roundPixelsBit(),init_textureBit(),init_Shader(),init_Texture(),init_warn2(),(GpuMeshAdapter=class{init(){let t=compileHighShaderGpuProgram({name:"mesh",bits:[localUniformBit,textureBit,roundPixelsBit]});this._shader=new Shader({gpuProgram:t,resources:{uTexture:Texture.EMPTY._source,uSampler:Texture.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new Matrix}}}})}execute(t,r){let n=t.renderer,i=r._shader;if(i){if(!i.gpuProgram)return void warn("Mesh shader has no gpuProgram",r.shader)}else(i=this._shader).resources.uTexture=r.texture.source,i.resources.uSampler=r.texture.source.style,i.resources.textureUniforms.uniforms.uTextureMatrix=r.texture.textureMatrix.mapCoord;let a=i.gpuProgram;if(a.autoAssignGlobalUniforms&&(i.groups[0]=n.globalUniforms.bindGroup),a.autoAssignLocalUniforms){let r=t.localUniforms;i.groups[1]=n.renderPipes.uniformBatch.getUniformBindGroup(r,!0)}n.encoder.draw({geometry:r._geometry,shader:i,state:r.state})}destroy(){this._shader.destroy(!0),this._shader=null}}).extension={type:[ExtensionType.WebGPUPipesAdaptor],name:"mesh"}}}),init_GpuBatchAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/batcher/gpu/GpuBatchAdaptor.mjs"(){init_globals(),init_Extensions(),init_compileHighShaderToProgram(),init_colorBit(),init_generateTextureBatchBit(),init_roundPixelsBit(),init_Shader(),init_State(),init_const5(),init_getTextureBatchBindGroup(),tempState=State.for2d(),(GpuBatchAdaptor=class{init(){let t=compileHighShaderGpuProgram({name:"batch",bits:[colorBit,generateTextureBatchBit(MAX_TEXTURES),roundPixelsBit]});this._shader=new Shader({gpuProgram:t,groups:{}})}start(t,r){let n=t.renderer,i=n.encoder,a=this._shader.gpuProgram;this._geometry=r,i.setGeometry(r),tempState.blendMode="normal",n.pipeline.getPipeline(r,a,tempState);let o=n.globalUniforms.bindGroup;i.resetBindGroup(1),i.setBindGroup(0,o,a)}execute(t,r){let n=this._shader.gpuProgram,i=t.renderer,a=i.encoder;if(!r.bindGroup){let t=r.textures;r.bindGroup=getTextureBatchBindGroup(t.textures,t.count)}tempState.blendMode=r.blendMode;let o=i.bindGroup.getBindGroup(r.bindGroup,n,1),s=i.pipeline.getPipeline(this._geometry,n,tempState);r.bindGroup._touch(i.textureGC.count),a.setPipeline(s),a.renderPassEncoder.setBindGroup(1,o),a.renderPassEncoder.drawIndexed(r.size,1,r.start)}destroy(){this._shader.destroy(!0),this._shader=null}}).extension={type:[ExtensionType.WebGPUPipesAdaptor],name:"batch"}}}),init_CustomRenderPipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/CustomRenderPipe.mjs"(){init_globals(),init_Extensions(),(CustomRenderPipe=class{constructor(t){this._renderer=t}addRenderable(t,r){this._renderer.renderPipes.batch.break(r),r.add(t)}execute(t){t.isRenderable&&t.render(this._renderer)}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"customRender"}}});function executeInstructions(t,r){let n=t.instructionSet,i=n.instructions;for(let t=0;t<n.instructionSize;t++){let n=i[t];r[n.renderPipeId].execute(n)}}var RenderGroupPipe,init_executeInstructions=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/executeInstructions.mjs"(){init_globals()}}),init_RenderGroupPipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/RenderGroupPipe.mjs"(){init_globals(),init_Extensions(),init_executeInstructions(),(RenderGroupPipe=class{constructor(t){this._renderer=t}addRenderGroup(t,r){this._renderer.renderPipes.batch.break(r),r.add(t)}execute(t){t.isRenderable&&(this._renderer.globalUniforms.push({worldTransformMatrix:t.worldTransform,worldColor:t.worldColorAlpha}),executeInstructions(t,this._renderer.renderPipes),this._renderer.globalUniforms.pop())}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"renderGroup"}}});function buildInstructions(t,r){let n=t.root,i=t.instructionSet;i.reset(),r.batch.buildStart(i),r.blendMode.buildStart(),r.colorMask.buildStart(),n.sortableChildren&&n.sortChildren(),collectAllRenderablesAdvanced(n,i,r,!0),r.batch.buildEnd(i),r.blendMode.buildEnd(i)}function collectAllRenderables(t,r,n){t.globalDisplayStatus<7||!t.includeInBuild||(t.sortableChildren&&t.sortChildren(),t.isSimple?collectAllRenderablesSimple(t,r,n):collectAllRenderablesAdvanced(t,r,n,!1))}function collectAllRenderablesSimple(t,r,n){if(t.renderPipeId&&(n.blendMode.setBlendMode(t,t.groupBlendMode,r),t.didViewUpdate=!1,n[t.renderPipeId].addRenderable(t,r)),!t.isRenderGroupRoot){let i=t.children,a=i.length;for(let t=0;t<a;t++)collectAllRenderables(i[t],r,n)}}function collectAllRenderablesAdvanced(t,r,n,i){if(!i&&t.isRenderGroupRoot)n.renderGroup.addRenderGroup(t.renderGroup,r);else{for(let i=0;i<t.effects.length;i++){let a=t.effects[i];n[a.pipe].push(a,t,r)}let i=t.renderPipeId;i&&(n.blendMode.setBlendMode(t,t.groupBlendMode,r),t.didViewUpdate=!1,n[i].addRenderable(t,r));let a=t.children;if(a.length)for(let t=0;t<a.length;t++)collectAllRenderables(a[t],r,n);for(let i=t.effects.length-1;i>=0;i--){let a=t.effects[i];n[a.pipe].pop(a,t,r)}}}var init_buildInstructions=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/buildInstructions.mjs"(){init_globals()}});function collectRenderGroups(t,r=[]){r.push(t);for(let n=0;n<t.renderGroupChildren.length;n++)collectRenderGroups(t.renderGroupChildren[n],r);return r}var init_collectRenderGroups=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/collectRenderGroups.mjs"(){init_globals()}});function mixHexColors(t,r,n){let i=t>>16&255,a=t>>8&255,o=255&t;return(i+((r>>16&255)-i)*n<<16)+(a+((r>>8&255)-a)*n<<8)+(o+((255&r)-o)*n)}var WHITE_BGR,init_mixHexColors=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/mixHexColors.mjs"(){init_globals()}});function mixColors(t,r){return t===WHITE_BGR||r===WHITE_BGR?t+r-WHITE_BGR:mixHexColors(t,r,.5)}var tempContainer,init_mixColors=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/mixColors.mjs"(){init_globals(),init_mixHexColors(),WHITE_BGR=0xffffff}});function updateRenderGroupTransforms(t,r=!1){updateRenderGroupTransform(t);let n=t.childrenToUpdate,i=t.updateTick;for(let r in t.updateTick++,n){let t=n[r],a=t.list,o=t.index;for(let t=0;t<o;t++)updateTransformAndChildren(a[t],i,0);t.index=0}if(r)for(let n=0;n<t.renderGroupChildren.length;n++)updateRenderGroupTransforms(t.renderGroupChildren[n],r)}function updateRenderGroupTransform(t){let r,n=t.root;if(t.renderGroupParent){let i=t.renderGroupParent;t.worldTransform.appendFrom(n.relativeGroupTransform,i.worldTransform),t.worldColor=mixColors(n.groupColor,i.worldColor),r=n.groupAlpha*i.worldAlpha}else t.worldTransform.copyFrom(n.localTransform),t.worldColor=n.localColor,r=n.localAlpha;t.worldAlpha=r=r<0?0:r>1?1:r,t.worldColorAlpha=t.worldColor+(255*r<<24)}function updateTransformAndChildren(t,r,n){if(r===t.updateTick)return;t.updateTick=r,t.didChange=!1;let i=t.localTransform;t.updateLocalTransform();let a=t.parent;if(a&&!a.isRenderGroupRoot?(n|=t._updateFlags,t.relativeGroupTransform.appendFrom(i,a.relativeGroupTransform),n&&updateColorBlendVisibility(t,a,n)):(n=t._updateFlags,t.relativeGroupTransform.copyFrom(i),n&&updateColorBlendVisibility(t,tempContainer,n)),!t.isRenderGroupRoot){let i=t.children,a=i.length;for(let t=0;t<a;t++)updateTransformAndChildren(i[t],r,n);let o=t.renderGroup;t.renderPipeId&&!o.structureDidChange&&o.updateRenderable(t)}}function updateColorBlendVisibility(t,r,n){if(n&UPDATE_COLOR){t.groupColor=mixColors(t.localColor,r.groupColor);let n=t.localAlpha*r.groupAlpha;t.groupAlpha=n=n<0?0:n>1?1:n,t.groupColorAlpha=t.groupColor+(255*n<<24)}n&UPDATE_BLEND&&(t.groupBlendMode="inherit"===t.localBlendMode?r.groupBlendMode:t.localBlendMode),n&UPDATE_VISIBLE&&(t.globalDisplayStatus=t.localDisplayStatus&r.globalDisplayStatus),t._updateFlags=0}var init_updateRenderGroupTransforms=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/updateRenderGroupTransforms.mjs"(){init_globals(),init_Container(),init_mixColors(),tempContainer=new Container}});function validateRenderables(t,r){let{list:n,index:i}=t.childrenRenderablesToUpdate,a=!1;for(let t=0;t<i;t++){let i=n[t];if(a=r[i.renderPipeId].validateRenderable(i))break}return t.structureDidChange=a,a}var tempMatrix5,RenderGroupSystem,init_validateRenderables=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/utils/validateRenderables.mjs"(){init_globals()}});function updateRenderables(t){let{list:r,index:n}=t.childrenRenderablesToUpdate;for(let i=0;i<n;i++){let n=r[i];n.didViewUpdate&&t.updateRenderable(n)}}var SpritePipe,BatcherPipe,fragment,vertex,source,MaskFilter,tempBounds3,AlphaMaskEffect,AlphaMaskPipe,ColorMaskPipe,StencilMaskPipe,_BackgroundSystem,BackgroundSystem,BLEND_MODE_FILTERS,BlendModePipe,imageTypes,_ExtractSystem,ExtractSystem,RenderTexture,tempRect2,tempBounds4,noColor,GenerateTextureSystem,GlobalUniformSystem,saidHello,VERSION,init_RenderGroupSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/RenderGroupSystem.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_buildInstructions(),init_collectRenderGroups(),init_executeInstructions(),init_updateRenderGroupTransforms(),init_validateRenderables(),tempMatrix5=new Matrix,(RenderGroupSystem=class{constructor(t){this._renderer=t}render({container:t,transform:r}){t.isRenderGroup=!0;let n=t.parent,i=t.renderGroup.renderGroupParent;t.parent=null,t.renderGroup.renderGroupParent=null;let a=this._renderer,o=collectRenderGroups(t.renderGroup,[]),s=tempMatrix5;r&&(s=s.copyFrom(t.renderGroup.localTransform),t.renderGroup.localTransform.copyFrom(r));let l=a.renderPipes;for(let t=0;t<o.length;t++){let r=o[t];r.runOnRender(),r.instructionSet.renderPipes=l,r.structureDidChange||validateRenderables(r,l),updateRenderGroupTransforms(r),r.structureDidChange?(r.structureDidChange=!1,buildInstructions(r,l)):updateRenderables(r),r.childrenRenderablesToUpdate.index=0,a.renderPipes.batch.upload(r.instructionSet)}a.globalUniforms.start({worldTransformMatrix:r?t.renderGroup.localTransform:t.renderGroup.worldTransform,worldColor:t.renderGroup.worldColorAlpha}),executeInstructions(t.renderGroup,l),l.uniformBatch&&l.uniformBatch.renderEnd(),r&&t.renderGroup.localTransform.copyFrom(s),t.parent=n,t.renderGroup.renderGroupParent=i}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem,ExtensionType.CanvasSystem],name:"renderGroup"}}}),init_SpritePipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite/SpritePipe.mjs"(){init_globals(),init_Extensions(),init_PoolGroup(),init_BatchableSprite(),(SpritePipe=class{constructor(t){this._gpuSpriteHash=Object.create(null),this._renderer=t}addRenderable(t,r){let n=this._getGpuSprite(t);t._didSpriteUpdate&&this._updateBatchableSprite(t,n),this._renderer.renderPipes.batch.addToBatch(n)}updateRenderable(t){let r=this._gpuSpriteHash[t.uid];t._didSpriteUpdate&&this._updateBatchableSprite(t,r),r.batcher.updateElement(r)}validateRenderable(t){let r=t._texture,n=this._getGpuSprite(t);return n.texture._source!==r._source&&!n.batcher.checkAndUpdateTexture(n,r)}destroyRenderable(t){let r=this._gpuSpriteHash[t.uid];BigPool.return(r),this._gpuSpriteHash[t.uid]=null}_updateBatchableSprite(t,r){t._didSpriteUpdate=!1,r.bounds=t.bounds,r.texture=t._texture}_getGpuSprite(t){return this._gpuSpriteHash[t.uid]||this._initGPUSprite(t)}_initGPUSprite(t){let r=BigPool.get(BatchableSprite);return r.renderable=t,r.texture=t._texture,r.bounds=t.bounds,r.roundPixels=this._renderer._roundPixels|t._roundPixels,this._gpuSpriteHash[t.uid]=r,t._didSpriteUpdate=!1,t.on("destroyed",()=>{this.destroyRenderable(t)}),r}destroy(){for(let t in this._gpuSpriteHash)BigPool.return(this._gpuSpriteHash[t]);this._gpuSpriteHash=null,this._renderer=null}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"sprite"}}}),init_BatcherPipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/batcher/shared/BatcherPipe.mjs"(){init_globals(),init_Extensions(),init_State(),init_BatchGeometry(),init_Batcher(),(BatcherPipe=class{constructor(t,r){this.state=State.for2d(),this._batches=Object.create(null),this._geometries=Object.create(null),this.renderer=t,this._adaptor=r,this._adaptor.init(this)}buildStart(t){if(!this._batches[t.uid]){let r=new Batcher;this._batches[t.uid]=r,this._geometries[r.uid]=new BatchGeometry}this._activeBatch=this._batches[t.uid],this._activeGeometry=this._geometries[this._activeBatch.uid],this._activeBatch.begin()}addToBatch(t){this._activeBatch.add(t)}break(t){this._activeBatch.break(t)}buildEnd(t){let r=this._activeBatch,n=this._activeGeometry;r.finish(t),n.indexBuffer.setDataWithSize(r.indexBuffer,r.indexSize,!0),n.buffers[0].setDataWithSize(r.attributeBuffer.float32View,r.attributeSize,!1)}upload(t){let r=this._batches[t.uid],n=this._geometries[r.uid];r.dirty&&(r.dirty=!1,n.buffers[0].update(4*r.attributeSize))}execute(t){if("startBatch"===t.action){let r=t.batcher,n=this._geometries[r.uid];this._adaptor.start(this,n)}this._adaptor.execute(this,t)}destroy(){for(let t in this.state=null,this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this._batches)this._batches[t].destroy();for(let t in this._batches=null,this._geometries)this._geometries[t].destroy();this._geometries=null}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"batch"}}}),init_mask_frag=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/mask.frag.mjs"(){init_globals(),fragment="in vec2 vMaskCoord;\nin vec2 vTextureCoord;\n\nuniform sampler2D uTexture;\nuniform sampler2D uMaskTexture;\n\nuniform float uAlpha;\nuniform vec4 uMaskClamp;\n\nout vec4 finalColor;\n\nvoid main(void)\n{\n float clip = step(3.5,\n step(uMaskClamp.x, vMaskCoord.x) +\n step(uMaskClamp.y, vMaskCoord.y) +\n step(vMaskCoord.x, uMaskClamp.z) +\n step(vMaskCoord.y, uMaskClamp.w));\n\n // TODO look into why this is needed\n float npmAlpha = uAlpha; \n vec4 original = texture(uTexture, vTextureCoord);\n vec4 masky = texture(uMaskTexture, vMaskCoord);\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\n\n original *= (alphaMul * masky.r * uAlpha * clip);\n\n finalColor = original;\n}\n"}}),init_mask_vert=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/mask.vert.mjs"(){init_globals(),vertex="in vec2 aPosition;\n\nout vec2 vTextureCoord;\nout vec2 vMaskCoord;\n\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\nuniform mat3 uFilterMatrix;\n\nvec4 filterVertexPosition( vec2 aPosition )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( vec2 aPosition )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvec2 getFilterCoord( vec2 aPosition )\n{\n return ( uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;\n} \n\nvoid main(void)\n{\n gl_Position = filterVertexPosition(aPosition);\n vTextureCoord = filterTextureCoord(aPosition);\n vMaskCoord = getFilterCoord(aPosition);\n}\n"}}),init_mask_wgsl=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/mask.wgsl.mjs"(){init_globals(),source="struct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>, \n};\n\nstruct MaskUniforms {\n uFilterMatrix:mat3x3<f32>,\n uMaskClamp:vec4<f32>,\n uAlpha:f32,\n};\n\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n\n@group(1) @binding(0) var<uniform> filterUniforms : MaskUniforms;\n@group(1) @binding(1) var uMaskTexture: texture_2d<f32>;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n @location(1) filterUv : vec2<f32>,\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getFilterCoord(aPosition:vec2<f32> ) -> vec2<f32>\n{\n return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;\n}\n\nfn getSize() -> vec2<f32>\n{\n\n \n return gfu.uGlobalFrame.zw;\n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition),\n getFilterCoord(aPosition)\n );\n}\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @location(1) filterUv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n\n var maskClamp = filterUniforms.uMaskClamp;\n\n var clip = step(3.5,\n step(maskClamp.x, filterUv.x) +\n step(maskClamp.y, filterUv.y) +\n step(filterUv.x, maskClamp.z) +\n step(filterUv.y, maskClamp.w));\n\n var mask = textureSample(uMaskTexture, uSampler, filterUv);\n var source = textureSample(uTexture, uSampler, uv);\n \n var npmAlpha = 0.0;\n\n var alphaMul = 1.0 - npmAlpha * (1.0 - mask.a);\n\n var a = (alphaMul * mask.r) * clip;\n\n return vec4(source.rgb, source.a) * a;\n}"}}),init_MaskFilter=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/mask/MaskFilter.mjs"(){init_globals(),init_Matrix(),init_GlProgram(),init_GpuProgram(),init_UniformGroup(),init_TextureMatrix(),init_Filter(),init_mask_frag(),init_mask_vert(),init_mask_wgsl(),MaskFilter=class extends Filter{constructor(t){let{sprite:r,...n}=t,i=new TextureMatrix(r.texture);super({...n,gpuProgram:GpuProgram.from({vertex:{source:source,entryPoint:"mainVertex"},fragment:{source:source,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex,fragment:fragment,name:"mask-filter"}),resources:{filterUniforms:new UniformGroup({uFilterMatrix:{value:new Matrix,type:"mat3x3<f32>"},uMaskClamp:{value:i.uClampFrame,type:"vec4<f32>"},uAlpha:{value:1,type:"f32"}}),uMaskTexture:r.texture.source}}),this.sprite=r,this._textureMatrix=i}apply(t,r,n,i){this._textureMatrix.texture=this.sprite.texture,t.calculateSpriteMatrix(this.resources.filterUniforms.uniforms.uFilterMatrix,this.sprite).prepend(this._textureMatrix.mapCoord),this.resources.uMaskTexture=this.sprite.texture.source,t.applyFilter(this,r,n,i)}}}}),init_AlphaMaskPipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/mask/alpha/AlphaMaskPipe.mjs"(){init_globals(),init_Extensions(),init_FilterEffect(),init_MaskFilter(),init_Bounds(),init_getGlobalBounds(),init_buildInstructions(),init_Sprite(),init_PoolGroup(),init_Texture(),init_TexturePool(),tempBounds3=new Bounds,AlphaMaskEffect=class extends FilterEffect{constructor(){super({filters:[new MaskFilter({sprite:new Sprite(Texture.EMPTY)})]})}get sprite(){return this.filters[0].sprite}set sprite(t){this.filters[0].sprite=t}},(AlphaMaskPipe=class{constructor(t){this._activeMaskStage=[],this._renderer=t}push(t,r,n){let i=this._renderer;if(i.renderPipes.batch.break(n),n.add({renderPipeId:"alphaMask",action:"pushMaskBegin",mask:t,canBundle:!1,maskedContainer:r}),t.renderMaskToTexture){let r=t.mask;r.includeInBuild=!0,collectAllRenderables(r,n,i.renderPipes),r.includeInBuild=!1}i.renderPipes.batch.break(n),n.add({renderPipeId:"alphaMask",action:"pushMaskEnd",mask:t,maskedContainer:r,canBundle:!1})}pop(t,r,n){this._renderer.renderPipes.batch.break(n),n.add({renderPipeId:"alphaMask",action:"popMaskEnd",mask:t,canBundle:!1})}execute(t){let r=this._renderer,n=t.mask.renderMaskToTexture;if("pushMaskBegin"===t.action){let i=BigPool.get(AlphaMaskEffect);if(n){t.mask.mask.measurable=!0;let n=getGlobalBounds(t.mask.mask,!0,tempBounds3);t.mask.mask.measurable=!1,n.ceil();let a=TexturePool.getOptimalTexture(n.width,n.height,1,!1);r.renderTarget.push(a,!0),r.globalUniforms.push({offset:n,worldColor:0xffffffff});let o=i.sprite;o.texture=a,o.worldTransform.tx=n.minX,o.worldTransform.ty=n.minY,this._activeMaskStage.push({filterEffect:i,maskedContainer:t.maskedContainer,filterTexture:a})}else i.sprite=t.mask.mask,this._activeMaskStage.push({filterEffect:i,maskedContainer:t.maskedContainer})}else if("pushMaskEnd"===t.action){let t=this._activeMaskStage[this._activeMaskStage.length-1];n&&(r.renderTarget.pop(),r.globalUniforms.pop()),r.filter.push({renderPipeId:"filter",action:"pushFilter",container:t.maskedContainer,filterEffect:t.filterEffect,canBundle:!1})}else if("popMaskEnd"===t.action){r.filter.pop();let t=this._activeMaskStage.pop();n&&TexturePool.returnTexture(t.filterTexture),BigPool.return(t.filterEffect)}}destroy(){this._renderer=null,this._activeMaskStage=null}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"alphaMask"}}}),init_ColorMaskPipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/mask/color/ColorMaskPipe.mjs"(){init_globals(),init_Extensions(),(ColorMaskPipe=class{constructor(t){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=t}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(t,r,n){this._renderer.renderPipes.batch.break(n);let i=this._colorStack;i[this._colorStackIndex]=i[this._colorStackIndex-1]&t.mask;let a=this._colorStack[this._colorStackIndex];a!==this._currentColor&&(this._currentColor=a,n.add({renderPipeId:"colorMask",colorMask:a,canBundle:!1})),this._colorStackIndex++}pop(t,r,n){this._renderer.renderPipes.batch.break(n);let i=this._colorStack;this._colorStackIndex--;let a=i[this._colorStackIndex-1];a!==this._currentColor&&(this._currentColor=a,n.add({renderPipeId:"colorMask",colorMask:a,canBundle:!1}))}execute(t){this._renderer.colorMask.setMask(t.colorMask)}destroy(){this._colorStack=null}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"colorMask"}}}),init_StencilMaskPipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/mask/stencil/StencilMaskPipe.mjs"(){init_globals(),init_Extensions(),init_buildInstructions(),init_const3(),init_const6(),(StencilMaskPipe=class{constructor(t){this._maskStackHash={},this._maskHash=new WeakMap,this._renderer=t}push(t,r,n){var i;let a=t,o=this._renderer;o.renderPipes.batch.break(n),o.renderPipes.blendMode.setBlendMode(a.mask,"none",n),n.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:t,canBundle:!1});let s=a.mask;s.includeInBuild=!0,this._maskHash.has(a)||this._maskHash.set(a,{instructionsStart:0,instructionsLength:0});let l=this._maskHash.get(a);l.instructionsStart=n.instructionSize,collectAllRenderables(s,n,o.renderPipes),s.includeInBuild=!1,o.renderPipes.batch.break(n),n.add({renderPipeId:"stencilMask",action:"pushMaskEnd",mask:t,canBundle:!1});let u=n.instructionSize-l.instructionsStart-1;l.instructionsLength=u;let d=o.renderTarget.renderTarget.uid;(i=this._maskStackHash)[d]??(i[d]=0)}pop(t,r,n){let i=t,a=this._renderer;a.renderPipes.batch.break(n),a.renderPipes.blendMode.setBlendMode(i.mask,"none",n),n.add({renderPipeId:"stencilMask",action:"popMaskBegin",canBundle:!1});let o=this._maskHash.get(t);for(let t=0;t<o.instructionsLength;t++)n.instructions[n.instructionSize++]=n.instructions[o.instructionsStart++];n.add({renderPipeId:"stencilMask",action:"popMaskEnd",canBundle:!1})}execute(t){var r;let n=this._renderer,i=n.renderTarget.renderTarget.uid,a=(r=this._maskStackHash)[i]??(r[i]=0);"pushMaskBegin"===t.action?(n.renderTarget.ensureDepthStencil(),n.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_ADD,a),a++,n.colorMask.setMask(0)):"pushMaskEnd"===t.action?(n.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE,a),n.colorMask.setMask(15)):"popMaskBegin"===t.action?(n.colorMask.setMask(0),0!==a?n.stencil.setStencilMode(STENCIL_MODES.RENDERING_MASK_REMOVE,a):(n.renderTarget.clear(null,CLEAR.STENCIL),n.stencil.setStencilMode(STENCIL_MODES.DISABLED,a)),a--):"popMaskEnd"===t.action&&(n.stencil.setStencilMode(STENCIL_MODES.MASK_ACTIVE,a),n.colorMask.setMask(15)),this._maskStackHash[i]=a}destroy(){this._renderer=null,this._maskStackHash=null,this._maskHash=null}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"stencilMask"}}}),init_BackgroundSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/background/BackgroundSystem.mjs"(){init_globals(),init_Color(),init_Extensions(),(_BackgroundSystem=class t{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new Color(0),this.color=this._backgroundColor,this.alpha=1}init(r){r={...t.defaultOptions,...r},this.clearBeforeRender=r.clearBeforeRender,this.color=r.background||r.backgroundColor||this._backgroundColor,this.alpha=r.backgroundAlpha,this._backgroundColor.setAlpha(r.backgroundAlpha)}get color(){return this._backgroundColor}set color(t){this._backgroundColor.setValue(t)}get alpha(){return this._backgroundColor.alpha}set alpha(t){this._backgroundColor.setAlpha(t)}get colorRgba(){return this._backgroundColor.toArray()}destroy(){}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem,ExtensionType.CanvasSystem],name:"background",priority:0},_BackgroundSystem.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0},BackgroundSystem=_BackgroundSystem}}),init_BlendModePipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/blendModes/BlendModePipe.mjs"(){init_globals(),init_Extensions(),init_FilterEffect(),init_warn2(),BLEND_MODE_FILTERS={},extensions.handle(ExtensionType.BlendMode,t=>{if(!t.name)throw Error("BlendMode extension must have a name property");BLEND_MODE_FILTERS[t.name]=t.ref},t=>{delete BLEND_MODE_FILTERS[t.name]}),(BlendModePipe=class{constructor(t){this._isAdvanced=!1,this._filterHash=Object.create(null),this._renderer=t}setBlendMode(t,r,n){this._activeBlendMode!==r?(this._activeBlendMode=r,this._isAdvanced&&this._endAdvancedBlendMode(n),this._isAdvanced=!!BLEND_MODE_FILTERS[r],this._isAdvanced&&(this._beginAdvancedBlendMode(n),this._renderableList.push(t))):this._isAdvanced&&this._renderableList.push(t)}_beginAdvancedBlendMode(t){this._renderer.renderPipes.batch.break(t);let r=this._activeBlendMode;if(!BLEND_MODE_FILTERS[r])return void warn(`Unable to assign BlendMode: '${r}'. You may want to include: import 'pixi.js/advanced-blend-modes'`);this._filterHash[r]||(this._filterHash[r]=new FilterEffect({filters:[new BLEND_MODE_FILTERS[r]]}));let n={renderPipeId:"filter",action:"pushFilter",renderables:[],filterEffect:this._filterHash[r],canBundle:!1};this._renderableList=n.renderables,t.add(n)}_endAdvancedBlendMode(t){this._renderableList=null,this._renderer.renderPipes.batch.break(t),t.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}buildStart(){this._isAdvanced=!1}buildEnd(t){this._isAdvanced&&this._endAdvancedBlendMode(t)}destroy(){for(let t in this._renderer=null,this._renderableList=null,this._filterHash)this._filterHash[t].destroy();this._filterHash=null}}).extension={type:[ExtensionType.WebGLPipes,ExtensionType.WebGPUPipes,ExtensionType.CanvasPipes],name:"blendMode"}}}),init_ExtractSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/extract/ExtractSystem.mjs"(){init_globals(),init_Extensions(),init_Container(),init_Texture(),imageTypes={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},(_ExtractSystem=class t{constructor(t){this._renderer=t}_normalizeOptions(t,r={}){return t instanceof Container||t instanceof Texture?{target:t,...r}:{...r,...t}}async image(t){let r=new Image;return r.src=await this.base64(t),r}async base64(r){let{format:n,quality:i}=r=this._normalizeOptions(r,t.defaultImageOptions),a=this.canvas(r);if(void 0!==a.toBlob)return new Promise((t,r)=>{a.toBlob(n=>{if(!n)return void r(Error("ICanvas.toBlob failed!"));let i=new FileReader;i.onload=()=>t(i.result),i.onerror=r,i.readAsDataURL(n)},imageTypes[n],i)});if(void 0!==a.toDataURL)return a.toDataURL(imageTypes[n],i);if(void 0!==a.convertToBlob){let t=await a.convertToBlob({type:imageTypes[n],quality:i});return new Promise((r,n)=>{let i=new FileReader;i.onload=()=>r(i.result),i.onerror=n,i.readAsDataURL(t)})}throw Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(t){let r=(t=this._normalizeOptions(t)).target,n=this._renderer;if(r instanceof Texture)return n.texture.generateCanvas(r);let i=n.textureGenerator.generateTexture(t),a=n.texture.generateCanvas(i);return i.destroy(),a}pixels(t){let r=(t=this._normalizeOptions(t)).target,n=this._renderer,i=r instanceof Texture?r:n.textureGenerator.generateTexture(t),a=n.texture.getPixels(i);return r instanceof Container&&i.destroy(),a}texture(t){return(t=this._normalizeOptions(t)).target instanceof Texture?t.target:this._renderer.textureGenerator.generateTexture(t)}download(t){t=this._normalizeOptions(t);let r=this.canvas(t),n=document.createElement("a");n.download=t.filename??"image.png",n.href=r.toDataURL("image/png"),document.body.appendChild(n),n.click(),document.body.removeChild(n)}log(t){let r=t.width??200;t=this._normalizeOptions(t);let n=this.canvas(t),i=n.toDataURL();import_console_browserify.default.log(`[Pixi Texture] ${n.width}px ${n.height}px`);let a=`font-size: 1px; padding: ${r}px 300px; background: url(${i}) no-repeat; background-size: contain;`;import_console_browserify.default.log("%c ",a)}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem],name:"extract"},_ExtractSystem.defaultImageOptions={format:"png",quality:1},ExtractSystem=_ExtractSystem}}),init_RenderTexture=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/RenderTexture.mjs"(){init_globals(),init_TextureSource(),init_Texture(),RenderTexture=class extends Texture{static create(t){return new Texture({source:new TextureSource(t)})}resize(t,r,n){return this.source.resize(t,r,n),this}}}}),init_GenerateTextureSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/extract/GenerateTextureSystem.mjs"(){init_globals(),init_Color(),init_Extensions(),init_Matrix(),init_Rectangle(),init_Bounds(),init_getLocalBounds(),init_Container(),init_RenderTexture(),tempRect2=new Rectangle,tempBounds4=new Bounds,noColor=[0,0,0,0],(GenerateTextureSystem=class{constructor(t){this._renderer=t}generateTexture(t){t instanceof Container&&(t={target:t,frame:void 0,textureSourceOptions:{},resolution:void 0});let r=t.resolution||this._renderer.resolution,n=t.antialias||this._renderer.view.antialias,i=t.target,a=t.clearColor;a=a?Array.isArray(a)&&4===a.length?a:Color.shared.setValue(a).toArray():noColor;let o=t.frame?.copyTo(tempRect2)||getLocalBounds(i,tempBounds4).rectangle;o.width=0|Math.max(o.width,1/r),o.height=0|Math.max(o.height,1/r);let s=RenderTexture.create({...t.textureSourceOptions,width:o.width,height:o.height,resolution:r,antialias:n}),l=Matrix.shared.translate(-o.x,-o.y);return this._renderer.render({container:i,transform:l,target:s,clearColor:a}),s}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem],name:"textureGenerator"}}}),init_GlobalUniformSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/GlobalUniformSystem.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_Point(),init_colorToUniform(),init_BindGroup(),init_types2(),init_UniformGroup(),(GlobalUniformSystem=class{constructor(t){this._stackIndex=0,this._globalUniformDataStack=[],this._uniformsPool=[],this._activeUniforms=[],this._bindGroupPool=[],this._activeBindGroups=[],this._renderer=t}reset(){this._stackIndex=0;for(let t=0;t<this._activeUniforms.length;t++)this._uniformsPool.push(this._activeUniforms[t]);for(let t=0;t<this._activeBindGroups.length;t++)this._bindGroupPool.push(this._activeBindGroups[t]);this._activeUniforms.length=0,this._activeBindGroups.length=0}start(t){this.reset(),this.push(t)}bind({size:t,projectionMatrix:r,worldTransformMatrix:n,worldColor:i,offset:a}){let o,s=this._renderer.renderTarget.renderTarget,l=this._stackIndex?this._globalUniformDataStack[this._stackIndex-1]:{projectionData:s,worldTransformMatrix:new Matrix,worldColor:0xffffffff,offset:new Point},u={projectionMatrix:r||this._renderer.renderTarget.projectionMatrix,resolution:t||s.size,worldTransformMatrix:n||l.worldTransformMatrix,worldColor:i||l.worldColor,offset:a||l.offset,bindGroup:null},d=this._uniformsPool.pop()||this._createUniforms();this._activeUniforms.push(d);let c=d.uniforms;c.uProjectionMatrix=u.projectionMatrix,c.uResolution=u.resolution,c.uWorldTransformMatrix.copyFrom(u.worldTransformMatrix),c.uWorldTransformMatrix.tx-=u.offset.x,c.uWorldTransformMatrix.ty-=u.offset.y,color32BitToUniform(u.worldColor,c.uWorldColorAlpha,0),d.update(),this._renderer.renderPipes.uniformBatch?o=this._renderer.renderPipes.uniformBatch.getUniformBindGroup(d,!1):(o=this._bindGroupPool.pop()||new BindGroup,this._activeBindGroups.push(o),o.setResource(d,0)),u.bindGroup=o,this._currentGlobalUniformData=u}push(t){this.bind(t),this._globalUniformDataStack[this._stackIndex++]=this._currentGlobalUniformData}pop(){this._currentGlobalUniformData=this._globalUniformDataStack[--this._stackIndex-1],this._renderer.type===RendererType.WEBGL&&this._currentGlobalUniformData.bindGroup.resources[0].update()}get bindGroup(){return this._currentGlobalUniformData.bindGroup}get uniformGroup(){return this._currentGlobalUniformData.bindGroup.resources[0]}_createUniforms(){return new UniformGroup({uProjectionMatrix:{value:new Matrix,type:"mat3x3<f32>"},uWorldTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uWorldColorAlpha:{value:new Float32Array(4),type:"vec4<f32>"},uResolution:{value:[0,0],type:"vec2<f32>"}},{isStatic:!0})}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem,ExtensionType.CanvasSystem],name:"globalUniforms"}}});function sayHello(t){if(!saidHello){if(DOMAdapter.get().getNavigator().userAgent.toLowerCase().indexOf("chrome")>-1){let r=[`%c %c %c %c %c PixiJS %c v${VERSION} (${t}) http://www.pixijs.com/
|
|
904
904
|
|
|
905
|
-
`,"background: #E72264; padding:5px 0;","background: #6CA2EA; padding:5px 0;","background: #B5D33D; padding:5px 0;","background: #FED23F; padding:5px 0;","color: #FFFFFF; background: #E72264; padding:5px 0;","color: #E72264; background: #FFFFFF; padding:5px 0;"];globalThis.console.log(...r)}else globalThis.console&&globalThis.console.log(`PixiJS ${VERSION} - ${t} - http://www.pixijs.com/`);saidHello=!0}}var HelloSystem,_TextureGCSystem,TextureGCSystem,_RenderTarget,RenderTarget,canvasCache,init_sayHello=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/sayHello.mjs"(){init_globals(),init_adapter(),saidHello=!1,VERSION="8.1.1"}}),init_HelloSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/startup/HelloSystem.mjs"(){init_globals(),init_Extensions(),init_sayHello(),init_types2(),(HelloSystem=class{constructor(t){this._renderer=t}init(t){if(t.hello){let t=this._renderer.name;this._renderer.type===RendererType.WEBGL&&(t+=` ${this._renderer.context.webGLVersion}`),sayHello(t)}}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem,ExtensionType.CanvasSystem],name:"hello",priority:-2},HelloSystem.defaultOptions={hello:!1}}}),init_TextureGCSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureGCSystem.mjs"(){init_globals(),init_Extensions(),(_TextureGCSystem=class t{constructor(t){this._renderer=t,this.count=0,this.checkCount=0}init(r){r={...t.defaultOptions,...r},this.checkCountMax=r.textureGCCheckCountMax,this.maxIdle=r.textureGCAMaxIdle,this.active=r.textureGCActive}postrender(){this._renderer.renderingToScreen&&(this.count++,this.active&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){let t=this._renderer.texture.managedTextures;for(let r=0;r<t.length;r++){let n=t[r];n.autoGarbageCollect&&n.resource&&n._touched>-1&&this.count-n._touched>this.maxIdle&&(n._touched=-1,n.unload())}}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem],name:"textureGC"},_TextureGCSystem.defaultOptions={textureGCActive:!0,textureGCAMaxIdle:3600,textureGCCheckCountMax:600},TextureGCSystem=_TextureGCSystem,extensions.add(TextureGCSystem)}}),init_RenderTarget=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTarget.mjs"(){init_globals(),init_uid(),init_TextureSource(),init_Texture(),(_RenderTarget=class t{constructor(r={}){if(this.uid=uid("renderTarget"),this.colorTextures=[],this.dirtyId=0,this.isRoot=!1,this._size=new Float32Array(2),this._managedColorTextures=!1,r={...t.defaultOptions,...r},this.stencil=r.stencil,this.depth=r.depth,this.isRoot=r.isRoot,"number"==typeof r.colorTextures){this._managedColorTextures=!0;for(let t=0;t<r.colorTextures;t++)this.colorTextures.push(new TextureSource({width:r.width,height:r.height,resolution:r.resolution,antialias:r.antialias}))}else{this.colorTextures=[...r.colorTextures.map(t=>t.source)];let t=this.colorTexture.source;this.resize(t.width,t.height,t._resolution)}this.colorTexture.source.on("resize",this.onSourceResize,this),(r.depthStencilTexture||this.stencil)&&(r.depthStencilTexture instanceof Texture||r.depthStencilTexture instanceof TextureSource?this.depthStencilTexture=r.depthStencilTexture.source:this.ensureDepthStencilTexture())}get size(){let t=this._size;return t[0]=this.pixelWidth,t[1]=this.pixelHeight,t}get width(){return this.colorTexture.source.width}get height(){return this.colorTexture.source.height}get pixelWidth(){return this.colorTexture.source.pixelWidth}get pixelHeight(){return this.colorTexture.source.pixelHeight}get resolution(){return this.colorTexture.source._resolution}get colorTexture(){return this.colorTextures[0]}onSourceResize(t){this.resize(t.width,t.height,t._resolution,!0)}ensureDepthStencilTexture(){this.depthStencilTexture||(this.depthStencilTexture=new TextureSource({width:this.width,height:this.height,resolution:this.resolution,format:"depth24plus-stencil8",autoGenerateMipmaps:!1,antialias:!1,mipLevelCount:1}))}resize(t,r,n=this.resolution,i=!1){this.dirtyId++,this.colorTextures.forEach((a,o)=>{i&&0===o||a.source.resize(t,r,n)}),this.depthStencilTexture&&this.depthStencilTexture.source.resize(t,r,n)}destroy(){this.colorTexture.source.off("resize",this.onSourceResize,this),this._managedColorTextures&&this.colorTextures.forEach(t=>{t.destroy()}),this.depthStencilTexture&&(this.depthStencilTexture.destroy(),delete this.depthStencilTexture)}}).defaultOptions={width:0,height:0,resolution:1,colorTextures:1,stencil:!1,depth:!1,antialias:!1,isRoot:!1},RenderTarget=_RenderTarget}});function getCanvasTexture(t,r){if(!canvasCache.has(t)){let n=new Texture({source:new CanvasSource({resource:t,...r})}),i=()=>{canvasCache.get(t)===n&&canvasCache.delete(t)};n.once("destroy",i),n.source.once("destroy",i),canvasCache.set(t,n)}return canvasCache.get(t)}var _ViewSystem,ViewSystem,SharedSystems,SharedRenderPipes,BindGroupSystem,GpuBufferSystem,GpuColorMaskSystem,GpuDeviceSystem,GpuEncoderSystem,GpuStencilSystem,UboBatch,minUniformOffsetAlignment,GpuUniformBatchPipe,init_getCanvasTexture=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/utils/getCanvasTexture.mjs"(){init_globals(),init_CanvasSource(),init_Texture(),canvasCache=new Map}}),init_ViewSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/view/ViewSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_Rectangle(),init_deprecation(),init_RenderTarget(),init_getCanvasTexture(),(_ViewSystem=class t{get resolution(){return this.texture.source._resolution}set resolution(t){this.texture.source.resize(this.texture.source.width,this.texture.source.height,t)}init(r){(r={...t.defaultOptions,...r}).view&&(deprecation(v8_0_0,"ViewSystem.view has been renamed to ViewSystem.canvas"),r.canvas=r.view),this.screen=new Rectangle(0,0,r.width,r.height),this.canvas=r.canvas||DOMAdapter.get().createCanvas(),this.antialias=!!r.antialias,this.texture=getCanvasTexture(this.canvas,r),this.renderTarget=new RenderTarget({colorTextures:[this.texture],depth:!!r.depth,isRoot:!0}),this.texture.source.transparent=r.backgroundAlpha<1,this.multiView=!!r.multiView,this.autoDensity&&(this.canvas.style.width=`${this.texture.width}px`,this.canvas.style.height=`${this.texture.height}px`),this.resolution=r.resolution}resize(t,r,n){this.texture.source.resize(t,r,n),this.screen.width=this.texture.frame.width,this.screen.height=this.texture.frame.height,this.autoDensity&&(this.canvas.style.width=`${t}px`,this.canvas.style.height=`${r}px`)}destroy(t=!1){("boolean"==typeof t?t:!!t?.removeView)&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem,ExtensionType.CanvasSystem],name:"view",priority:0},_ViewSystem.defaultOptions={width:800,height:600,autoDensity:!1,antialias:!1},ViewSystem=_ViewSystem}}),init_SharedSystems=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/system/SharedSystems.mjs"(){init_globals(),init_CustomRenderPipe(),init_RenderGroupPipe(),init_RenderGroupSystem(),init_SpritePipe(),init_BatcherPipe(),init_AlphaMaskPipe(),init_ColorMaskPipe(),init_StencilMaskPipe(),init_BackgroundSystem(),init_BlendModePipe(),init_ExtractSystem(),init_GenerateTextureSystem(),init_GlobalUniformSystem(),init_HelloSystem(),init_TextureGCSystem(),init_ViewSystem(),SharedSystems=[BackgroundSystem,GlobalUniformSystem,HelloSystem,ViewSystem,RenderGroupSystem,TextureGCSystem,GenerateTextureSystem,ExtractSystem],SharedRenderPipes=[BlendModePipe,BatcherPipe,SpritePipe,RenderGroupPipe,AlphaMaskPipe,StencilMaskPipe,ColorMaskPipe,CustomRenderPipe]}}),init_BindGroupSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/BindGroupSystem.mjs"(){init_globals(),init_Extensions(),(BindGroupSystem=class{constructor(t){this._hash=Object.create(null),this._renderer=t}contextChange(t){this._gpu=t}getBindGroup(t,r,n){return t._updateKey(),this._hash[t._key]||this._createBindGroup(t,r,n)}_createBindGroup(t,r,n){let i=this._gpu.device,a=r.layout[n],o=[],s=this._renderer;for(let r in a){let n,i=t.resources[r]??t.resources[a[r]];if("uniformGroup"===i._resourceType){let t=i;s.ubo.updateUniformGroup(t);let r=t.buffer;n={buffer:s.buffer.getGPUBuffer(r),offset:0,size:r.descriptor.size}}else if("buffer"===i._resourceType){let t=i;n={buffer:s.buffer.getGPUBuffer(t),offset:0,size:t.descriptor.size}}else if("bufferResource"===i._resourceType){let t=i;n={buffer:s.buffer.getGPUBuffer(t.buffer),offset:t.offset,size:t.size}}else if("textureSampler"===i._resourceType){let t=i;n=s.texture.getGpuSampler(t)}else if("textureSource"===i._resourceType){let t=i;n=s.texture.getGpuSource(t).createView({})}o.push({binding:a[r],resource:n})}let l=s.shader.getProgramData(r).bindGroups[n],u=i.createBindGroup({layout:l,entries:o});return this._hash[t._key]=u,u}destroy(){for(let t of Object.keys(this._hash))this._hash[t]=null;this._hash=null,this._renderer=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"bindGroup"}}}),init_GpuBufferSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/GpuBufferSystem.mjs"(){init_globals(),init_Extensions(),init_fastCopy(),(GpuBufferSystem=class{constructor(){this._gpuBuffers=Object.create(null),this._managedBuffers=[]}contextChange(t){this._gpu=t}getGPUBuffer(t){return this._gpuBuffers[t.uid]||this.createGPUBuffer(t)}updateBuffer(t){let r=this._gpuBuffers[t.uid]||this.createGPUBuffer(t),n=t.data;return t._updateID&&n&&(t._updateID=0,this._gpu.device.queue.writeBuffer(r,0,n.buffer,0,(t._updateSize||n.byteLength)+3&-4)),r}destroyAll(){for(let t in this._gpuBuffers)this._gpuBuffers[t].destroy();this._gpuBuffers={}}createGPUBuffer(t){this._gpuBuffers[t.uid]||(t.on("update",this.updateBuffer,this),t.on("change",this.onBufferChange,this),t.on("destroy",this.onBufferDestroy,this));let r=this._gpu.device.createBuffer(t.descriptor);return t._updateID=0,t.data&&(fastCopy(t.data.buffer,r.getMappedRange()),r.unmap()),this._gpuBuffers[t.uid]=r,this._managedBuffers.push(t),r}onBufferChange(t){this._gpuBuffers[t.uid].destroy(),t._updateID=0,this._gpuBuffers[t.uid]=this.createGPUBuffer(t)}onBufferDestroy(t){this._managedBuffers.splice(this._managedBuffers.indexOf(t),1),this._destroyBuffer(t)}destroy(){this._managedBuffers.forEach(t=>this._destroyBuffer(t)),this._managedBuffers=null,this._gpuBuffers=null}_destroyBuffer(t){this._gpuBuffers[t.uid].destroy(),t.off("update",this.updateBuffer,this),t.off("change",this.onBufferChange,this),t.off("destroy",this.onBufferDestroy,this),this._gpuBuffers[t.uid]=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"buffer"}}}),init_GpuColorMaskSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuColorMaskSystem.mjs"(){init_globals(),init_Extensions(),(GpuColorMaskSystem=class{constructor(t){this._colorMaskCache=15,this._renderer=t}setMask(t){this._colorMaskCache!==t&&(this._colorMaskCache=t,this._renderer.pipeline.setColorMask(t))}destroy(){this._renderer=null,this._colorMaskCache=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"colorMask"}}}),init_GpuDeviceSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuDeviceSystem.mjs"(){init_globals(),init_Extensions(),(GpuDeviceSystem=class{constructor(t){this._renderer=t}async init(t){return this._initPromise||(this._initPromise=this._createDeviceAndAdaptor(t).then(t=>{this.gpu=t,this._renderer.runners.contextChange.emit(this.gpu)})),this._initPromise}contextChange(t){this._renderer.gpu=t}async _createDeviceAndAdaptor(t){let r=await navigator.gpu.requestAdapter({powerPreference:t.powerPreference,forceFallbackAdapter:t.forceFallbackAdapter}),n=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(t=>r.features.has(t)),i=await r.requestDevice({requiredFeatures:n});return{adapter:r,device:i}}destroy(){this.gpu=null,this._renderer=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"device"},GpuDeviceSystem.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1}}}),init_GpuEncoderSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuEncoderSystem.mjs"(){init_globals(),init_Extensions(),(GpuEncoderSystem=class{constructor(t){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=t}renderStart(){this.commandFinished=new Promise(t=>{this._resolveCommandFinished=t}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(t){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(t.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(t){this.renderPassEncoder.setViewport(t.x,t.y,t.width,t.height,0,1)}setPipelineFromGeometryProgramAndState(t,r,n,i){let a=this._renderer.pipeline.getPipeline(t,r,n,i);this.setPipeline(a)}setPipeline(t){this._boundPipeline!==t&&(this._boundPipeline=t,this.renderPassEncoder.setPipeline(t))}_setVertexBuffer(t,r){this._boundVertexBuffer[t]!==r&&(this._boundVertexBuffer[t]=r,this.renderPassEncoder.setVertexBuffer(t,this._renderer.buffer.updateBuffer(r)))}_setIndexBuffer(t){if(this._boundIndexBuffer===t)return;this._boundIndexBuffer=t;let r=2===t.data.BYTES_PER_ELEMENT?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(t),r)}resetBindGroup(t){this._boundBindGroup[t]=null}setBindGroup(t,r,n){if(this._boundBindGroup[t]===r)return;this._boundBindGroup[t]=r,r._touch(this._renderer.textureGC.count);let i=this._renderer.bindGroup.getBindGroup(r,n,t);this.renderPassEncoder.setBindGroup(t,i)}setGeometry(t){for(let r in t.attributes){let n=t.attributes[r];this._setVertexBuffer(n.location,n.buffer)}t.indexBuffer&&this._setIndexBuffer(t.indexBuffer)}_setShaderBindGroups(t,r){for(let n in t.groups){let i=t.groups[n];r||this._syncBindGroup(i),this.setBindGroup(n,i,t.gpuProgram)}}_syncBindGroup(t){for(let r in t.resources){let n=t.resources[r];n.isUniformGroup&&this._renderer.ubo.updateUniformGroup(n)}}draw(t){let{geometry:r,shader:n,state:i,topology:a,size:o,start:s,instanceCount:l,skipSync:u}=t;this.setPipelineFromGeometryProgramAndState(r,n.gpuProgram,i,a),this.setGeometry(r),this._setShaderBindGroups(n,u),r.indexBuffer?this.renderPassEncoder.drawIndexed(o||r.indexBuffer.data.length,l||r.instanceCount,s||0):this.renderPassEncoder.draw(o||r.getSize(),l||r.instanceCount,s||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){let t=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(t);let r=this._boundPipeline,n={...this._boundVertexBuffer},i=this._boundIndexBuffer,a={...this._boundBindGroup};this._clearCache();let o=this._renderer.renderTarget.viewport;for(let t in this.renderPassEncoder.setViewport(o.x,o.y,o.width,o.height,0,1),this.setPipeline(r),n)this._setVertexBuffer(t,n[t]);for(let t in a)this.setBindGroup(t,a[t],null);this._setIndexBuffer(i)}_clearCache(){for(let t=0;t<16;t++)this._boundBindGroup[t]=null,this._boundVertexBuffer[t]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(t){this._gpu=t}}).extension={type:[ExtensionType.WebGPUSystem],name:"encoder",priority:1}}}),init_GpuStencilSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.mjs"(){init_globals(),init_Extensions(),init_const6(),(GpuStencilSystem=class{constructor(t){this._renderTargetStencilState=Object.create(null),this._renderer=t,t.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(t){let r=this._renderTargetStencilState[t.uid];r||(r=this._renderTargetStencilState[t.uid]={stencilMode:STENCIL_MODES.DISABLED,stencilReference:0}),this._activeRenderTarget=t,this.setStencilMode(r.stencilMode,r.stencilReference)}setStencilMode(t,r){let n=this._renderTargetStencilState[this._activeRenderTarget.uid];n.stencilMode=t,n.stencilReference=r;let i=this._renderer;i.pipeline.setStencilMode(t),i.encoder.renderPassEncoder.setStencilReference(r)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"stencil"}}}),init_UboBatch=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/UboBatch.mjs"(){init_globals(),UboBatch=class{constructor({minUniformOffsetAlignment:t}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=t,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(t){if(t>this._minUniformOffsetAlignment/4)throw Error("UniformBufferBatch: array is too large: "+4*t);let r=this.byteIndex,n=r+4*t;if((n=Math.ceil(n/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment)>4*this.data.length)throw Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=n,r}addGroup(t){let r=this.addEmptyGroup(t.length);for(let n=0;n<t.length;n++)this.data[r/4+n]=t[n];return r}destroy(){this._buffer.destroy(),this._buffer=null,this.data=null}}}}),init_GpuUniformBatchPipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUniformBatchPipe.mjs"(){init_globals(),init_Extensions(),init_Buffer(),init_BufferResource(),init_const(),init_UboBatch(),init_BindGroup(),minUniformOffsetAlignment=128,(GpuUniformBatchPipe=class{constructor(t){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=t,this._batchBuffer=new UboBatch({minUniformOffsetAlignment:minUniformOffsetAlignment});let r=256/minUniformOffsetAlignment;for(let t=0;t<r;t++){let r=BufferUsage.UNIFORM|BufferUsage.COPY_DST;0===t&&(r|=BufferUsage.COPY_SRC),this._buffers.push(new Buffer3({data:this._batchBuffer.data,usage:r}))}}renderEnd(){this._uploadBindGroups(),this._resetBindGroups()}_resetBindGroups(){for(let t in this._bindGroupHash)this._bindGroupHash[t]=null;this._batchBuffer.clear()}getUniformBindGroup(t,r){if(!r&&this._bindGroupHash[t.uid])return this._bindGroupHash[t.uid];this._renderer.ubo.ensureUniformGroup(t);let n=t.buffer.data,i=this._batchBuffer.addEmptyGroup(n.length);return this._renderer.ubo.syncUniformGroup(t,this._batchBuffer.data,i/4),this._bindGroupHash[t.uid]=this._getBindGroup(i/minUniformOffsetAlignment),this._bindGroupHash[t.uid]}getUboResource(t){this._renderer.ubo.updateUniformGroup(t);let r=t.buffer.data,n=this._batchBuffer.addGroup(r);return this._getBufferResource(n/minUniformOffsetAlignment)}getArrayBindGroup(t){let r=this._batchBuffer.addGroup(t);return this._getBindGroup(r/minUniformOffsetAlignment)}getArrayBufferResource(t){let r=this._batchBuffer.addGroup(t)/minUniformOffsetAlignment;return this._getBufferResource(r)}_getBufferResource(t){if(!this._bufferResources[t]){let r=this._buffers[t%2];this._bufferResources[t]=new BufferResource({buffer:r,offset:256*(t/2|0),size:minUniformOffsetAlignment})}return this._bufferResources[t]}_getBindGroup(t){if(!this._bindGroups[t]){let r=new BindGroup({0:this._getBufferResource(t)});this._bindGroups[t]=r}return this._bindGroups[t]}_uploadBindGroups(){let t=this._renderer.buffer,r=this._buffers[0];r.update(this._batchBuffer.byteIndex),t.updateBuffer(r);let n=this._renderer.gpu.device.createCommandEncoder();for(let i=1;i<this._buffers.length;i++){let a=this._buffers[i];n.copyBufferToBuffer(t.getGPUBuffer(r),minUniformOffsetAlignment,t.getGPUBuffer(a),0,this._batchBuffer.byteIndex)}this._renderer.gpu.device.queue.submit([n.finish()])}destroy(){for(let t=0;t<this._bindGroups.length;t++)this._bindGroups[t].destroy();this._bindGroups=null,this._bindGroupHash=null;for(let t=0;t<this._buffers.length;t++)this._buffers[t].destroy();this._buffers=null;for(let t=0;t<this._bufferResources.length;t++)this._bufferResources[t].destroy();this._bufferResources=null,this._batchBuffer.destroy(),this._bindGroupHash=null,this._renderer=null}}).extension={type:[ExtensionType.WebGPUPipes],name:"uniformBatch"}}});function ensureAttributes(t,r){for(let n in t.attributes){let i=t.attributes[n],a=r[n];a?(i.location??(i.location=a.location),i.format??(i.format=a.format),i.offset??(i.offset=a.offset),i.instance??(i.instance=a.instance)):warn(`Attribute ${n} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`)}ensureStartAndStride(t)}function ensureStartAndStride(t){let{buffers:r,attributes:n}=t,i={},a={};for(let t in r){let n=r[t];i[n.uid]=0,a[n.uid]=0}for(let t in n){let r=n[t];i[r.buffer.uid]+=getAttributeInfoFromFormat(r.format).stride}for(let t in n){let r=n[t];r.stride??(r.stride=i[r.buffer.uid]),r.start??(r.start=a[r.buffer.uid]),a[r.buffer.uid]+=getAttributeInfoFromFormat(r.format).stride}}var GpuStencilModesToPixi,topologyStringToId,PipelineSystem,init_ensureAttributes=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/ensureAttributes.mjs"(){init_globals(),init_warn2(),init_getAttributeInfoFromFormat()}}),init_GpuStencilModesToPixi=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStencilModesToPixi.mjs"(){init_globals(),init_const6(),(GpuStencilModesToPixi=[])[STENCIL_MODES.NONE]=void 0,GpuStencilModesToPixi[STENCIL_MODES.DISABLED]={stencilWriteMask:0,stencilReadMask:0},GpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_ADD]={stencilFront:{compare:"equal",passOp:"increment-clamp"},stencilBack:{compare:"equal",passOp:"increment-clamp"}},GpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_REMOVE]={stencilFront:{compare:"equal",passOp:"decrement-clamp"},stencilBack:{compare:"equal",passOp:"decrement-clamp"}},GpuStencilModesToPixi[STENCIL_MODES.MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"equal",passOp:"keep"},stencilBack:{compare:"equal",passOp:"keep"}}}});function getGraphicsStateKey(t,r,n,i,a){return t<<24|r<<16|n<<10|i<<5|a}function getGlobalStateKey(t,r,n,i){return n<<6|t<<3|i<<1|r}var init_PipelineSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/pipeline/PipelineSystem.mjs"(){init_globals(),init_Extensions(),init_ensureAttributes(),init_const6(),init_createIdFromString(),init_GpuStencilModesToPixi(),topologyStringToId={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4},(PipelineSystem=class{constructor(t){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._renderer=t}contextChange(t){this._gpu=t,this.setStencilMode(STENCIL_MODES.DISABLED),this._updatePipeHash()}setMultisampleCount(t){this._multisampleCount!==t&&(this._multisampleCount=t,this._updatePipeHash())}setRenderTarget(t){this._multisampleCount=t.msaaSamples,this._depthStencilAttachment=+!!t.descriptor.depthStencilAttachment,this._updatePipeHash()}setColorMask(t){this._colorMask!==t&&(this._colorMask=t,this._updatePipeHash())}setStencilMode(t){this._stencilMode!==t&&(this._stencilMode=t,this._stencilState=GpuStencilModesToPixi[t],this._updatePipeHash())}setPipeline(t,r,n,i){let a=this.getPipeline(t,r,n);i.setPipeline(a)}getPipeline(t,r,n,i){t._layoutKey||(ensureAttributes(t,r.attributeData),this._generateBufferKey(t)),i=i||t.topology;let a=getGraphicsStateKey(t._layoutKey,r._layoutKey,n.data,n._blendModeId,topologyStringToId[i]);return this._pipeCache[a]||(this._pipeCache[a]=this._createPipeline(t,r,n,i)),this._pipeCache[a]}_createPipeline(t,r,n,i){let a=this._gpu.device,o=this._createVertexBufferLayouts(t),s=this._renderer.state.getColorTargets(n);s[0].writeMask=this._stencilMode===STENCIL_MODES.RENDERING_MASK_ADD?0:this._colorMask;let l=this._renderer.shader.getProgramData(r).pipeline,u={vertex:{module:this._getModule(r.vertex.source),entryPoint:r.vertex.entryPoint,buffers:o},fragment:{module:this._getModule(r.fragment.source),entryPoint:r.fragment.entryPoint,targets:s},primitive:{topology:i,cullMode:n.cullMode},layout:l,multisample:{count:this._multisampleCount},label:"PIXI Pipeline"};return this._depthStencilAttachment&&(u.depthStencil={...this._stencilState,format:"depth24plus-stencil8",depthWriteEnabled:n.depthTest,depthCompare:n.depthTest?"less":"always"}),a.createRenderPipeline(u)}_getModule(t){return this._moduleCache[t]||this._createModule(t)}_createModule(t){let r=this._gpu.device;return this._moduleCache[t]=r.createShaderModule({code:t}),this._moduleCache[t]}_generateBufferKey(t){let r=[],n=0,i=Object.keys(t.attributes).sort();for(let a=0;a<i.length;a++){let o=t.attributes[i[a]];r[n++]=o.location,r[n++]=o.offset,r[n++]=o.format,r[n++]=o.stride}return t._layoutKey=createIdFromString(r.join(""),"geometry"),t._layoutKey}_createVertexBufferLayouts(t){if(this._bufferLayoutsCache[t._layoutKey])return this._bufferLayoutsCache[t._layoutKey];let r=[];return t.buffers.forEach(n=>{let i={arrayStride:0,stepMode:"vertex",attributes:[]},a=i.attributes;for(let r in t.attributes){let o=t.attributes[r];o.buffer===n&&(i.arrayStride=o.stride,i.stepMode=o.instance?"instance":"vertex",a.push({shaderLocation:o.location,offset:o.offset,format:o.format}))}a.length&&r.push(i)}),this._bufferLayoutsCache[t._layoutKey]=r,r}_updatePipeHash(){let t=getGlobalStateKey(this._stencilMode,this._multisampleCount,this._colorMask,this._depthStencilAttachment);this._pipeStateCaches[t]||(this._pipeStateCaches[t]=Object.create(null)),this._pipeCache=this._pipeStateCaches[t]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"pipeline"}}});function calculateProjection(t,r,n,i,a,o){let s=o?1:-1;return t.identity(),t.a=1/i*2,t.d=1/a*2*s,t.tx=-1-r*t.a,t.ty=-s-n*t.d,t}var init_calculateProjection=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/calculateProjection.mjs"(){init_globals()}});function isRenderingToScreen(t){let r=t.colorTexture.source.resource;return globalThis.HTMLCanvasElement&&r instanceof HTMLCanvasElement&&document.body.contains(r)}var RenderTargetSystem,GpuRenderTarget,GpuRenderTargetAdaptor,GpuRenderTargetSystem,GpuShaderSystem,GpuBlendModesToPixi,GpuStateSystem,gpuUploadBufferImageResource,blockDataMap,defaultBlockData,gpuUploadCompressedTextureResource,gpuUploadImageResource,gpuUploadVideoResource,GpuMipmapGenerator,GpuTextureSystem,DefaultWebGPUSystems,DefaultWebGPUPipes,DefaultWebGPUAdapters,systems,renderPipes,renderPipeAdaptors,WebGPURenderer,init_isRenderingToScreen=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/isRenderingToScreen.mjs"(){init_globals()}}),init_RenderTargetSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTargetSystem.mjs"(){init_globals(),init_Matrix(),init_Rectangle(),init_const3(),init_calculateProjection(),init_SystemRunner(),init_CanvasSource(),init_TextureSource(),init_Texture(),init_getCanvasTexture(),init_isRenderingToScreen(),init_RenderTarget(),RenderTargetSystem=class{constructor(t){this.rootViewPort=new Rectangle,this.viewport=new Rectangle,this.onRenderTargetChange=new SystemRunner("onRenderTargetChange"),this.projectionMatrix=new Matrix,this.defaultClearColor=[0,0,0,0],this._renderSurfaceToRenderTargetHash=new Map,this._gpuRenderTargetHash=Object.create(null),this._renderTargetStack=[],this._renderer=t}finishRenderPass(){this.adaptor.finishRenderPass(this.renderTarget)}renderStart({target:t,clear:r,clearColor:n,frame:i}){this._renderTargetStack.length=0,this.push(t,r,n,i),this.rootViewPort.copyFrom(this.viewport),this.rootRenderTarget=this.renderTarget,this.renderingToScreen=isRenderingToScreen(this.rootRenderTarget)}bind(t,r=!0,n,i){let a=this.getRenderTarget(t),o=this.renderTarget!==a;this.renderTarget=a,this.renderSurface=t;let s=this.getGpuRenderTarget(a);a.pixelWidth===s.width&&a.pixelHeight===s.height||(this.adaptor.resizeGpuRenderTarget(a),s.width=a.pixelWidth,s.height=a.pixelHeight);let l=a.colorTexture,u=this.viewport,d=l.pixelWidth,c=l.pixelHeight;if(!i&&t instanceof Texture&&(i=t.frame),i){let t=l._resolution;u.x=i.x*t+.5|0,u.y=i.y*t+.5|0,u.width=i.width*t+.5|0,u.height=i.height*t+.5|0}else u.x=0,u.y=0,u.width=d,u.height=c;return calculateProjection(this.projectionMatrix,0,0,u.width/l.resolution,u.height/l.resolution,!a.isRoot),this.adaptor.startRenderPass(a,r,n,u),o&&this.onRenderTargetChange.emit(a),a}clear(t,r=CLEAR.ALL,n){r&&(t&&(t=this.getRenderTarget(t)),this.adaptor.clear(t||this.renderTarget,r,n,this.viewport))}contextChange(){this._gpuRenderTargetHash=Object.create(null)}push(t,r=CLEAR.ALL,n,i){let a=this.bind(t,r,n,i);return this._renderTargetStack.push({renderTarget:a,frame:i}),a}pop(){this._renderTargetStack.pop();let t=this._renderTargetStack[this._renderTargetStack.length-1];this.bind(t.renderTarget,!1,null,t.frame)}getRenderTarget(t){return t.isTexture&&(t=t.source),this._renderSurfaceToRenderTargetHash.get(t)??this._initRenderTarget(t)}copyToTexture(t,r,n,i,a){n.x<0&&(i.width+=n.x,a.x-=n.x,n.x=0),n.y<0&&(i.height+=n.y,a.y-=n.y,n.y=0);let{pixelWidth:o,pixelHeight:s}=t;return i.width=Math.min(i.width,o-n.x),i.height=Math.min(i.height,s-n.y),this.adaptor.copyToTexture(t,r,n,i,a)}ensureDepthStencil(){this.renderTarget.stencil||(this.renderTarget.stencil=!0,this.adaptor.startRenderPass(this.renderTarget,!1,null,this.viewport))}destroy(){this._renderer=null,this._renderSurfaceToRenderTargetHash.forEach((t,r)=>{t!==r&&t.destroy()}),this._renderSurfaceToRenderTargetHash.clear(),this._gpuRenderTargetHash=Object.create(null)}_initRenderTarget(t){let r=null;return CanvasSource.test(t)&&(t=getCanvasTexture(t)),t instanceof RenderTarget?r=t:t instanceof TextureSource&&(r=new RenderTarget({colorTextures:[t]}),CanvasSource.test(t.source.resource)&&(r.isRoot=!0),t.once("destroy",()=>{r.destroy();let t=this._gpuRenderTargetHash[r.uid];t&&(this._gpuRenderTargetHash[r.uid]=null,this.adaptor.destroyGpuRenderTarget(t))})),this._renderSurfaceToRenderTargetHash.set(t,r),r}getGpuRenderTarget(t){return this._gpuRenderTargetHash[t.uid]||(this._gpuRenderTargetHash[t.uid]=this.adaptor.initGpuRenderTarget(t))}}}}),init_GpuRenderTarget=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTarget.mjs"(){init_globals(),GpuRenderTarget=class{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}}}}),init_GpuRenderTargetAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.mjs"(){init_globals(),init_const3(),init_CanvasSource(),init_TextureSource(),init_GpuRenderTarget(),GpuRenderTargetAdaptor=class{init(t,r){this._renderer=t,this._renderTargetSystem=r}copyToTexture(t,r,n,i,a){let o=this._renderer,s=this._getGpuColorTexture(t),l=o.texture.getGpuSource(r.source);return o.encoder.commandEncoder.copyTextureToTexture({texture:s,origin:n},{texture:l,origin:a},i),r}startRenderPass(t,r=!0,n,i){let a=this._renderTargetSystem.getGpuRenderTarget(t);a.descriptor=this.getDescriptor(t,r,n),this._renderer.pipeline.setRenderTarget(a),this._renderer.encoder.beginRenderPass(a),this._renderer.encoder.setViewport(i)}finishRenderPass(){this._renderer.encoder.endRenderPass()}_getGpuColorTexture(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);return r.contexts[0]?r.contexts[0].getCurrentTexture():this._renderer.texture.getGpuSource(t.colorTextures[0].source)}getDescriptor(t,r,n){let i;"boolean"==typeof r&&(r=r?CLEAR.ALL:CLEAR.NONE);let a=this._renderTargetSystem,o=a.getGpuRenderTarget(t),s=t.colorTextures.map((t,i)=>{let s,l,u=o.contexts[i];s=u?u.getCurrentTexture().createView():this._renderer.texture.getGpuSource(t).createView({mipLevelCount:1}),o.msaaTextures[i]&&(l=s,s=this._renderer.texture.getTextureView(o.msaaTextures[i]));let d=r&CLEAR.COLOR?"clear":"load";return n??(n=a.defaultClearColor),{view:s,resolveTarget:l,clearValue:n,storeOp:"store",loadOp:d}});if((t.stencil||t.depth)&&!t.depthStencilTexture&&(t.ensureDepthStencilTexture(),t.depthStencilTexture.source.sampleCount=o.msaa?4:1),t.depthStencilTexture){let n=r&CLEAR.STENCIL?"clear":"load",a=r&CLEAR.DEPTH?"clear":"load";i={view:this._renderer.texture.getGpuSource(t.depthStencilTexture.source).createView(),stencilStoreOp:"store",stencilLoadOp:n,depthClearValue:1,depthLoadOp:a,depthStoreOp:"store"}}return{colorAttachments:s,depthStencilAttachment:i}}clear(t,r=!0,n,i){if(!r)return;let{gpu:a,encoder:o}=this._renderer,s=a.device;if(null===o.commandEncoder){let a=s.createCommandEncoder(),o=this.getDescriptor(t,r,n),l=a.beginRenderPass(o);l.setViewport(i.x,i.y,i.width,i.height,0,1),l.end();let u=a.finish();s.queue.submit([u])}else this.startRenderPass(t,r,n,i)}initGpuRenderTarget(t){t.isRoot=!0;let r=new GpuRenderTarget;return t.colorTextures.forEach((t,n)=>{if(CanvasSource.test(t.resource)){let i=t.resource.getContext("webgpu"),a=t.transparent?"premultiplied":"opaque";try{i.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:"bgra8unorm",alphaMode:a})}catch(t){import_console_browserify.default.error(t)}r.contexts[n]=i}if(r.msaa=t.source.antialias,t.source.antialias){let t=new TextureSource({width:0,height:0,sampleCount:4});r.msaaTextures[n]=t}}),r.msaa&&(r.msaaSamples=4,t.depthStencilTexture&&(t.depthStencilTexture.source.sampleCount=4)),r}destroyGpuRenderTarget(t){t.contexts.forEach(t=>{t.unconfigure()}),t.msaaTextures.forEach(t=>{t.destroy()}),t.msaaTextures.length=0,t.contexts.length=0}ensureDepthStencilTexture(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);t.depthStencilTexture&&r.msaa&&(t.depthStencilTexture.source.sampleCount=4)}resizeGpuRenderTarget(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);r.width=t.width,r.height=t.height,r.msaa&&t.colorTextures.forEach((t,n)=>{let i=r.msaaTextures[n];i?.resize(t.source.width,t.source.height,t.source._resolution)})}}}}),init_GpuRenderTargetSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.mjs"(){init_globals(),init_Extensions(),init_RenderTargetSystem(),init_GpuRenderTargetAdaptor(),(GpuRenderTargetSystem=class extends RenderTargetSystem{constructor(t){super(t),this.adaptor=new GpuRenderTargetAdaptor,this.adaptor.init(t,this)}}).extension={type:[ExtensionType.WebGPUSystem],name:"renderTarget"}}}),init_GpuShaderSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuShaderSystem.mjs"(){init_globals(),init_Extensions(),(GpuShaderSystem=class{constructor(){this._gpuProgramData=Object.create(null)}contextChange(t){this._gpu=t}getProgramData(t){return this._gpuProgramData[t._layoutKey]||this._createGPUProgramData(t)}_createGPUProgramData(t){let r=this._gpu.device,n=t.gpuLayout.map(t=>r.createBindGroupLayout({entries:t})),i={bindGroupLayouts:n};return this._gpuProgramData[t._layoutKey]={bindGroups:n,pipeline:r.createPipelineLayout(i)},this._gpuProgramData[t._layoutKey]}destroy(){this._gpu=null,this._gpuProgramData=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"shader"}}}),init_GpuBlendModesToPixi=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuBlendModesToPixi.mjs"(){init_globals(),(GpuBlendModesToPixi={}).normal={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}},GpuBlendModesToPixi.add={alpha:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one",operation:"add"}},GpuBlendModesToPixi.multiply={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"dst",dstFactor:"one-minus-src-alpha",operation:"add"}},GpuBlendModesToPixi.screen={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},GpuBlendModesToPixi.overlay={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},GpuBlendModesToPixi.none={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"zero",operation:"add"}},GpuBlendModesToPixi["normal-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"}},GpuBlendModesToPixi["add-npm"]={alpha:{srcFactor:"one",dstFactor:"one",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one",operation:"add"}},GpuBlendModesToPixi["screen-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src",operation:"add"}},GpuBlendModesToPixi.erase={alpha:{srcFactor:"zero",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"one-minus-src",operation:"add"}}}}),init_GpuStateSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStateSystem.mjs"(){init_globals(),init_Extensions(),init_State(),init_GpuBlendModesToPixi(),(GpuStateSystem=class{constructor(){this.defaultState=new State,this.defaultState.blend=!0}contextChange(t){this.gpu=t}getColorTargets(t){return[{format:"bgra8unorm",writeMask:0,blend:GpuBlendModesToPixi[t.blendMode]||GpuBlendModesToPixi.normal}]}destroy(){this.gpu=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"state"}}}),init_gpuUploadBufferImageResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.mjs"(){init_globals(),gpuUploadBufferImageResource={type:"image",upload(t,r,n){let i=t.resource,a=(0|t.pixelWidth)*(0|t.pixelHeight),o=i.byteLength/a;n.device.queue.writeTexture({texture:r},i,{offset:0,rowsPerImage:t.pixelHeight,bytesPerRow:t.pixelHeight*o},{width:t.pixelWidth,height:t.pixelHeight,depthOrArrayLayers:1})}}}}),init_gpuUploadCompressedTextureResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.mjs"(){init_globals(),blockDataMap={"bc1-rgba-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"bc2-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc3-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc7-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"etc1-rgb-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"etc2-rgba8unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"astc-4x4-unorm":{blockBytes:16,blockWidth:4,blockHeight:4}},defaultBlockData={blockBytes:4,blockWidth:1,blockHeight:1},gpuUploadCompressedTextureResource={type:"compressed",upload(t,r,n){let i=t.pixelWidth,a=t.pixelHeight,o=blockDataMap[t.format]||defaultBlockData;for(let s=0;s<t.resource.length;s++){let l=t.resource[s],u=Math.ceil(i/o.blockWidth)*o.blockBytes;n.device.queue.writeTexture({texture:r,mipLevel:s},l,{offset:0,bytesPerRow:u},{width:Math.ceil(i/o.blockWidth)*o.blockWidth,height:Math.ceil(a/o.blockHeight)*o.blockHeight,depthOrArrayLayers:1}),i=Math.max(i>>1,1),a=Math.max(a>>1,1)}}}}}),init_gpuUploadImageSource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.mjs"(){init_globals(),gpuUploadImageResource={type:"image",upload(t,r,n){let i=t.resource;if(!i)return;let a=Math.min(r.width,t.resourceWidth||t.pixelWidth),o=Math.min(r.height,t.resourceHeight||t.pixelHeight),s="premultiply-alpha-on-upload"===t.alphaMode;n.device.queue.copyExternalImageToTexture({source:i},{texture:r,premultipliedAlpha:s},{width:a,height:o})}}}}),init_gpuUploadVideoSource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.mjs"(){init_globals(),init_gpuUploadImageSource(),gpuUploadVideoResource={type:"video",upload(t,r,n){gpuUploadImageResource.upload(t,r,n)}}}}),init_GpuMipmapGenerator=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.mjs"(){init_globals(),GpuMipmapGenerator=class{constructor(t){this.device=t,this.sampler=t.createSampler({minFilter:"linear"}),this.pipelines={}}_getMipmapPipeline(t){let r=this.pipelines[t];return r||(this.mipmapShaderModule||(this.mipmapShaderModule=this.device.createShaderModule({code:"\n var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(\n vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));\n\n struct VertexOutput {\n @builtin(position) position : vec4<f32>,\n @location(0) texCoord : vec2<f32>,\n };\n\n @vertex\n fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n var output : VertexOutput;\n output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);\n output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);\n return output;\n }\n\n @group(0) @binding(0) var imgSampler : sampler;\n @group(0) @binding(1) var img : texture_2d<f32>;\n\n @fragment\n fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {\n return textureSample(img, imgSampler, texCoord);\n }\n "})),r=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:t}]}}),this.pipelines[t]=r),r}generateMipmap(t){let r=this._getMipmapPipeline(t.format);if("3d"===t.dimension||"1d"===t.dimension)throw Error("Generating mipmaps for non-2d textures is currently unsupported!");let n=t,i=t.depthOrArrayLayers||1,a=t.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!a){let r={size:{width:Math.ceil(t.width/2),height:Math.ceil(t.height/2),depthOrArrayLayers:i},format:t.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:t.mipLevelCount-1};n=this.device.createTexture(r)}let o=this.device.createCommandEncoder({}),s=r.getBindGroupLayout(0);for(let l=0;l<i;++l){let i=t.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:l,arrayLayerCount:1}),u=+!!a;for(let a=1;a<t.mipLevelCount;++a){let t=n.createView({baseMipLevel:u++,mipLevelCount:1,dimension:"2d",baseArrayLayer:l,arrayLayerCount:1}),a=o.beginRenderPass({colorAttachments:[{view:t,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),d=this.device.createBindGroup({layout:s,entries:[{binding:0,resource:this.sampler},{binding:1,resource:i}]});a.setPipeline(r),a.setBindGroup(0,d),a.draw(3,1,0,0),a.end(),i=t}}if(!a){let r={width:Math.ceil(t.width/2),height:Math.ceil(t.height/2),depthOrArrayLayers:i};for(let i=1;i<t.mipLevelCount;++i)o.copyTextureToTexture({texture:n,mipLevel:i-1},{texture:t,mipLevel:i},r),r.width=Math.ceil(r.width/2),r.height=Math.ceil(r.height/2)}return this.device.queue.submit([o.finish()]),a||n.destroy(),t}}}}),init_GpuTextureSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/GpuTextureSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_CanvasPool(),init_BindGroup(),init_gpuUploadBufferImageResource(),init_gpuUploadCompressedTextureResource(),init_gpuUploadImageSource(),init_gpuUploadVideoSource(),init_GpuMipmapGenerator(),(GpuTextureSystem=class{constructor(t){this.managedTextures=[],this._gpuSources=Object.create(null),this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._textureViewHash=Object.create(null),this._uploads={image:gpuUploadImageResource,buffer:gpuUploadBufferImageResource,video:gpuUploadVideoResource,compressed:gpuUploadCompressedTextureResource},this._renderer=t}contextChange(t){this._gpu=t}initSource(t){if(t.autoGenerateMipmaps){let r=Math.max(t.pixelWidth,t.pixelHeight);t.mipLevelCount=Math.floor(Math.log2(r))+1}let r=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;"compressed"!==t.uploadMethodId&&(r|=GPUTextureUsage.RENDER_ATTACHMENT,r|=GPUTextureUsage.COPY_SRC);let n=blockDataMap[t.format]||{blockBytes:4,blockWidth:1,blockHeight:1},i=Math.ceil(t.pixelWidth/n.blockWidth)*n.blockWidth,a=Math.ceil(t.pixelHeight/n.blockHeight)*n.blockHeight,o={label:t.label,size:{width:i,height:a},format:t.format,sampleCount:t.sampleCount,mipLevelCount:t.mipLevelCount,dimension:t.dimension,usage:r},s=this._gpu.device.createTexture(o);return this._gpuSources[t.uid]=s,this.managedTextures.includes(t)||(t.on("update",this.onSourceUpdate,this),t.on("resize",this.onSourceResize,this),t.on("destroy",this.onSourceDestroy,this),t.on("unload",this.onSourceUnload,this),t.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(t)),this.onSourceUpdate(t),s}onSourceUpdate(t){let r=this.getGpuSource(t);r&&(this._uploads[t.uploadMethodId]&&this._uploads[t.uploadMethodId].upload(t,r,this._gpu),t.autoGenerateMipmaps&&t.mipLevelCount>1&&this.onUpdateMipmaps(t))}onSourceUnload(t){let r=this._gpuSources[t.uid];r&&(this._gpuSources[t.uid]=null,r.destroy())}onUpdateMipmaps(t){this._mipmapGenerator||(this._mipmapGenerator=new GpuMipmapGenerator(this._gpu.device));let r=this.getGpuSource(t);this._mipmapGenerator.generateMipmap(r)}onSourceDestroy(t){t.off("update",this.onSourceUpdate,this),t.off("unload",this.onSourceUnload,this),t.off("destroy",this.onSourceDestroy,this),t.off("resize",this.onSourceResize,this),t.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(t),1),this.onSourceUnload(t)}onSourceResize(t){let r=this._gpuSources[t.uid];r?r.width===t.pixelWidth&&r.height===t.pixelHeight||(this._textureViewHash[t.uid]=null,this._bindGroupHash[t.uid]=null,this.onSourceUnload(t),this.initSource(t)):this.initSource(t)}_initSampler(t){return this._gpuSamplers[t._resourceId]=this._gpu.device.createSampler(t),this._gpuSamplers[t._resourceId]}getGpuSampler(t){return this._gpuSamplers[t._resourceId]||this._initSampler(t)}getGpuSource(t){return this._gpuSources[t.uid]||this.initSource(t)}getTextureBindGroup(t){return this._bindGroupHash[t.uid]??this._createTextureBindGroup(t)}_createTextureBindGroup(t){let r=t.source,n=r.uid;return this._bindGroupHash[n]=new BindGroup({0:r,1:r.style}),this._bindGroupHash[n]}getTextureView(t){let r=t.source;return this._textureViewHash[r.uid]??this._createTextureView(r)}_createTextureView(t){return this._textureViewHash[t.uid]=this.getGpuSource(t).createView(),this._textureViewHash[t.uid]}generateCanvas(t){let r=this._renderer,n=r.gpu.device.createCommandEncoder(),i=DOMAdapter.get().createCanvas();i.width=t.source.pixelWidth,i.height=t.source.pixelHeight;let a=i.getContext("webgpu");return a.configure({device:r.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:navigator.gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),n.copyTextureToTexture({texture:r.texture.getGpuSource(t.source),origin:{x:0,y:0}},{texture:a.getCurrentTexture()},{width:i.width,height:i.height}),r.gpu.device.queue.submit([n.finish()]),i}getPixels(t){let r=this.generateCanvas(t),n=CanvasPool.getOptimalCanvasAndContext(r.width,r.height),i=n.context;i.drawImage(r,0,0);let{width:a,height:o}=r,s=new Uint8ClampedArray(i.getImageData(0,0,a,o).data.buffer);return CanvasPool.returnCanvasAndContext(n),{pixels:s,width:a,height:o}}destroy(){for(let t of(this.managedTextures.slice().forEach(t=>this.onSourceDestroy(t)),this.managedTextures=null,Object.keys(this._bindGroupHash))){let r=Number(t),n=this._bindGroupHash[r];n?.destroy(),this._bindGroupHash[r]=null}this._gpu=null,this._mipmapGenerator=null,this._gpuSources=null,this._bindGroupHash=null,this._textureViewHash=null,this._gpuSamplers=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"texture"}}}),WebGPURenderer_exports={};__export(WebGPURenderer_exports,{WebGPURenderer:()=>WebGPURenderer});var GlGraphicsAdaptor,GlMeshAdaptor,GlBatchAdaptor,BUFFER_TYPE,GlBuffer,GlBufferSystem,_GlContextSystem,GlContextSystem,GL_FORMATS,GL_TARGETS,GL_TYPES,infoMap,init_WebGPURenderer=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/WebGPURenderer.mjs"(){init_globals(),init_Extensions(),init_GpuGraphicsAdaptor(),init_GpuMeshAdapter(),init_GpuBatchAdaptor(),init_AbstractRenderer(),init_SharedSystems(),init_types2(),init_BindGroupSystem(),init_GpuBufferSystem(),init_GpuColorMaskSystem(),init_GpuDeviceSystem(),init_GpuEncoderSystem(),init_GpuStencilSystem(),init_GpuUboSystem(),init_GpuUniformBatchPipe(),init_PipelineSystem(),init_GpuRenderTargetSystem(),init_GpuShaderSystem(),init_GpuStateSystem(),init_GpuTextureSystem(),DefaultWebGPUSystems=[...SharedSystems,GpuUboSystem,GpuEncoderSystem,GpuDeviceSystem,GpuBufferSystem,GpuTextureSystem,GpuRenderTargetSystem,GpuShaderSystem,GpuStateSystem,PipelineSystem,GpuColorMaskSystem,GpuStencilSystem,BindGroupSystem],DefaultWebGPUPipes=[...SharedRenderPipes,GpuUniformBatchPipe],DefaultWebGPUAdapters=[GpuBatchAdaptor,GpuMeshAdapter,GpuGraphicsAdaptor],systems=[],renderPipes=[],renderPipeAdaptors=[],extensions.handleByNamedList(ExtensionType.WebGPUSystem,systems),extensions.handleByNamedList(ExtensionType.WebGPUPipes,renderPipes),extensions.handleByNamedList(ExtensionType.WebGPUPipesAdaptor,renderPipeAdaptors),extensions.add(...DefaultWebGPUSystems,...DefaultWebGPUPipes,...DefaultWebGPUAdapters),WebGPURenderer=class extends AbstractRenderer{constructor(){super({name:"webgpu",type:RendererType.WEBGPU,systems:systems,renderPipes:renderPipes,renderPipeAdaptors:renderPipeAdaptors})}}}}),init_GlGraphicsAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/gl/GlGraphicsAdaptor.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_const5(),init_compileHighShaderToProgram(),init_colorBit(),init_generateTextureBatchBit(),init_localUniformBit(),init_roundPixelsBit(),init_batchSamplersUniformGroup(),init_Shader(),init_UniformGroup(),(GlGraphicsAdaptor=class{init(){let t=new UniformGroup({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uRound:{value:0,type:"f32"}}),r=compileHighShaderGlProgram({name:"graphics",bits:[colorBitGl,generateTextureBatchBitGl(MAX_TEXTURES),localUniformBitGl,roundPixelsBitGl]});this.shader=new Shader({glProgram:r,resources:{localUniforms:t,batchSamplers:batchSamplersUniformGroup}})}execute(t,r){let n=r.context,i=n.customShader||this.shader,a=t.renderer,{geometry:o,instructions:s}=a.graphicsContext.getContextRenderData(n);i.groups[0]=a.globalUniforms.bindGroup,a.state.set(t.state),a.shader.bind(i),a.geometry.bind(o,i.glProgram);let l=s.instructions;for(let t=0;t<s.instructionSize;t++){let r=l[t];if(r.size){for(let t=0;t<r.textures.textures.length;t++)a.texture.bind(r.textures.textures[t],t);a.geometry.draw("triangle-list",r.size,r.start)}}}destroy(){this.shader.destroy(!0),this.shader=null}}).extension={type:[ExtensionType.WebGLPipesAdaptor],name:"graphics"}}}),init_GlMeshAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/gl/GlMeshAdaptor.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_compileHighShaderToProgram(),init_localUniformBit(),init_roundPixelsBit(),init_textureBit(),init_Shader(),init_Texture(),init_warn2(),(GlMeshAdaptor=class{init(){let t=compileHighShaderGlProgram({name:"mesh",bits:[localUniformBitGl,textureBitGl,roundPixelsBitGl]});this._shader=new Shader({glProgram:t,resources:{uTexture:Texture.EMPTY.source,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new Matrix}}}})}execute(t,r){let n=t.renderer,i=r._shader;if(i){if(!i.glProgram)return void warn("Mesh shader has no glProgram",r.shader)}else{i=this._shader;let t=r.texture,n=t.source;i.resources.uTexture=n,i.resources.uSampler=n.style,i.resources.textureUniforms.uniforms.uTextureMatrix=t.textureMatrix.mapCoord}i.groups[100]=n.globalUniforms.bindGroup,i.groups[101]=t.localUniformsBindGroup,n.encoder.draw({geometry:r._geometry,shader:i,state:r.state})}destroy(){this._shader.destroy(!0),this._shader=null}}).extension={type:[ExtensionType.WebGLPipesAdaptor],name:"mesh"}}}),init_GlBatchAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/batcher/gl/GlBatchAdaptor.mjs"(){init_globals(),init_Extensions(),init_compileHighShaderToProgram(),init_colorBit(),init_generateTextureBatchBit(),init_roundPixelsBit(),init_batchSamplersUniformGroup(),init_Shader(),init_State(),init_const5(),(GlBatchAdaptor=class{constructor(){this._didUpload=!1,this._tempState=State.for2d()}init(t){let r=compileHighShaderGlProgram({name:"batch",bits:[colorBitGl,generateTextureBatchBitGl(MAX_TEXTURES),roundPixelsBitGl]});this._shader=new Shader({glProgram:r,resources:{batchSamplers:batchSamplersUniformGroup}}),t.renderer.runners.contextChange.add(this)}contextChange(){this._didUpload=!1}start(t,r){let n=t.renderer;n.shader.bind(this._shader,this._didUpload),n.shader.updateUniformGroup(n.globalUniforms.uniformGroup),n.geometry.bind(r,this._shader.glProgram)}execute(t,r){let n=t.renderer;this._didUpload=!0,this._tempState.blendMode=r.blendMode,n.state.set(this._tempState);let i=r.textures.textures;for(let t=0;t<i.length;t++)n.texture.bind(i[t],t);n.geometry.draw("triangle-list",r.size,r.start)}destroy(){this._shader.destroy(!0),this._shader=null}}).extension={type:[ExtensionType.WebGLPipesAdaptor],name:"batch"}}}),init_const9=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/const.mjs"(){let t;init_globals(),(t=BUFFER_TYPE||{})[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",BUFFER_TYPE=t}}),init_GlBuffer=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBuffer.mjs"(){init_globals(),GlBuffer=class{constructor(t,r){this.buffer=t||null,this.updateID=-1,this.byteLength=-1,this.type=r}}}}),init_GlBufferSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBufferSystem.mjs"(){init_globals(),init_Extensions(),init_const(),init_const9(),init_GlBuffer(),(GlBufferSystem=class{constructor(t){this._gpuBuffers=Object.create(null),this._boundBufferBases=Object.create(null),this._renderer=t}destroy(){this._renderer=null,this._gl=null,this._gpuBuffers=null,this._boundBufferBases=null}contextChange(){this._gpuBuffers=Object.create(null),this._gl=this._renderer.gl}getGlBuffer(t){return this._gpuBuffers[t.uid]||this.createGLBuffer(t)}bind(t){let{_gl:r}=this,n=this.getGlBuffer(t);r.bindBuffer(n.type,n.buffer)}bindBufferBase(t,r){let{_gl:n}=this;if(this._boundBufferBases[r]!==t){let i=this.getGlBuffer(t);this._boundBufferBases[r]=t,n.bindBufferBase(n.UNIFORM_BUFFER,r,i.buffer)}}bindBufferRange(t,r,n){let{_gl:i}=this;n=n||0;let a=this.getGlBuffer(t);i.bindBufferRange(i.UNIFORM_BUFFER,r||0,a.buffer,256*n,256)}updateBuffer(t){let{_gl:r}=this,n=this.getGlBuffer(t);if(t._updateID===n.updateID)return n;n.updateID=t._updateID,r.bindBuffer(n.type,n.buffer);let i=t.data;if(n.byteLength>=t.data.byteLength)r.bufferSubData(n.type,0,i,0,t._updateSize/i.BYTES_PER_ELEMENT);else{let a=t.descriptor.usage&BufferUsage.STATIC?r.STATIC_DRAW:r.DYNAMIC_DRAW;n.byteLength=i.byteLength,r.bufferData(n.type,i,a)}return n}destroyAll(){let t=this._gl;for(let r in this._gpuBuffers)t.deleteBuffer(this._gpuBuffers[r].buffer);this._gpuBuffers=Object.create(null)}onBufferDestroy(t,r){let n=this._gpuBuffers[t.uid],i=this._gl;r||i.deleteBuffer(n.buffer),this._gpuBuffers[t.uid]=null}createGLBuffer(t){let{_gl:r}=this,n=BUFFER_TYPE.ARRAY_BUFFER;t.descriptor.usage&BufferUsage.INDEX?n=BUFFER_TYPE.ELEMENT_ARRAY_BUFFER:t.descriptor.usage&BufferUsage.UNIFORM&&(n=BUFFER_TYPE.UNIFORM_BUFFER);let i=new GlBuffer(r.createBuffer(),n);return this._gpuBuffers[t.uid]=i,t.on("destroy",this.onBufferDestroy,this),i}}).extension={type:[ExtensionType.WebGLSystem],name:"buffer"}}}),init_GlContextSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/context/GlContextSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_warn2(),(_GlContextSystem=class t{constructor(t){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=t,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(t){this.gl=t,this._renderer.gl=t}init(r){if((r={...t.defaultOptions,...r}).context)this.initFromContext(r.context);else{let t=this._renderer.background.alpha<1,n=r.premultipliedAlpha??!0,i=r.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(r.preferWebGLVersion,{alpha:t,premultipliedAlpha:n,antialias:i,stencil:!0,preserveDrawingBuffer:r.preserveDrawingBuffer,powerPreference:r.powerPreference??"default"})}}initFromContext(t){this.gl=t,this.webGLVersion=t instanceof DOMAdapter.get().getWebGLRenderingContext()?1:2,this.getExtensions(),this.validateContext(t),this._renderer.runners.contextChange.emit(t);let r=this._renderer.view.canvas;r.addEventListener("webglcontextlost",this.handleContextLost,!1),r.addEventListener("webglcontextrestored",this.handleContextRestored,!1)}createContext(t,r){let n,i=this._renderer.view.canvas;if(2===t&&(n=i.getContext("webgl2",r)),!n&&!(n=i.getContext("webgl",r)))throw Error("This browser does not support WebGL. Try using the canvas renderer");this.gl=n,this.initFromContext(this.gl)}getExtensions(){let{gl:t}=this,r={anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),s3tc:t.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:t.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:t.getExtension("WEBGL_compressed_texture_etc"),etc1:t.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:t.getExtension("WEBGL_compressed_texture_atc"),astc:t.getExtension("WEBGL_compressed_texture_astc"),bptc:t.getExtension("EXT_texture_compression_bptc"),rgtc:t.getExtension("EXT_texture_compression_rgtc"),loseContext:t.getExtension("WEBGL_lose_context")};if(1===this.webGLVersion)this.extensions={...r,drawBuffers:t.getExtension("WEBGL_draw_buffers"),depthTexture:t.getExtension("WEBGL_depth_texture"),vertexArrayObject:t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:t.getExtension("OES_element_index_uint"),floatTexture:t.getExtension("OES_texture_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),textureHalfFloat:t.getExtension("OES_texture_half_float"),textureHalfFloatLinear:t.getExtension("OES_texture_half_float_linear"),vertexAttribDivisorANGLE:t.getExtension("ANGLE_instanced_arrays"),srgb:t.getExtension("EXT_sRGB")};else{this.extensions={...r,colorBufferFloat:t.getExtension("EXT_color_buffer_float")};let n=t.getExtension("WEBGL_provoking_vertex");n&&n.provokingVertexWEBGL(n.FIRST_VERTEX_CONVENTION_WEBGL)}}handleContextLost(t){t.preventDefault(),this._contextLossForced&&(this._contextLossForced=!1,setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext?.restoreContext()},0))}handleContextRestored(){this._renderer.runners.contextChange.emit(this.gl)}destroy(){let t=this._renderer.view.canvas;this._renderer=null,t.removeEventListener("webglcontextlost",this.handleContextLost),t.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext?.loseContext()}forceContextLoss(){this.extensions.loseContext?.loseContext(),this._contextLossForced=!0}validateContext(t){let r=t.getContextAttributes();r&&!r.stencil&&warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");let n=this.supports,i=2===this.webGLVersion,a=this.extensions;n.uint32Indices=i||!!a.uint32ElementIndex,n.uniformBufferObject=i,n.vertexArrayObject=i||!!a.vertexArrayObject,n.srgbTextures=i||!!a.srgb,n.nonPowOf2wrapping=i,n.nonPowOf2mipmaps=i,n.msaa=i,n.uint32Indices||warn("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly")}}).extension={type:[ExtensionType.WebGLSystem],name:"context"},_GlContextSystem.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2},GlContextSystem=_GlContextSystem}}),init_const10=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/const.mjs"(){let t,r,n;init_globals(),(t=GL_FORMATS||{})[t.RGBA=6408]="RGBA",t[t.RGB=6407]="RGB",t[t.RG=33319]="RG",t[t.RED=6403]="RED",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.ALPHA=6406]="ALPHA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",GL_FORMATS=t,(r=GL_TARGETS||{})[r.TEXTURE_2D=3553]="TEXTURE_2D",r[r.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",r[r.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",r[r.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",r[r.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",r[r.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",r[r.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",r[r.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",r[r.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",GL_TARGETS=r,(n=GL_TYPES||{})[n.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",n[n.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",n[n.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",n[n.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",n[n.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",n[n.UNSIGNED_INT=5125]="UNSIGNED_INT",n[n.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",n[n.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",n[n.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",n[n.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",n[n.BYTE=5120]="BYTE",n[n.SHORT=5122]="SHORT",n[n.INT=5124]="INT",n[n.FLOAT=5126]="FLOAT",n[n.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",n[n.HALF_FLOAT=36193]="HALF_FLOAT",GL_TYPES=n}});function getGlTypeFromFormat(t){return infoMap[t]??infoMap.float32}var topologyToGlMap,GlGeometrySystem,bigTriangleGeometry,_GlBackBufferSystem,GlBackBufferSystem,GlColorMaskSystem,GlEncoderSystem,GlStencilSystem,GlRenderTarget,GlRenderTargetAdaptor,GlRenderTargetSystem,init_getGlTypeFromFormat=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/geometry/utils/getGlTypeFromFormat.mjs"(){init_globals(),init_const10(),infoMap={uint8x2:GL_TYPES.UNSIGNED_BYTE,uint8x4:GL_TYPES.UNSIGNED_BYTE,sint8x2:GL_TYPES.BYTE,sint8x4:GL_TYPES.BYTE,unorm8x2:GL_TYPES.UNSIGNED_BYTE,unorm8x4:GL_TYPES.UNSIGNED_BYTE,snorm8x2:GL_TYPES.BYTE,snorm8x4:GL_TYPES.BYTE,uint16x2:GL_TYPES.UNSIGNED_SHORT,uint16x4:GL_TYPES.UNSIGNED_SHORT,sint16x2:GL_TYPES.SHORT,sint16x4:GL_TYPES.SHORT,unorm16x2:GL_TYPES.UNSIGNED_SHORT,unorm16x4:GL_TYPES.UNSIGNED_SHORT,snorm16x2:GL_TYPES.SHORT,snorm16x4:GL_TYPES.SHORT,float16x2:GL_TYPES.HALF_FLOAT,float16x4:GL_TYPES.HALF_FLOAT,float32:GL_TYPES.FLOAT,float32x2:GL_TYPES.FLOAT,float32x3:GL_TYPES.FLOAT,float32x4:GL_TYPES.FLOAT,uint32:GL_TYPES.UNSIGNED_INT,uint32x2:GL_TYPES.UNSIGNED_INT,uint32x3:GL_TYPES.UNSIGNED_INT,uint32x4:GL_TYPES.UNSIGNED_INT,sint32:GL_TYPES.INT,sint32x2:GL_TYPES.INT,sint32x3:GL_TYPES.INT,sint32x4:GL_TYPES.INT}}}),init_GlGeometrySystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/geometry/GlGeometrySystem.mjs"(){init_globals(),init_Extensions(),init_getAttributeInfoFromFormat(),init_ensureAttributes(),init_getGlTypeFromFormat(),topologyToGlMap={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5},(GlGeometrySystem=class{constructor(t){this._geometryVaoHash=Object.create(null),this._renderer=t,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0}contextChange(){let t=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw Error("[PixiJS] Vertex Array Objects are not supported on this device");let r=this._renderer.context.extensions.vertexArrayObject;r&&(t.createVertexArray=()=>r.createVertexArrayOES(),t.bindVertexArray=t=>r.bindVertexArrayOES(t),t.deleteVertexArray=t=>r.deleteVertexArrayOES(t));let n=this._renderer.context.extensions.vertexAttribDivisorANGLE;n&&(t.drawArraysInstanced=(t,r,i,a)=>{n.drawArraysInstancedANGLE(t,r,i,a)},t.drawElementsInstanced=(t,r,i,a,o)=>{n.drawElementsInstancedANGLE(t,r,i,a,o)},t.vertexAttribDivisor=(t,r)=>n.vertexAttribDivisorANGLE(t,r)),this._activeGeometry=null,this._activeVao=null,this._geometryVaoHash=Object.create(null)}bind(t,r){let n=this.gl;this._activeGeometry=t;let i=this.getVao(t,r);this._activeVao!==i&&(this._activeVao=i,n.bindVertexArray(i)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){let t=this._activeGeometry,r=this._renderer.buffer;for(let n=0;n<t.buffers.length;n++){let i=t.buffers[n];r.updateBuffer(i)}}checkCompatibility(t,r){let n=t.attributes,i=r._attributeData;for(let t in i)if(!n[t])throw Error(`shader and geometry incompatible, geometry missing the "${t}" attribute`)}getSignature(t,r){let n=t.attributes,i=r._attributeData,a=["g",t.uid];for(let t in n)i[t]&&a.push(t,i[t].location);return a.join("-")}getVao(t,r){return this._geometryVaoHash[t.uid]?.[r._key]||this.initGeometryVao(t,r)}initGeometryVao(t,r,n=!0){let i=this._renderer.gl,a=this._renderer.buffer;this._renderer.shader._getProgramData(r),this.checkCompatibility(t,r);let o=this.getSignature(t,r);this._geometryVaoHash[t.uid]||(this._geometryVaoHash[t.uid]=Object.create(null),t.on("destroy",this.onGeometryDestroy,this));let s=this._geometryVaoHash[t.uid],l=s[o];if(l)return s[r._key]=l,l;ensureAttributes(t,r._attributeData);let u=t.buffers;l=i.createVertexArray(),i.bindVertexArray(l);for(let t=0;t<u.length;t++){let r=u[t];a.bind(r)}return this.activateVao(t,r),s[r._key]=l,s[o]=l,i.bindVertexArray(null),l}onGeometryDestroy(t,r){let n=this._geometryVaoHash[t.uid],i=this.gl;if(n){if(r)for(let t in n)this._activeVao!==n[t]&&this.unbind(),i.deleteVertexArray(n[t]);this._geometryVaoHash[t.uid]=null}}destroyAll(t=!1){let r=this.gl;for(let n in this._geometryVaoHash){if(t)for(let t in this._geometryVaoHash[n]){let i=this._geometryVaoHash[n];this._activeVao!==i&&this.unbind(),r.deleteVertexArray(i[t])}this._geometryVaoHash[n]=null}}activateVao(t,r){let n=this._renderer.gl,i=this._renderer.buffer,a=t.attributes;t.indexBuffer&&i.bind(t.indexBuffer);let o=null;for(let t in a){let s=a[t],l=s.buffer,u=i.getGlBuffer(l),d=r._attributeData[t];if(d){o!==u&&(i.bind(l),o=u);let t=s.location;n.enableVertexAttribArray(t);let r=getAttributeInfoFromFormat(s.format),a=getGlTypeFromFormat(s.format);if("int"===d.format?.substring(1,4)?n.vertexAttribIPointer(t,r.size,a,s.stride,s.offset):n.vertexAttribPointer(t,r.size,a,r.normalised,s.stride,s.offset),s.instance){if(!this.hasInstance)throw Error("geometry error, GPU Instancing is not supported on this device");n.vertexAttribDivisor(t,1)}}}}draw(t,r,n,i){let{gl:a}=this._renderer,o=this._activeGeometry,s=topologyToGlMap[o.topology||t];if(i||(i=o.instanceCount),o.indexBuffer){let t=o.indexBuffer.data.BYTES_PER_ELEMENT,l=2===t?a.UNSIGNED_SHORT:a.UNSIGNED_INT;i>1?a.drawElementsInstanced(s,r||o.indexBuffer.data.length,l,(n||0)*t,i):a.drawElements(s,r||o.indexBuffer.data.length,l,(n||0)*t)}else i>1?a.drawArraysInstanced(s,n||0,r||o.getSize(),i):a.drawArrays(s,n||0,r||o.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}}).extension={type:[ExtensionType.WebGLSystem],name:"geometry"}}}),init_GlBackBufferSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlBackBufferSystem.mjs"(){init_globals(),init_Extensions(),init_warn2(),init_Geometry(),init_Shader(),init_State(),init_TextureSource(),init_Texture(),init_GlProgram(),bigTriangleGeometry=new Geometry({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),(_GlBackBufferSystem=class t{constructor(t){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=t}init(r={}){let{useBackBuffer:n,antialias:i}={...t.defaultOptions,...r};this.useBackBuffer=n,this._antialias=i,this._renderer.context.supports.msaa||(warn("antialiasing, is not supported on when using the back buffer"),this._antialias=!1),this._state=State.for2d();let a=new GlProgram({vertex:"\n attribute vec2 aPosition;\n out vec2 vUv;\n\n void main() {\n gl_Position = vec4(aPosition, 0.0, 1.0);\n\n vUv = (aPosition + 1.0) / 2.0;\n\n // flip dem UVs\n vUv.y = 1.0 - vUv.y;\n }",fragment:"\n in vec2 vUv;\n out vec4 finalColor;\n\n uniform sampler2D uTexture;\n\n void main() {\n finalColor = texture(uTexture, vUv);\n }",name:"big-triangle"});this._bigTriangleShader=new Shader({glProgram:a,resources:{uTexture:Texture.WHITE.source}})}renderStart(t){let r=this._renderer.renderTarget.getRenderTarget(t.target);if(this._useBackBufferThisRender=this.useBackBuffer&&!!r.isRoot,this._useBackBufferThisRender){let r=this._renderer.renderTarget.getRenderTarget(t.target);this._targetTexture=r.colorTexture,t.target=this._getBackBufferTexture(r.colorTexture)}}renderEnd(){this._presentBackBuffer()}_presentBackBuffer(){let t=this._renderer;t.renderTarget.finishRenderPass(),this._useBackBufferThisRender&&(t.renderTarget.bind(this._targetTexture,!1),this._bigTriangleShader.resources.uTexture=this._backBufferTexture.source,t.encoder.draw({geometry:bigTriangleGeometry,shader:this._bigTriangleShader,state:this._state}))}_getBackBufferTexture(t){return this._backBufferTexture=this._backBufferTexture||new Texture({source:new TextureSource({width:t.width,height:t.height,resolution:t._resolution,antialias:this._antialias})}),this._backBufferTexture.source.resize(t.width,t.height,t._resolution),this._backBufferTexture}destroy(){this._backBufferTexture&&(this._backBufferTexture.destroy(),this._backBufferTexture=null)}}).extension={type:[ExtensionType.WebGLSystem],name:"backBuffer",priority:1},_GlBackBufferSystem.defaultOptions={useBackBuffer:!1},GlBackBufferSystem=_GlBackBufferSystem}}),init_GlColorMaskSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlColorMaskSystem.mjs"(){init_globals(),init_Extensions(),(GlColorMaskSystem=class{constructor(t){this._colorMaskCache=15,this._renderer=t}setMask(t){this._colorMaskCache!==t&&(this._colorMaskCache=t,this._renderer.gl.colorMask(!!(8&t),!!(4&t),!!(2&t),!!(1&t)))}}).extension={type:[ExtensionType.WebGLSystem],name:"colorMask"}}}),init_GlEncoderSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlEncoderSystem.mjs"(){init_globals(),init_Extensions(),(GlEncoderSystem=class{constructor(t){this.commandFinished=Promise.resolve(),this._renderer=t}setGeometry(t,r){this._renderer.geometry.bind(t,r.glProgram)}finishRenderPass(){}draw(t){let r=this._renderer,{geometry:n,shader:i,state:a,skipSync:o,topology:s,size:l,start:u,instanceCount:d}=t;r.shader.bind(i,o),r.geometry.bind(n,r.shader._activeProgram),a&&r.state.set(a),r.geometry.draw(s,l,u,d??n.instanceCount)}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem],name:"encoder"}}}),init_GlStencilSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlStencilSystem.mjs"(){init_globals(),init_Extensions(),init_GpuStencilModesToPixi(),init_const6(),(GlStencilSystem=class{constructor(t){this._stencilCache={enabled:!1,stencilReference:0,stencilMode:STENCIL_MODES.NONE},this._renderTargetStencilState=Object.create(null),t.renderTarget.onRenderTargetChange.add(this)}contextChange(t){this._gl=t,this._comparisonFuncMapping={always:t.ALWAYS,never:t.NEVER,equal:t.EQUAL,"not-equal":t.NOTEQUAL,less:t.LESS,"less-equal":t.LEQUAL,greater:t.GREATER,"greater-equal":t.GEQUAL},this._stencilOpsMapping={keep:t.KEEP,zero:t.ZERO,replace:t.REPLACE,invert:t.INVERT,"increment-clamp":t.INCR,"decrement-clamp":t.DECR,"increment-wrap":t.INCR_WRAP,"decrement-wrap":t.DECR_WRAP},this._stencilCache.enabled=!1,this._stencilCache.stencilMode=STENCIL_MODES.NONE,this._stencilCache.stencilReference=0}onRenderTargetChange(t){if(this._activeRenderTarget===t)return;this._activeRenderTarget=t;let r=this._renderTargetStencilState[t.uid];r||(r=this._renderTargetStencilState[t.uid]={stencilMode:STENCIL_MODES.DISABLED,stencilReference:0}),this.setStencilMode(r.stencilMode,r.stencilReference)}setStencilMode(t,r){let n=this._renderTargetStencilState[this._activeRenderTarget.uid],i=this._gl,a=GpuStencilModesToPixi[t],o=this._stencilCache;n.stencilMode=t,n.stencilReference=r,t!==STENCIL_MODES.DISABLED?(this._stencilCache.enabled||(this._stencilCache.enabled=!0,i.enable(i.STENCIL_TEST)),t===o.stencilMode&&o.stencilReference===r||(o.stencilMode=t,o.stencilReference=r,i.stencilFunc(this._comparisonFuncMapping[a.stencilBack.compare],r,255),i.stencilOp(i.KEEP,i.KEEP,this._stencilOpsMapping[a.stencilBack.passOp]))):this._stencilCache.enabled&&(this._stencilCache.enabled=!1,i.disable(i.STENCIL_TEST))}}).extension={type:[ExtensionType.WebGLSystem],name:"stencil"}}}),init_GlRenderTarget=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlRenderTarget.mjs"(){init_globals(),GlRenderTarget=class{constructor(){this.width=-1,this.height=-1,this.msaa=!1,this.msaaRenderBuffer=[]}}}}),init_GlRenderTargetAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetAdaptor.mjs"(){init_globals(),init_Rectangle(),init_warn2(),init_const3(),init_GlRenderTarget(),GlRenderTargetAdaptor=class{constructor(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new Rectangle}init(t,r){this._renderer=t,this._renderTargetSystem=r,t.runners.contextChange.add(this)}contextChange(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new Rectangle}copyToTexture(t,r,n,i,a){let o=this._renderTargetSystem,s=this._renderer,l=o.getGpuRenderTarget(t),u=s.gl;return this.finishRenderPass(t),u.bindFramebuffer(u.FRAMEBUFFER,l.resolveTargetFramebuffer),s.texture.bind(r,0),u.copyTexSubImage2D(u.TEXTURE_2D,0,a.x,a.y,n.x,n.y,i.width,i.height),r}startRenderPass(t,r=!0,n,i){let a=this._renderTargetSystem,o=t.colorTexture,s=a.getGpuRenderTarget(t),l=i.y;t.isRoot&&(l=o.pixelHeight-i.height),t.colorTextures.forEach(t=>{this._renderer.texture.unbind(t)});let u=this._renderer.gl;u.bindFramebuffer(u.FRAMEBUFFER,s.framebuffer);let d=this._viewPortCache;d.x===i.x&&d.y===l&&d.width===i.width&&d.height===i.height||(d.x=i.x,d.y=l,d.width=i.width,d.height=i.height,u.viewport(i.x,l,i.width,i.height)),!s.depthStencilRenderBuffer&&(t.stencil||t.depth)&&this._initStencil(s),this.clear(t,r,n)}finishRenderPass(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);if(!r.msaa)return;let n=this._renderer.gl;n.bindFramebuffer(n.FRAMEBUFFER,r.resolveTargetFramebuffer),n.bindFramebuffer(n.READ_FRAMEBUFFER,r.framebuffer),n.blitFramebuffer(0,0,r.width,r.height,0,0,r.width,r.height,n.COLOR_BUFFER_BIT,n.NEAREST),n.bindFramebuffer(n.FRAMEBUFFER,r.framebuffer)}initGpuRenderTarget(t){let r=this._renderer,n=r.gl,i=new GlRenderTarget;return t.colorTexture.resource===r.gl.canvas?i.framebuffer=null:(this._initColor(t,i),n.bindFramebuffer(n.FRAMEBUFFER,null)),i}destroyGpuRenderTarget(t){let r=this._renderer.gl;t.framebuffer&&(r.deleteFramebuffer(t.framebuffer),t.framebuffer=null),t.resolveTargetFramebuffer&&(r.deleteFramebuffer(t.resolveTargetFramebuffer),t.resolveTargetFramebuffer=null),t.depthStencilRenderBuffer&&(r.deleteRenderbuffer(t.depthStencilRenderBuffer),t.depthStencilRenderBuffer=null),t.msaaRenderBuffer.forEach(t=>{r.deleteRenderbuffer(t)}),t.msaaRenderBuffer=null}clear(t,r,n){if(!r)return;let i=this._renderTargetSystem;"boolean"==typeof r&&(r=r?CLEAR.ALL:CLEAR.NONE);let a=this._renderer.gl;if(r&CLEAR.COLOR){n??(n=i.defaultClearColor);let t=this._clearColorCache,r=n;t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[3]===r[3]||(t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],a.clearColor(r[0],r[1],r[2],r[3]))}a.clear(r)}resizeGpuRenderTarget(t){if(t.isRoot)return;let r=this._renderTargetSystem.getGpuRenderTarget(t);this._resizeColor(t,r),t.stencil&&this._resizeStencil(r)}_initColor(t,r){let n=this._renderer,i=n.gl,a=i.createFramebuffer();if(r.resolveTargetFramebuffer=a,i.bindFramebuffer(i.FRAMEBUFFER,a),r.width=t.colorTexture.source.pixelWidth,r.height=t.colorTexture.source.pixelHeight,t.colorTextures.forEach((t,a)=>{let o=t.source;o.antialias&&(n.context.supports.msaa?r.msaa=!0:warn("[RenderTexture] Antialiasing on textures is not supported in WebGL1")),n.texture.bindSource(o,0);let s=n.texture.getGlSource(o).texture;i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+a,3553,s,0)}),r.msaa){let n=i.createFramebuffer();r.framebuffer=n,i.bindFramebuffer(i.FRAMEBUFFER,n),t.colorTextures.forEach((t,n)=>{let a=i.createRenderbuffer();r.msaaRenderBuffer[n]=a})}else r.framebuffer=a;this._resizeColor(t,r)}_resizeColor(t,r){let n=t.colorTexture.source;if(r.width=n.pixelWidth,r.height=n.pixelHeight,t.colorTextures.forEach((t,r)=>{0!==r&&t.source.resize(n.width,n.height,n._resolution)}),r.msaa){let n=this._renderer,i=n.gl,a=r.framebuffer;i.bindFramebuffer(i.FRAMEBUFFER,a),t.colorTextures.forEach((t,a)=>{let o=t.source;n.texture.bindSource(o,0);let s=n.texture.getGlSource(o).internalFormat,l=r.msaaRenderBuffer[a];i.bindRenderbuffer(i.RENDERBUFFER,l),i.renderbufferStorageMultisample(i.RENDERBUFFER,4,s,o.pixelWidth,o.pixelHeight),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+a,i.RENDERBUFFER,l)})}}_initStencil(t){if(null===t.framebuffer)return;let r=this._renderer.gl,n=r.createRenderbuffer();t.depthStencilRenderBuffer=n,r.bindRenderbuffer(r.RENDERBUFFER,n),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,n),this._resizeStencil(t)}_resizeStencil(t){let r=this._renderer.gl;r.bindRenderbuffer(r.RENDERBUFFER,t.depthStencilRenderBuffer),t.msaa?r.renderbufferStorageMultisample(r.RENDERBUFFER,4,r.DEPTH24_STENCIL8,t.width,t.height):r.renderbufferStorage(r.RENDERBUFFER,2===this._renderer.context.webGLVersion?r.DEPTH24_STENCIL8:r.DEPTH_STENCIL,t.width,t.height)}}}}),init_GlRenderTargetSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetSystem.mjs"(){init_globals(),init_Extensions(),init_RenderTargetSystem(),init_GlRenderTargetAdaptor(),(GlRenderTargetSystem=class extends RenderTargetSystem{constructor(t){super(t),this.adaptor=new GlRenderTargetAdaptor,this.adaptor.init(t,this)}}).extension={type:[ExtensionType.WebGLSystem],name:"renderTarget"}}});function mapWebGLBlendModesToPixi(t){let r={};return r.normal=[t.ONE,t.ONE_MINUS_SRC_ALPHA],r.add=[t.ONE,t.ONE],r.multiply=[t.DST_COLOR,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],r.screen=[t.ONE,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],r.none=[0,0],r["normal-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],r["add-npm"]=[t.SRC_ALPHA,t.ONE,t.ONE,t.ONE],r["screen-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],r.erase=[t.ZERO,t.ONE_MINUS_SRC_ALPHA],r}var BLEND2,OFFSET2,CULLING2,DEPTH_TEST2,WINDING2,DEPTH_MASK2,_GlStateSystem,GlStateSystem,GlTexture,glUploadBufferImageResource,compressedFormatMap,glUploadCompressedTextureResource,glUploadImageResource,glUploadVideoResource,scaleModeToGlFilter,mipmapScaleModeToGlFilter,wrapModeToGlAddress,compareModeToGlCompare,init_mapWebGLBlendModesToPixi=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/state/mapWebGLBlendModesToPixi.mjs"(){init_globals()}}),init_GlStateSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/state/GlStateSystem.mjs"(){init_globals(),init_Extensions(),init_State(),init_mapWebGLBlendModesToPixi(),BLEND2=0,OFFSET2=1,CULLING2=2,DEPTH_TEST2=3,WINDING2=4,DEPTH_MASK2=5,(_GlStateSystem=class t{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode="none",this._blendEq=!1,this.map=[],this.map[BLEND2]=this.setBlend,this.map[OFFSET2]=this.setOffset,this.map[CULLING2]=this.setCullFace,this.map[DEPTH_TEST2]=this.setDepthTest,this.map[WINDING2]=this.setFrontFace,this.map[DEPTH_MASK2]=this.setDepthMask,this.checks=[],this.defaultState=State.for2d()}contextChange(t){this.gl=t,this.blendModesMap=mapWebGLBlendModesToPixi(t),this.reset()}set(t){if(t=t||this.defaultState,this.stateId!==t.data){let r=this.stateId^t.data,n=0;for(;r;)1&r&&this.map[n].call(this,!!(t.data&1<<n)),r>>=1,n++;this.stateId=t.data}for(let r=0;r<this.checks.length;r++)this.checks[r](this,t)}forceState(t){t=t||this.defaultState;for(let r=0;r<this.map.length;r++)this.map[r].call(this,!!(t.data&1<<r));for(let r=0;r<this.checks.length;r++)this.checks[r](this,t);this.stateId=t.data}setBlend(r){this._updateCheck(t._checkBlendMode,r),this.gl[r?"enable":"disable"](this.gl.BLEND)}setOffset(r){this._updateCheck(t._checkPolygonOffset,r),this.gl[r?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(t){this.gl[t?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask(t){this.gl.depthMask(t)}setCullFace(t){this.gl[t?"enable":"disable"](this.gl.CULL_FACE)}setFrontFace(t){this.gl.frontFace(this.gl[t?"CW":"CCW"])}setBlendMode(t){if(this.blendModesMap[t]||(t="normal"),t===this.blendMode)return;this.blendMode=t;let r=this.blendModesMap[t],n=this.gl;2===r.length?n.blendFunc(r[0],r[1]):n.blendFuncSeparate(r[0],r[1],r[2],r[3]),6===r.length?(this._blendEq=!0,n.blendEquationSeparate(r[4],r[5])):this._blendEq&&(this._blendEq=!1,n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD))}setPolygonOffset(t,r){this.gl.polygonOffset(t,r)}reset(){this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode="",this.setBlendMode("normal")}_updateCheck(t,r){let n=this.checks.indexOf(t);r&&-1===n?this.checks.push(t):r||-1===n||this.checks.splice(n,1)}static _checkBlendMode(t,r){t.setBlendMode(r.blendMode)}static _checkPolygonOffset(t,r){t.setPolygonOffset(1,r.polygonOffset)}destroy(){this.gl=null,this.checks.length=0}}).extension={type:[ExtensionType.WebGLSystem],name:"state"},GlStateSystem=_GlStateSystem}}),init_GlTexture=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTexture.mjs"(){init_globals(),init_const10(),GlTexture=class{constructor(t){this.target=GL_TARGETS.TEXTURE_2D,this.texture=t,this.width=-1,this.height=-1,this.type=GL_TYPES.UNSIGNED_BYTE,this.internalFormat=GL_FORMATS.RGBA,this.format=GL_FORMATS.RGBA,this.samplerType=0}}}}),init_glUploadBufferImageResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadBufferImageResource.mjs"(){init_globals(),glUploadBufferImageResource={id:"image",upload(t,r,n){r.width===t.width||r.height===t.height?n.texSubImage2D(n.TEXTURE_2D,0,0,0,r.format,r.type,t.resource):n.texImage2D(r.target,0,r.internalFormat,t.width,t.height,0,r.format,r.type,t.resource),r.width=t.width,r.height=t.height}}}}),init_glUploadCompressedTextureResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadCompressedTextureResource.mjs"(){init_globals(),compressedFormatMap={"bc1-rgba-unorm":!0,"bc1-rgba-unorm-srgb":!0,"bc2-rgba-unorm":!0,"bc2-rgba-unorm-srgb":!0,"bc3-rgba-unorm":!0,"bc3-rgba-unorm-srgb":!0,"bc4-r-unorm":!0,"bc4-r-snorm":!0,"bc5-rg-unorm":!0,"bc5-rg-snorm":!0,"bc6h-rgb-ufloat":!0,"bc6h-rgb-float":!0,"bc7-rgba-unorm":!0,"bc7-rgba-unorm-srgb":!0,"etc2-rgb8unorm":!0,"etc2-rgb8unorm-srgb":!0,"etc2-rgb8a1unorm":!0,"etc2-rgb8a1unorm-srgb":!0,"etc2-rgba8unorm":!0,"etc2-rgba8unorm-srgb":!0,"eac-r11unorm":!0,"eac-r11snorm":!0,"eac-rg11unorm":!0,"eac-rg11snorm":!0,"astc-4x4-unorm":!0,"astc-4x4-unorm-srgb":!0,"astc-5x4-unorm":!0,"astc-5x4-unorm-srgb":!0,"astc-5x5-unorm":!0,"astc-5x5-unorm-srgb":!0,"astc-6x5-unorm":!0,"astc-6x5-unorm-srgb":!0,"astc-6x6-unorm":!0,"astc-6x6-unorm-srgb":!0,"astc-8x5-unorm":!0,"astc-8x5-unorm-srgb":!0,"astc-8x6-unorm":!0,"astc-8x6-unorm-srgb":!0,"astc-8x8-unorm":!0,"astc-8x8-unorm-srgb":!0,"astc-10x5-unorm":!0,"astc-10x5-unorm-srgb":!0,"astc-10x6-unorm":!0,"astc-10x6-unorm-srgb":!0,"astc-10x8-unorm":!0,"astc-10x8-unorm-srgb":!0,"astc-10x10-unorm":!0,"astc-10x10-unorm-srgb":!0,"astc-12x10-unorm":!0,"astc-12x10-unorm-srgb":!0,"astc-12x12-unorm":!0,"astc-12x12-unorm-srgb":!0},glUploadCompressedTextureResource={id:"compressed",upload(t,r,n){n.pixelStorei(n.UNPACK_ALIGNMENT,4);let i=t.pixelWidth,a=t.pixelHeight,o=!!compressedFormatMap[t.format];for(let s=0;s<t.resource.length;s++){let l=t.resource[s];o?n.compressedTexImage2D(n.TEXTURE_2D,s,r.internalFormat,i,a,0,l):n.texImage2D(n.TEXTURE_2D,s,r.internalFormat,i,a,0,r.format,r.type,l),i=Math.max(i>>1,1),a=Math.max(a>>1,1)}}}}}),init_glUploadImageResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadImageResource.mjs"(){init_globals(),glUploadImageResource={id:"image",upload(t,r,n,i){let a="premultiply-alpha-on-upload"===t.alphaMode;n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a);let o=r.width,s=r.height,l=t.pixelWidth,u=t.pixelHeight,d=t.resourceWidth,c=t.resourceHeight;d<l||c<u?(o===l&&s===u||n.texImage2D(r.target,0,r.internalFormat,l,u,0,r.format,r.type,null),2===i?n.texSubImage2D(n.TEXTURE_2D,0,0,0,d,c,r.format,r.type,t.resource):n.texSubImage2D(n.TEXTURE_2D,0,0,0,r.format,r.type,t.resource)):o===l||s===u?n.texSubImage2D(n.TEXTURE_2D,0,0,0,r.format,r.type,t.resource):2===i?n.texImage2D(r.target,0,r.internalFormat,l,u,0,r.format,r.type,t.resource):n.texImage2D(r.target,0,r.internalFormat,r.format,r.type,t.resource),r.width=l,r.height=u}}}}),init_glUploadVideoResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadVideoResource.mjs"(){init_globals(),init_glUploadImageResource(),glUploadVideoResource={id:"video",upload(t,r,n,i){t.isValid?glUploadImageResource.upload(t,r,n,i):n.texImage2D(r.target,0,r.internalFormat,1,1,0,r.format,r.type,null)}}}}),init_pixiToGlMaps=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/pixiToGlMaps.mjs"(){init_globals(),scaleModeToGlFilter={linear:9729,nearest:9728},mipmapScaleModeToGlFilter={linear:{linear:9987,nearest:9985},nearest:{linear:9986,nearest:9984}},wrapModeToGlAddress={"clamp-to-edge":33071,repeat:10497,"mirror-repeat":33648},compareModeToGlCompare={never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519}}});function applyStyleParams(t,r,n,i,a,o,s,l){let u=o;if(!l||"repeat"!==t.addressModeU||"repeat"!==t.addressModeV||"repeat"!==t.addressModeW){let n=wrapModeToGlAddress[s?"clamp-to-edge":t.addressModeU],i=wrapModeToGlAddress[s?"clamp-to-edge":t.addressModeV],o=wrapModeToGlAddress[s?"clamp-to-edge":t.addressModeW];r[a](u,r.TEXTURE_WRAP_S,n),r[a](u,r.TEXTURE_WRAP_T,i),r.TEXTURE_WRAP_R&&r[a](u,r.TEXTURE_WRAP_R,o)}if(l&&"linear"===t.magFilter||r[a](u,r.TEXTURE_MAG_FILTER,scaleModeToGlFilter[t.magFilter]),n){if(!l||"linear"!==t.mipmapFilter){let n=mipmapScaleModeToGlFilter[t.minFilter][t.mipmapFilter];r[a](u,r.TEXTURE_MIN_FILTER,n)}}else r[a](u,r.TEXTURE_MIN_FILTER,scaleModeToGlFilter[t.minFilter]);if(i&&t.maxAnisotropy>1){let n=Math.min(t.maxAnisotropy,r.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT));r[a](u,i.TEXTURE_MAX_ANISOTROPY_EXT,n)}t.compare&&r[a](u,r.TEXTURE_COMPARE_FUNC,compareModeToGlCompare[t.compare])}var init_applyStyleParams=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/applyStyleParams.mjs"(){init_globals(),init_pixiToGlMaps()}});function mapFormatToGlFormat(t){return{r8unorm:t.RED,r8snorm:t.RED,r8uint:t.RED,r8sint:t.RED,r16uint:t.RED,r16sint:t.RED,r16float:t.RED,rg8unorm:t.RG,rg8snorm:t.RG,rg8uint:t.RG,rg8sint:t.RG,r32uint:t.RED,r32sint:t.RED,r32float:t.RED,rg16uint:t.RG,rg16sint:t.RG,rg16float:t.RG,rgba8unorm:t.RGBA,"rgba8unorm-srgb":t.RGBA,rgba8snorm:t.RGBA,rgba8uint:t.RGBA,rgba8sint:t.RGBA,bgra8unorm:t.RGBA,"bgra8unorm-srgb":t.RGBA,rgb9e5ufloat:t.RGB,rgb10a2unorm:t.RGBA,rg11b10ufloat:t.RGB,rg32uint:t.RG,rg32sint:t.RG,rg32float:t.RG,rgba16uint:t.RGBA,rgba16sint:t.RGBA,rgba16float:t.RGBA,rgba32uint:t.RGBA,rgba32sint:t.RGBA,rgba32float:t.RGBA,stencil8:t.STENCIL_INDEX8,depth16unorm:t.DEPTH_COMPONENT,depth24plus:t.DEPTH_COMPONENT,"depth24plus-stencil8":t.DEPTH_STENCIL,depth32float:t.DEPTH_COMPONENT,"depth32float-stencil8":t.DEPTH_STENCIL}}var init_mapFormatToGlFormat=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlFormat.mjs"(){init_globals()}});function mapFormatToGlInternalFormat(t,r){let n={},i=t.RGBA;return t instanceof DOMAdapter.get().getWebGLRenderingContext()?r.srgb&&(n={"rgba8unorm-srgb":r.srgb.SRGB8_ALPHA8_EXT,"bgra8unorm-srgb":r.srgb.SRGB8_ALPHA8_EXT}):(n={"rgba8unorm-srgb":t.SRGB8_ALPHA8,"bgra8unorm-srgb":t.SRGB8_ALPHA8},i=t.RGBA8),{r8unorm:t.R8,r8snorm:t.R8_SNORM,r8uint:t.R8UI,r8sint:t.R8I,r16uint:t.R16UI,r16sint:t.R16I,r16float:t.R16F,rg8unorm:t.RG8,rg8snorm:t.RG8_SNORM,rg8uint:t.RG8UI,rg8sint:t.RG8I,r32uint:t.R32UI,r32sint:t.R32I,r32float:t.R32F,rg16uint:t.RG16UI,rg16sint:t.RG16I,rg16float:t.RG16F,rgba8unorm:t.RGBA,...n,rgba8snorm:t.RGBA8_SNORM,rgba8uint:t.RGBA8UI,rgba8sint:t.RGBA8I,bgra8unorm:i,rgb9e5ufloat:t.RGB9_E5,rgb10a2unorm:t.RGB10_A2,rg11b10ufloat:t.R11F_G11F_B10F,rg32uint:t.RG32UI,rg32sint:t.RG32I,rg32float:t.RG32F,rgba16uint:t.RGBA16UI,rgba16sint:t.RGBA16I,rgba16float:t.RGBA16F,rgba32uint:t.RGBA32UI,rgba32sint:t.RGBA32I,rgba32float:t.RGBA32F,stencil8:t.STENCIL_INDEX8,depth16unorm:t.DEPTH_COMPONENT16,depth24plus:t.DEPTH_COMPONENT24,"depth24plus-stencil8":t.DEPTH24_STENCIL8,depth32float:t.DEPTH_COMPONENT32F,"depth32float-stencil8":t.DEPTH32F_STENCIL8,...r.s3tc?{"bc1-rgba-unorm":r.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,"bc2-rgba-unorm":r.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,"bc3-rgba-unorm":r.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT}:{},...r.s3tc_sRGB?{"bc1-rgba-unorm-srgb":r.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,"bc2-rgba-unorm-srgb":r.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,"bc3-rgba-unorm-srgb":r.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}:{},...r.rgtc?{"bc4-r-unorm":r.rgtc.COMPRESSED_RED_RGTC1_EXT,"bc4-r-snorm":r.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,"bc5-rg-unorm":r.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,"bc5-rg-snorm":r.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}:{},...r.bptc?{"bc6h-rgb-float":r.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,"bc6h-rgb-ufloat":r.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,"bc7-rgba-unorm":r.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,"bc7-rgba-unorm-srgb":r.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT}:{},...r.etc?{"etc2-rgb8unorm":r.etc.COMPRESSED_RGB8_ETC2,"etc2-rgb8unorm-srgb":r.etc.COMPRESSED_SRGB8_ETC2,"etc2-rgb8a1unorm":r.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgb8a1unorm-srgb":r.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgba8unorm":r.etc.COMPRESSED_RGBA8_ETC2_EAC,"etc2-rgba8unorm-srgb":r.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,"eac-r11unorm":r.etc.COMPRESSED_R11_EAC,"eac-rg11unorm":r.etc.COMPRESSED_SIGNED_RG11_EAC}:{},...r.astc?{"astc-4x4-unorm":r.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,"astc-4x4-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,"astc-5x4-unorm":r.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,"astc-5x4-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,"astc-5x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,"astc-5x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,"astc-6x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,"astc-6x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,"astc-6x6-unorm":r.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,"astc-6x6-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,"astc-8x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,"astc-8x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,"astc-8x6-unorm":r.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,"astc-8x6-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,"astc-8x8-unorm":r.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,"astc-8x8-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,"astc-10x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,"astc-10x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,"astc-10x6-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,"astc-10x6-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,"astc-10x8-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,"astc-10x8-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,"astc-10x10-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,"astc-10x10-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,"astc-12x10-unorm":r.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,"astc-12x10-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,"astc-12x12-unorm":r.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,"astc-12x12-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR}:{}}}var init_mapFormatToGlInternalFormat=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlInternalFormat.mjs"(){init_globals(),init_adapter()}});function mapFormatToGlType(t){return{r8unorm:t.UNSIGNED_BYTE,r8snorm:t.BYTE,r8uint:t.UNSIGNED_BYTE,r8sint:t.BYTE,r16uint:t.UNSIGNED_SHORT,r16sint:t.SHORT,r16float:t.HALF_FLOAT,rg8unorm:t.UNSIGNED_BYTE,rg8snorm:t.BYTE,rg8uint:t.UNSIGNED_BYTE,rg8sint:t.BYTE,r32uint:t.UNSIGNED_INT,r32sint:t.INT,r32float:t.FLOAT,rg16uint:t.UNSIGNED_SHORT,rg16sint:t.SHORT,rg16float:t.HALF_FLOAT,rgba8unorm:t.UNSIGNED_BYTE,"rgba8unorm-srgb":t.UNSIGNED_BYTE,rgba8snorm:t.BYTE,rgba8uint:t.UNSIGNED_BYTE,rgba8sint:t.BYTE,bgra8unorm:t.UNSIGNED_BYTE,"bgra8unorm-srgb":t.UNSIGNED_BYTE,rgb9e5ufloat:t.UNSIGNED_INT_5_9_9_9_REV,rgb10a2unorm:t.UNSIGNED_INT_2_10_10_10_REV,rg11b10ufloat:t.UNSIGNED_INT_10F_11F_11F_REV,rg32uint:t.UNSIGNED_INT,rg32sint:t.INT,rg32float:t.FLOAT,rgba16uint:t.UNSIGNED_SHORT,rgba16sint:t.SHORT,rgba16float:t.HALF_FLOAT,rgba32uint:t.UNSIGNED_INT,rgba32sint:t.INT,rgba32float:t.FLOAT,stencil8:t.UNSIGNED_BYTE,depth16unorm:t.UNSIGNED_SHORT,depth24plus:t.UNSIGNED_INT,"depth24plus-stencil8":t.UNSIGNED_INT_24_8,depth32float:t.FLOAT,"depth32float-stencil8":t.FLOAT_32_UNSIGNED_INT_24_8_REV}}var BYTES_PER_PIXEL,GlTextureSystem,DefaultWebGLSystems,DefaultWebGLPipes,DefaultWebGLAdapters,systems2,renderPipes2,renderPipeAdaptors2,WebGLRenderer,init_mapFormatToGlType=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlType.mjs"(){init_globals()}}),init_GlTextureSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTextureSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_Texture(),init_GlTexture(),init_glUploadBufferImageResource(),init_glUploadCompressedTextureResource(),init_glUploadImageResource(),init_glUploadVideoResource(),init_applyStyleParams(),init_mapFormatToGlFormat(),init_mapFormatToGlInternalFormat(),init_mapFormatToGlType(),BYTES_PER_PIXEL=4,(GlTextureSystem=class{constructor(t){this.managedTextures=[],this._glTextures=Object.create(null),this._glSamplers=Object.create(null),this._boundTextures=[],this._activeTextureLocation=-1,this._boundSamplers=Object.create(null),this._uploads={image:glUploadImageResource,buffer:glUploadBufferImageResource,video:glUploadVideoResource,compressed:glUploadCompressedTextureResource},this._useSeparateSamplers=!1,this._renderer=t}contextChange(t){this._gl=t,this._mapFormatToInternalFormat||(this._mapFormatToInternalFormat=mapFormatToGlInternalFormat(t,this._renderer.context.extensions),this._mapFormatToType=mapFormatToGlType(t),this._mapFormatToFormat=mapFormatToGlFormat(t)),this._glTextures=Object.create(null),this._glSamplers=Object.create(null),this._boundSamplers=Object.create(null);for(let t=0;t<16;t++)this.bind(Texture.EMPTY,t)}initSource(t){this.bind(t)}bind(t,r=0){let n=t.source;t?(this.bindSource(n,r),this._useSeparateSamplers&&this._bindSampler(n.style,r)):(this.bindSource(null,r),this._useSeparateSamplers&&this._bindSampler(null,r))}bindSource(t,r=0){let n=this._gl;if(t._touched=this._renderer.textureGC.count,this._boundTextures[r]!==t){this._boundTextures[r]=t,this._activateLocation(r),t=t||Texture.EMPTY.source;let i=this.getGlSource(t);n.bindTexture(i.target,i.texture)}}_bindSampler(t,r=0){let n=this._gl;if(!t)return this._boundSamplers[r]=null,void n.bindSampler(r,null);let i=this._getGlSampler(t);this._boundSamplers[r]!==i&&(this._boundSamplers[r]=i,n.bindSampler(r,i))}unbind(t){let r=t.source,n=this._boundTextures,i=this._gl;for(let t=0;t<n.length;t++)if(n[t]===r){this._activateLocation(t);let a=this.getGlSource(r);i.bindTexture(a.target,null),n[t]=null}}_activateLocation(t){this._activeTextureLocation!==t&&(this._activeTextureLocation=t,this._gl.activeTexture(this._gl.TEXTURE0+t))}_initSource(t){let r=this._gl,n=new GlTexture(r.createTexture());if(n.type=this._mapFormatToType[t.format],n.internalFormat=this._mapFormatToInternalFormat[t.format],n.format=this._mapFormatToFormat[t.format],t.autoGenerateMipmaps&&(this._renderer.context.supports.nonPowOf2mipmaps||t.isPowerOfTwo)){let r=Math.max(t.width,t.height);t.mipLevelCount=Math.floor(Math.log2(r))+1}return this._glTextures[t.uid]=n,this.managedTextures.includes(t)||(t.on("update",this.onSourceUpdate,this),t.on("resize",this.onSourceUpdate,this),t.on("styleChange",this.onStyleChange,this),t.on("destroy",this.onSourceDestroy,this),t.on("unload",this.onSourceUnload,this),t.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(t)),this.onSourceUpdate(t),this.updateStyle(t,!1),n}onStyleChange(t){this.updateStyle(t,!1)}updateStyle(t,r){let n=this._gl,i=this.getGlSource(t);n.bindTexture(n.TEXTURE_2D,i.texture),this._boundTextures[this._activeTextureLocation]=t,applyStyleParams(t.style,n,t.mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"texParameteri",n.TEXTURE_2D,!this._renderer.context.supports.nonPowOf2wrapping&&!t.isPowerOfTwo,r)}onSourceUnload(t){let r=this._glTextures[t.uid];r&&(this.unbind(t),this._glTextures[t.uid]=null,this._gl.deleteTexture(r.texture))}onSourceUpdate(t){let r=this._gl,n=this.getGlSource(t);r.bindTexture(r.TEXTURE_2D,n.texture),this._boundTextures[this._activeTextureLocation]=t,this._uploads[t.uploadMethodId]?this._uploads[t.uploadMethodId].upload(t,n,r,this._renderer.context.webGLVersion):r.texImage2D(r.TEXTURE_2D,0,r.RGBA,t.pixelWidth,t.pixelHeight,0,r.RGBA,r.UNSIGNED_BYTE,null),t.autoGenerateMipmaps&&t.mipLevelCount>1&&this.onUpdateMipmaps(t,!1)}onUpdateMipmaps(t,r=!0){r&&this.bindSource(t,0);let n=this.getGlSource(t);this._gl.generateMipmap(n.target)}onSourceDestroy(t){t.off("destroy",this.onSourceDestroy,this),t.off("update",this.onSourceUpdate,this),t.off("resize",this.onSourceUpdate,this),t.off("unload",this.onSourceUnload,this),t.off("styleChange",this.onStyleChange,this),t.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(t),1),this.onSourceUnload(t)}_initSampler(t){let r=this._gl,n=this._gl.createSampler();return this._glSamplers[t._resourceId]=n,applyStyleParams(t,r,this._boundTextures[this._activeTextureLocation].mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"samplerParameteri",n,!1,!0),this._glSamplers[t._resourceId]}_getGlSampler(t){return this._glSamplers[t._resourceId]||this._initSampler(t)}getGlSource(t){return this._glTextures[t.uid]||this._initSource(t)}generateCanvas(t){let{pixels:r,width:n,height:i}=this.getPixels(t),a=DOMAdapter.get().createCanvas();a.width=n,a.height=i;let o=a.getContext("2d");if(o){let t=o.createImageData(n,i);t.data.set(r),o.putImageData(t,0,0)}return a}getPixels(t){let r=t.source.resolution,n=t.frame,i=Math.max(Math.round(n.width*r),1),a=Math.max(Math.round(n.height*r),1),o=new Uint8Array(BYTES_PER_PIXEL*i*a),s=this._renderer,l=s.renderTarget.getRenderTarget(t),u=s.renderTarget.getGpuRenderTarget(l),d=s.gl;return d.bindFramebuffer(d.FRAMEBUFFER,u.resolveTargetFramebuffer),d.readPixels(Math.round(n.x*r),Math.round(n.y*r),i,a,d.RGBA,d.UNSIGNED_BYTE,o),{pixels:new Uint8ClampedArray(o.buffer),width:i,height:a}}destroy(){this.managedTextures.slice().forEach(t=>this.onSourceDestroy(t)),this.managedTextures=null,this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem],name:"texture"}}}),WebGLRenderer_exports={};__export(WebGLRenderer_exports,{WebGLRenderer:()=>WebGLRenderer});var init_WebGLRenderer=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/WebGLRenderer.mjs"(){init_globals(),init_Extensions(),init_GlGraphicsAdaptor(),init_GlMeshAdaptor(),init_GlBatchAdaptor(),init_AbstractRenderer(),init_SharedSystems(),init_types2(),init_GlBufferSystem(),init_GlContextSystem(),init_GlGeometrySystem(),init_GlBackBufferSystem(),init_GlColorMaskSystem(),init_GlEncoderSystem(),init_GlStencilSystem(),init_GlUboSystem(),init_GlRenderTargetSystem(),init_GlShaderSystem(),init_GlUniformGroupSystem(),init_GlStateSystem(),init_GlTextureSystem(),DefaultWebGLSystems=[...SharedSystems,GlUboSystem,GlBackBufferSystem,GlContextSystem,GlBufferSystem,GlTextureSystem,GlRenderTargetSystem,GlGeometrySystem,GlUniformGroupSystem,GlShaderSystem,GlEncoderSystem,GlStateSystem,GlStencilSystem,GlColorMaskSystem],DefaultWebGLPipes=[...SharedRenderPipes],DefaultWebGLAdapters=[GlBatchAdaptor,GlMeshAdaptor,GlGraphicsAdaptor],systems2=[],renderPipes2=[],renderPipeAdaptors2=[],extensions.handleByNamedList(ExtensionType.WebGLSystem,systems2),extensions.handleByNamedList(ExtensionType.WebGLPipes,renderPipes2),extensions.handleByNamedList(ExtensionType.WebGLPipesAdaptor,renderPipeAdaptors2),extensions.add(...DefaultWebGLSystems,...DefaultWebGLPipes,...DefaultWebGLAdapters),WebGLRenderer=class extends AbstractRenderer{constructor(){super({name:"webgl",type:RendererType.WEBGL,systems:systems2,renderPipes:renderPipes2,renderPipeAdaptors:renderPipeAdaptors2})}}}}),src_exports2={};__export(src_exports2,{Blackboard:()=>Blackboard,ContextPreview:()=>ContextPreview,Describer:()=>Describer,EnvConfig:()=>EnvConfig,GithubStar:()=>GithubStar,Logo:()=>Logo,Player:()=>Player,PlaygroundResultView:()=>PlaygroundResultView,PromptInput:()=>PromptInput,ServiceModeControl:()=>ServiceModeControl,ShinyText:()=>shiny_text_default,actionNameForType:()=>actionNameForType,allScriptsFromDump:()=>allScriptsFromDump,blankResult:()=>blankResult,cancelTask:()=>cancelTask,checkServerStatus:()=>checkServerStatus,colorForName:()=>colorForName,filterBase64Value:()=>filterBase64Value,formatErrorMessage:()=>formatErrorMessage,generateAnimationScripts:()=>generateAnimationScripts,getPlaceholderForType:()=>getPlaceholderForType,getTaskProgress:()=>getTaskProgress,globalThemeConfig:()=>globalThemeConfig,highlightColorForType:()=>highlightColorForType,iconForStatus:()=>iconForStatus,overrideServerConfig:()=>overrideServerConfig,requestPlaygroundServer:()=>requestPlaygroundServer,staticAgentFromContext:()=>staticAgentFromContext,timeCostStrElement:()=>timeCostStrElement,timeStr:()=>timeStr,useEnvConfig:()=>useEnvConfig,useServerValid:()=>useServerValid,useStaticPageAgent:()=>useStaticPageAgent}),module.exports=__toCommonJS(src_exports2),init_globals(),init_globals();var import_react=__webpack_require__(4194);init_globals();var import_constants15=__toESM(require_constants()),import_playground=__toESM(require_playground()),serverBase=`http://localhost:${import_constants15.PLAYGROUND_SERVER_PORT}`,checkServerStatus=async()=>{try{return 200===(await fetch(`${serverBase}/status`)).status}catch(t){return!1}},requestPlaygroundServer=async(t,r,n,{requestId:i,deepThink:a}={})=>{let o={context:t,type:r,prompt:n};return i&&(o.requestId=i),a&&(o.deepThink=a),(await fetch(`${serverBase}/execute`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).json()},overrideServerConfig=async t=>fetch(`${serverBase}/config`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({aiConfig:t})}),cancelTask=async t=>{try{return(await fetch(`${serverBase}/cancel/${t}`)).json()}catch(t){return import_console_browserify.default.error("Failed to cancel task:",t),{error:"Failed to cancel task"}}},getTaskProgress=async t=>{try{let r=await fetch(`${serverBase}/task-progress/${t}`);return await r.json()}catch(t){return import_console_browserify.default.error("Failed to poll task progress:",t),{tip:null}}},actionNameForType=t=>"aiAction"===t?"Action":"aiQuery"===t?"Query":"aiAssert"===t?"Assert":"aiTap"===t?"Tap":t,staticAgentFromContext=t=>{let r=new import_playground.StaticPage(t);return new import_playground.StaticPageAgent(r)},formatErrorMessage=t=>{let r=t?.message||"";return r.includes("of different extension")?"Conflicting extension detected. Please disable the suspicious plugins and refresh the page. Guide: https://midscenejs.com/quick-experience.html#faq":r?.includes(import_playground.ERROR_CODE_NOT_IMPLEMENTED_AS_DESIGNED)?"Unknown error":r},getPlaceholderForType=t=>"aiQuery"===t?"What do you want to query?":"aiAssert"===t?"What do you want to assert?":"What do you want to do?",blankResult={result:null,dump:null,reportHTML:null,error:null},useStaticPageAgent=t=>(0,import_react.useMemo)(()=>t?staticAgentFromContext(t):null,[t]);init_globals(),init_globals();var import_dayjs=__toESM(require_dayjs_min());function timeStr(t){return t?(0,import_dayjs.default)(t).format("YYYY-MM-DD HH:mm:ss"):"-"}function filterBase64Value(t){return t.replace(/data:image\/[^"]+"/g,'data:image..."')}var mousePointer="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABfCAYAAACgCTpnAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAS6ADAAQAAAABAAAAXwAAAAARa1b5AAAaTElEQVR4AeVcB7iUxbme3T2FKl1BlKZgFDWo2JCiPCpgohQBsRB7iTwmJrZriD0RSACDBb3Gq6i5sWCEq6KiCNhBrKBIUzw0KYfqKbtn233f2X1/5vzssntOaJrveWa/mW/6+38z883882+osrLyTwcddNCX06ZNCxhjiuCKHcdwYdoVgIfSLgjO9HLwVvMz/NOjWCw2NxqNvv/JJ5/0QO8awzVxHMON4PaDawBXD64uHAEliAIwE3iI/olReXn5E0lQPB4vWbJkySXo3v6OawF/c7imcATOBY2AUfP+YwALAqyl6LAJBoNtOnbs+NjatWtHnnHGGdQmAuF3rjYRJGqUX6s4NEnuEE1Jfuy/n3322QBqlktbtmx5c9y4caehbx3g2sG1gTsIriUctY2aRi2rD/efMywnT57cLZFIVLhg0R8Oh7974403rgYYh8F1hCNwbeFawx0A1wyOGqi57Cc/jwWXL19egUm+FJ020RfH4CdMrykuLm57+umnT1i4cOH1xx9/POerOhQ7zl0ptUqS/2SHZah58+aNzz777LMKCwtbRv9vvIm996wJHX6KCdRvbAKBQEGLFi26nnPOOR0ikciijz76qAJgcC4iICTNS+QiyRimP5nmDJPctCnJj+W3ZcuW7TBHvWWH3t9/kyy/5tBkxfVdkrFPp1cbmVgISiZNmjQC/ToG7kg4Ds/2cJzL/MPyJzmPBbH6JTA/bUCHTbD5wWQmGS4zkUdHmOi/RhuTiFtZvXr12lx00UVj3nvvveGtW7duCKE7LLVqarWUOfGTGpZ2foHWrCUigTRYFh38RGf8jwmPv9Akt6yzolAoVP+UU0753TvvvDNyyJAh1CgBRi7ANJcJMNYhpyEoznJdP8P7LFmwNm/e/D1amPCDxVYnvvnEhP98jokv+sDrRIcOHX7xxBNPPPjkk0/2glCAafIXWH4tE2C2TuRzQXL9Xj37mocNN2vWrFkH8yEabE5zakdKlm0ykfsvNdHXJmKMcr6GgVW/frsLLrjgz2+++eaQZs2a0d4SaNIwguUH7Ec9LNn4xm3btg327t17cLBew+Lo6w97gCDOoaRJLJ5jEt99YUKde5lAUR1a/UXQsu5Dhw5tDRNk4eLFi2l3UEtcpzL82uOGs/mVd5/gBKsR5qzkZZddNqygsLBBbO4UYyq2Zm1cckOJic97xYQ6HGsCTWjQA+3GjTtii3RUkyZNlr/11lubIBJYjJZfgIgzjuQPZ5PZxHvzh8Mw+dVXX0WqqqrWsyFaEXfWqCSmuPC4YSY2+2kvGey1n994440TXn/99XNhs9F04LB0h2a+w1JlZgJRcXuFW7AAVALatZItyDTJZ2xZPGaqnrvbRB77LUyNcpsEIDU688wzb/3iiy9uOO2007iH9AOmyZ8rZbbVkiAJKNdv69ibPxYsNCC5devWNFiZJ/lsjYx/8qqJjB5oEmuW2CSw+gOHH374ec8///xfbr/99s4QCjByd/IXYDsDTdUKPIX3CvfA2rhxowUrn2Hob2li3XITHjPYxOZO9aIwLI+99dZbJ+AE9hwINRxlXpDvTMukUS5Irt+rZ096PLDWrVtn56y8h6G/lVWVpmrSTabqn7cZE6uysXXq1GnWr1+/2z7//PMR2JRzS+SCJrBc84JaxjbJ+UFT2Ja/p39CqJBHLKFevXo1PfbYY38RLK5TGHvj0Vq3I7HiSxP/6u3UZrxeI27GA9h/dgFonXG6sXjOnDnbULg6La76GCaJ+/020hcv2W7nnmatWLFiM87itwTYQbh/hxIrvjLheweY+Py3vGJwenHcPffcMw5W/2kQah7TsNRcpnmMD5GO7ROg4hBZcgGVbLdyNojWN0yswuB5553Xt6ioaP/4p69hxrejsvaVxyIm/sk0Y6rCJnTYSehy0KDs/Y466qjeOPIpnD179iLMkwlUIBDEWacLhOtXeyRz8yhut3E+OVJy1qxZZdAsa43Wet5KlbX9F1ujKIZ0+G/DAb492KDVX3jcccddgc34mN///vedkDiTlrk2mbRMmuZqm+oSeArvFu4NQ5SexAEfre+8DNOatCaxdB6GJTbjS+Z62Q444IBud99997innnpKm/GdTf6ZgPJr1W4HzAUrgdOHEvYm0CJ1ruX1bBd4kttKTWTCxSY6/b/xWLzN+MEXXnjhaEz6lzZt2lSb8Uyg5TuX+QHcBS3fXoQLVnLDhg0rGRXIcvqwPVstfThIjE4dayITrzLJ9P4Tw7L4xBNPHIGXvHdcfPHFbVGyOyw18cvMkAHrahr7QHI1y/WnYnfBbzWwVq1atQZnyYnaGKY1aUv8y9kYlv1NomSBl61du3Z977///vGPP/54Dwhd7XINWNlkBEuAERj2w69VuxywamDNnTt3FSqNB5oeiOrZlt1HyY2rTXgsNuPvPONVst9++x0yfPjwUR9++OEl8GtYuuaFO/H7tUxgibNc1+/VU1sPEeFTJC/AUUsRzqbOgR3RMDbnXziqof24GwnDMv7lLJNc/50JHdGTBoxdLXFR5YTBgwc3w6Hksq+//roSLVCnxdUohl1yw9n8bvoa+TXeOeMm169fH8HLizUsIdupaY1KzzNxbN7L2FsOMom133g5cJVgIIbkfRMnToSRVm0e07B05zFpGfsjlwtYr658PdWGIV6ohisqKtYy826b5LO0LPH9MhMePcgeLCoJhmKnyy+/fBTOyAbVrVuXN3jcuUxgaR4TYO5ctksBqwYW7KzEDz/8sJqN3R3mg0DIyiMVJvL470zVs3dhMx61yWD1N+7Tp89IbMZvwarJKwMELBNoBEuASbvIBRg5SeFUqAa/1cBCvuSmTZvSw3DX21r5tiv29j/s5J/cZJ+bzdapU6dBr7766t/uu+++rhC4gFHDpGUCbGegqRkCT+GcnGCROGdxn0awSmk+7LItD0uvBSVK5lvzgmaGCIbr0ddcc80ogNYfMgGWS8t22bCUZrE9dpLHClTKWzV7GyzboPKt1oCNvnSf92YcZ2TN+/bt+8dFixbd1LVr16Zp0HKZF+ynnIahNEthVrlTIupUYWs6kHfu3Lluz549zy6oW79BbOYk7yAPcXuNEsvmmcSyj9G4niZQXM+ekeEktjMutHTCcdmyDz74gDaOOi2u9rqg+GUKkyudK6vmF1hEnf5QWVkZX4sNxJFNk9RRTeq0oFquvRBIblyFlfIlE2r3c2ONZrShYcOGB3fv3v0UnGJswpl/CUQCSh3Pxf09UXq/3IY1DO0QhCSJVacSb3s2M3ZfGIq2lekfHvOE77vIRN98zBPjwsqBAwYMuAtmzw0Yllot3WGpyZ8mhlUI8ExDUkCRy+/VQw8zsxBPs+AvuO66607GUzssiSPixDefQrQPEU4sEl+/bxKrvk69GS8s5rAM4ST2KAzLQ2H+LME9sh/QYnVanJ1wQcgmV2fdtFZGkESedsHWWkPhnjZM1ZB8ePyLGanN+MqFXvJWrVp1HzNmzP0Ykn0g1Grpt/ipHDItqCzEQMCJQ2SpGmBM6IGU9iew7VnBpPvaMGSbXEqWrjThvw41sfef98Qclueee+6dOBS4HLYZXya4oAk4AuYOy52B5gGYcRji3kITnJUPYKrYrKe8huyTHm7G5880XABCR3THxFLIYVmAC3fH9+/fvw32uss+/vjjMrTd67TjdzXHH08lqhZPsKSS1DIbxiux+lhlhgTqNAhFX38Eusd8+zYlVi0y8QUz8XLkZBNowI9EcOOlUaMOPXr0OAbArXzttdf4BkaAiDOZCwjDoh3kBIgkNOyQxCFgGVbEjSZU4N2USSXbt38TqxdjMz7Q0OQRAbBOv/71r8dj0r88fXStlVJDUqultkpUGDpiI1AtV4QiyQuwEhbgXKsPrnfvn0irOOQ/DsIG3NqHldtM6Gfd0OWgPSPjsDz//PPbYDu3GBdXdOvaBSNn/yw4SEUUvWG4bdu2IJ7GaZgs2/GaJF+a/tgosfwLE4eJETqihwnU5X1hOywPOfXUU7tg1SzBsY//xahGV9auEiA79FwO9GOYGO2HBPv6ipi1Z4hILP88tRlf+K6XDBfujhgxYsQE3Lq+EEIOQQ3DnCYFwfITweN9LYv87n554a98V4eTZZtN5MErTPSV+6EWPFjBPFNQwFvXN3777bcjMd3wwormKy12HHF0xEdD1QYQ3lG7SktLV0G+149q2Lh/mwBSdNoDJvLAZYaXiUXt27cf/Oijj47D0fVRkAkocoLkOgsYBRqr1YbjahCOaiL7shWPtteIOIfZV3Dfbt/CYbU85oorrpg4b968IShM2iTuahZua6RoB8AWLFjwPcCqCtTHrZr0BFmjlu2jiZOb19oPIdxXcDhhaY5N+D3Qjz/icJEfo2roudwKZfZT/ein/VGHW4X58+e/QfPBPg1nD4b4PUt4hxkoxmvEOvXteZaBPwC/4dkWXEqeik/J3LRIY9MyL+XMA57lvSiOqN6bOXPm3bD+P0cnY2kXB48ToGrDT2F8AhzGDn4NwbIr4h4AK9D4AFN8JSZiCwbu2AkMnCzUlPAZcxSOt7Ar+UEEqDJWFQvHK8sq4/GtlbhYx08H6XhwWI6+boZ/K64TVEDTiMsOlEnogYfXYqvxOqoLV0RCu7uJ3wgl8MK14KRBtio0PoYv1jYnk9vojaPDYfxbQAU6Vo62lWHFroAmlMFfCVaOj7a2godh+lQiTRTyKC4WhwFYHOVEcJpShbgwZLzHSa3hKyRx+iknpyNperKBrJrFhDBOv8cVxz16VBOdMtaEuvSxQwcaEb/zzjufx6d73wCYCNqkYeFyO0QQR7vAdXro9kWME6f05G459Cs/8yqfyvFMB8RVG442IW7mrWDEnnyHmNy2wcRefZDV8qZgMY64TwJQfNLqnDSA4NGF4fiKn1uYTI5xrmN65XU1ScAJTIHkcf9qiHK2g/Y9iII9bZhGZz1p7z+w7i6gO+6443B4/WCxowKLALigZQJPgCltNsAEFnk17RJYkG8HKe1PYA7YgkmyItC0ddbVgxnzIpxgFA66Ja+kfBtdNfnPNi0m3NDVV199FjbCnDIEGLWAYAkwgSZAqGHyu1xAiSs/uTSLXEC5w9IOQ6qZSH6reiUlJfYGsz2qadxSaWrFC3/5W1N4xhUmdMyZeeXny1VeESdh49vu3nvvPQFeNt4FzD8kpS0EwwVJfoGkdOQEiuXQuUCxHm8I0i/NkhCy7Qnwnw9buSBR+O8MxeChXU1hn6tYjCk69w+w5vIzBax24Rsh0qBBg/rjzkNTeNnWbKBJU1wwsvmZ1gVKYLmAuZrlgYV8lqqB9vbbb/MQ0IJV20kep62m+JKxWCWCBkM6VtWgeWXh6Zervp3yJD5zic6cZNM0aNCgKT5v6Y1PjxkWYAJN2iYNIRcY0h4BKbmbln6CJKDcYShMsoJlEwAofmxuTx9qu0csHHaHCTRrjXYYg5cI82AGvFTY95q8T2Bjrz4EG8aeFhmcFPTDZ3qH2sJSP+qIHzR1XCAIGMpdmdIRHDlpE7nKJ/fmLAkpIymcgDFnzYfaDMPQsf1MwYkDbIEwCLfiKveMG2644cNV6zd+WzTwFivP9cN/AohO/atNhqOVupjsB+HVPbdl3LeJvPZC4AInjRMoLhc44i5IAkqc9excs5gA1m7qELCG1725dSm68B5WYmBcJp555pmXp0+fvho2U+WECRNeTB7Ttyp4yHE2PtdPbM4UXNadb5Phou4JY8eO7YYA51u6aptdmyj1sN3OExCGXZ4NJAGkByBuK0uXb7WJfkVajgOy5akrSG2ULjcPBEzRr8Z43wDhBGMeNOo9ZLTzBsD6El/Pzi0aepudy3IWiLdLVc8BeHC+fcbnLENgfu2HfJzA6Fzg3OLcvrjgUe6G5XfT0y+yclZCUoTLbQIcv64CWDiqwd+tYLLOhwpOHW6/CmNaaOYGTMxTsGfj8m3B4h5v9OjRU6r2P2RrQbfB+RRpj4j1PSOOhg99+OGHmZG2F8EiZ18EnLQNouoPPx0mOLZ/eXIkS1VgPc5PtUKWLl1ajlWMdwfyekMdbHmIKRp4s4pLTpky5SW8s1sFAVcl2jl2KX/22WeXv//++y8XDrgh7/Myzl36xPjoo4/uiyPhA1Ee5y+CJeD82qahiiQeufOdJ8zlkWYxnQuSF4YVX4XdOzube48IK73o0nGeHYXzsA/wlmg2slqNAhdg1jiExr2yLR4qKfzFdYjKTbxFE3vtIZsQb56a33XXXb9CgGC5zgVNQEnTagWSWuaCJRm5Bxy+Q4zgWGQNhbmue7PTwTadmdTgxKIUnZkC08PTJohlQVuOo9wN+JRucqjXRYlgyw42X64f2l38uwQSrn+filMJnp/739D4AfODxuw1Bo6FEBiSB5Drx5IfxwdQK5lgZ6/Fgh2OgZV+NZNhHk5y9XvuxRdfXIGgtKoaUJDbMF5Lvb6udOO8wiF/ZNbc5OwbYaDWufLKKy/GCsnJ1A+YhqPmMQGWu44sKVgASYClQj7gANhaRmQFq7iuKb4EtlD6qBbz3KcYYh8gi4Cy8xTC4gTK+nHuXfbyyy8/E/jZKVWho3tDnJviC2Zh3/iOTXjggQd2HTVqVE8ENHeJU7vYPzl3KNZYq1gZC3JJ2kUZ/XbVwLmWfX+UzTAtGvRfmM/a2nIAbOnIkSP/F9qo1c8PmIASj1x11VUfLlu2bFrR4D9gmmZfc1N08p9gNdHGNOass866CG5/eF2gpFnsowsUs4hqBJofLBayA2CY5NdjRSyzRzXeC6FUfXw9XtDzAhuA7RmbOnXqC6AVELggZfK7sgi+CHs62qjVxsLel6YKzvHLv0fguRcJR98H33zzzX3gpTbJCSx3GDJ5jQBiBpELFkESCTDLcY26FKcPZXzq+v8ZJuSH50XDRymPgXZ8fO21186CgPsvgiHHISd/Rv7QQw8tx4WN5wr6XWsCjVogeW6KTXvQ2zeefPLJQ7Fv7IhcmUDya1etAHPBYusEkutP4m+fSqlZFLpD0W6Ssa0h4QXBNnz98ELa+MwFjsAk9xy0Y3J5LPlt4YAbbZm5flL7xrE2GY6gG+Gd3xB848OhyH5JowiM62z6tEz+vLgfLGUSaJbjXKsSVnfqqCb97208xCs4/mybHqtf8pVXXvnnI488sgSCTJrjAYJ4+TnhyG85zIhNuN0yMXTCgFiw/c9t2bl+YnNe9PaN7du3Px2v4rsijzSJXP5MgOUqvlp8PmBxkudRzWrm5IoYaNDUFJ1/t1fQypUr511//fVvQOAHqhoYiHd3/a5f6apgxL69obT046Kht6OyPEYL5tDEioW2LfyyH9e8r8IHUXiL6mkT4/wF+cM2f64fgVVNk9KZXBmPakooD7ZoA6DuMoGGvHIOYykc3oil+zHeFkQw0/AjEC4w2u2LK86mw4WUMGy0h5MHdy4vOHEgq8hKwVaHmjo3P28KegyzaWjf4VTj+yOPPFKbWPZBVCuAlJmcK0cmqgYUEiSwIU5pVrODTLB9Fy8PNtocft9AoE672iWNYZzAseYIwmy8OsOHxjRMH7rpppvm4/X5jLYDb+wf/3y6tx9EXIpgz/E8v/CXv0EPaIsawxt9M2bMeBZf80/HYkSzhfWI1B+Fa8WlWW5mdYAy+u0wxB/7rOR1HV50FcH++gx/xzkV4Xw1ypalMsEFoMC0gGF+jIwfP/7vkaKGawv6jVB1lgdbdbTaZBcBAAVNKsXx99PdunW7Gf948haAUlluXW6fqpVXk4AfLBVK7gEFfxz/6bc2vmB2vKD7ebZ8rI7l+Cz3bwCxHAJpk0CTRpELEHK3A34/O2nBAo8+8MADJdiIP13Y+5KkNXipTTiOrvOHqSbY9mgDTCpgakzD3xvcgquP/8D/DW5L5xdYbn3qj8uRvPbEYUHwODT5+oWTJC/dN4dr9cLvhp4d2bSef2VgCR0ZDznHIx2Xrs5wh8EdAtcGrhUcJzYe0uGqiy2TyzrL57JOzjDrYjzTMT3ztYXrdNJJJ52IufJT/NNIMv7dfFWdxIIy97bbbrseafrAnQ7XC64b3HFwR8J1gmMZbhvYH9bFOl2zAsH8iA3ORHoCevrxf60NLT2rTgO+vGiFLc1Hw4YNexp+ahSJ6aRB1CZpiPt0mUblkoso54NSGczLhxbEP4lswd8WTML3hXwgAdS7FPPSM9g8v4spgOlYDutQfWyPtJqybPUjquaUCSx1hI1no1lh4N133/0B2xncaEmW40DvHnyF9QPlcEzPtHRsoBrJfHKMYzrXIegR42094CyTzhLmxDfxhcTTWHUj2Jy/gO3UFkQonuWpDj0kAea2xa2f5aod9OdNqlQZCA5l9smCU101ZEJYER9CozfgT3fGpNOAeRWr0eIuaGysv8HMy7r89fEB0mnIilOm9qjdKpd1ChxyAScZ0zGN2wYCRhJPhXby69csZmRDhDy5KjJ4nf8CzqgWQMbGqKNKq8YILHUkUwOR3RLzklSGV1dKvIOcYKle5VMe1SuAFFY7VIfqTFeRP9MTUg41JJOGSdvElVeNUKPUeDesNGooufKrTnKWTUDEPa1Oy1Q3gpZUruoUQOLZ2uC2Q2Xl5H7NUga3MPpZuRpGzka4JJm4GunmoZ/kcgKksOLcspWf9Qsogaz0TKP6XK42U6ZyxJm3xpQPWKxMDVTDGHZlaoTiFXYbysZRno2Ul/HKL06gVKfqVTnKJ646/Vzluvnkz4v7K1bYbVgmv79wdSoTZ1rKSeKpUOrXXyelfnDcsJuXfrdOAeTKVKe48vjLyRlWQ5VQ4UycMr+c+dQIl9Pvht109PvJX67qcjnzKJ2b31+Xwv76mUcyN3/e/kyVSybOwuj3h1WJ2wD5s3Hl8fNMZUvm5/68DLO+XHUqPlP+vGRqiJvYL3PDrt/NQ7/bGNfvj/PnU9hftht2/Urvcrc+1880/rCbr0b+bI3IJM8k81eWqWGZZP58Cu+sjmxx2crPJlddNeb/D/KyIM/aYvSmAAAAAElFTkSuQmCC",mouseLoading="data:image/png;base64,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",import_ui_utils=__toESM(require_ui_utils()),import_extractor=__toESM(require_extractor()),stillDuration=900,actionSpinningPointerDuration=300,stillAfterInsightDuration=300,locateDuration=800,actionDuration=1e3,clearInsightDuration=200,cameraStateForRect=(t,r,n)=>{let i,a=r/n,o=(i=t.width/t.height>=a?t.width:t.height/n*r)>400?.1:i>50?.2:.3,s=Math.min(r,i+r*o*2),l=n/r*s,u=Math.min(t.left-r*o,r-s);u=Math.max(u,0);let d=Math.min(t.top-n*o,n-l);return{left:Math.round(u),top:Math.round(d=Math.max(d,0)),width:Math.round(s)}},mergeTwoCameraState=(t,r)=>{let n=Math.min(t.left,r.left);return{left:n,top:Math.min(t.top,r.top),width:Math.max(t.left+t.width,r.left+r.width)-n}},allScriptsFromDump=t=>{let r,n,i,a,o;if(t.executions.forEach(t=>{t.sdkVersion&&(i=t.sdkVersion),t.model_name&&(a=t.model_name),t.model_description&&(o=t.model_description),t.tasks.forEach(t=>{let i=t;i.pageContext?.size?.width&&(r=i.pageContext.size.width,n=i.pageContext.size.height)})}),!r||!n)return import_console_browserify.default.warn("width or height is missing in dump file"),{scripts:[],sdkVersion:i,modelName:a,modelDescription:o};let s=[];return t.executions.forEach(t=>{let i=generateAnimationScripts(t,-1,r,n);i&&s.push(...i)}),{scripts:s.filter((t,r)=>r===s.length-1||"Done"!==t.title),width:r,height:n,sdkVersion:i,modelName:a,modelDescription:o}},generateAnimationScripts=(t,r,n,i)=>{if(!t||!t.tasks.length||0===n||0===i)return null;let a=[];if(-1===r)a=t.tasks;else{let n=t.tasks.findIndex(t=>t===r);if(-1===n)return import_console_browserify.default.error("task not found, cannot generate animation scripts"),null;if(n===t.tasks.length-1)return null;for(let r=n;r<t.tasks.length&&!(r>n&&"Planning"===t.tasks[r].type);r++)a.push(t.tasks[r])}if(0===(a=a.filter(t=>"Assertion"!==t.type&&"Query"!==t.type)).length)return null;let o=cameraStateForRect({left:0,top:0,width:n,height:i},n,i),s=(t,r,n)=>({type:"pointer",img:t,duration:0,title:r,subTitle:n}),l=[],u,d=o,c=!1,h=a.length,f="",p=!1;return a.forEach((t,r)=>{if(!p){if(0===r&&(f=(0,import_ui_utils.paramStr)(t)),"Planning"===t.type){let n=t;n.recorder&&n.recorder.length>0&&l.push({type:"img",img:n.recorder?.[0]?.screenshot,camera:0===r?o:void 0,duration:stillDuration,title:(0,import_ui_utils.typeStr)(t),subTitle:(0,import_ui_utils.paramStr)(t)})}else if("Insight"===t.type&&"Locate"===t.subType){let r=t,a=r.output?.element,s=(0,import_ui_utils.typeStr)(t),h=(0,import_ui_utils.paramStr)(t);a?.rect&&(u={...cameraStateForRect(a.rect,n,i),pointerLeft:a.center[0],pointerTop:a.center[1]});let f=r.pageContext;if(f?.screenshotBase64){let t,n=r.log?.dump,i=f.tree?(0,import_extractor.treeToList)(f.tree).length:0;f.screenshotBase64&&l.push({type:"img",img:f.screenshotBase64,duration:stillAfterInsightDuration,title:s,subTitle:h}),t=d===o?void 0:u?mergeTwoCameraState(d,u):void 0,l.push({type:"insight",img:f.screenshotBase64,context:f,camera:t,highlightElement:r.output?.element||void 0,searchArea:n?.taskInfo?.searchArea,duration:i>20?locateDuration:.5*locateDuration,insightCameraDuration:locateDuration,title:s,subTitle:h}),l.push({type:"sleep",duration:stillAfterInsightDuration,title:s,subTitle:h}),c=!0}}else if("Action"===t.type&&"FalsyConditionStatement"!==t.subType){let n=(0,import_ui_utils.typeStr)(t),i=(0,import_ui_utils.paramStr)(t);l.push(s(mousePointer,n,i)),d=u??o,l.push({type:"img",img:t.recorder?.[0]?.screenshot,duration:actionDuration,camera:"Sleep"===t.subType?o:u,title:n,subTitle:i}),c&&(l.push({type:"clear-insight",duration:clearInsightDuration,title:n,subTitle:i}),c=!1);let a=r<h-1?stillDuration:0;t.recorder?.[1]?.screenshot?(l.push({type:"spinning-pointer",duration:actionSpinningPointerDuration,title:n,subTitle:i}),l.push(s(mousePointer,n,i)),l.push({type:"img",img:t.recorder?.[1]?.screenshot,duration:a,title:n,subTitle:i})):l.push({type:"sleep",duration:a,title:n,subTitle:i})}if("finished"===t.status);else{p=!0;let r=(0,import_ui_utils.typeStr)(t),n=t.errorMessage||"unknown error",i=n.indexOf("NOT_IMPLEMENTED_AS_DESIGNED")>0?"Further actions cannot be performed in the current environment":n;l.push({type:"img",img:t.recorder&&t.recorder.length>0?t.recorder[t.recorder.length-1].screenshot:"",camera:o,duration:stillDuration,title:r,subTitle:i})}}}),p||l.push({title:"Done",subTitle:f,type:"img",duration:stillDuration,camera:o}),l};init_globals();var esm_exports={};__export(esm_exports,{create:()=>create,createStore:()=>createStore,default:()=>react,useStore:()=>useStore}),init_globals(),init_globals();var import_meta2={},createStoreImpl=t=>{let r,n=new Set,i=(t,i)=>{let a="function"==typeof t?t(r):t;if(!Object.is(a,r)){let t=r;r=(null!=i?i:"object"!=typeof a||null===a)?a:Object.assign({},r,a),n.forEach(n=>n(r,t))}},a=()=>r,o={setState:i,getState:a,getInitialState:()=>s,subscribe:t=>(n.add(t),()=>n.delete(t)),destroy:()=>{"production"!==(import_meta2.env?import_meta2.env.MODE:void 0)&&import_console_browserify.default.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},s=r=t(i,a,o);return o},createStore=t=>t?createStoreImpl(t):createStoreImpl,import_react2=__toESM(__webpack_require__(4194),1),import_with_selector=__toESM(require_with_selector(),1),import_meta3={},{useDebugValue:useDebugValue}=import_react2.default,{useSyncExternalStoreWithSelector:useSyncExternalStoreWithSelector}=import_with_selector.default,didWarnAboutEqualityFn=!1,identity2=t=>t;function useStore(t,r=identity2,n){"production"!==(import_meta3.env?import_meta3.env.MODE:void 0)&&n&&!didWarnAboutEqualityFn&&(import_console_browserify.default.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),didWarnAboutEqualityFn=!0);let i=useSyncExternalStoreWithSelector(t.subscribe,t.getState,t.getServerState||t.getInitialState,r,n);return useDebugValue(i),i}var createImpl=t=>{"production"!==(import_meta3.env?import_meta3.env.MODE:void 0)&&"function"!=typeof t&&import_console_browserify.default.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");let r="function"==typeof t?createStore(t):t,n=(t,n)=>useStore(r,t,n);return Object.assign(n,r),n},create=t=>t?createImpl(t):createImpl,react=t=>("production"!==(import_meta3.env?import_meta3.env.MODE:void 0)&&import_console_browserify.default.warn("[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`."),create(t)),{create:create2}=esm_exports,useBlackboardPreference=create2(t=>({markerVisible:!0,elementsVisible:!0,setMarkerVisible:r=>{t({markerVisible:r})},setTextsVisible:r=>{t({elementsVisible:r})}})),CONFIG_KEY="midscene-env-config",SERVICE_MODE_KEY="midscene-service-mode",TRACKING_ACTIVE_TAB_KEY="midscene-tracking-active-tab",DEEP_THINK_KEY="midscene-deep-think",getConfigStringFromLocalStorage=()=>localStorage.getItem(CONFIG_KEY)||"",parseConfig=t=>{let r=t.split("\n"),n={};return r.forEach(t=>{let r=t.trim();if(r.startsWith("#"))return;let i=r.replace(/^export\s+/i,"").replace(/;$/,"").trim().match(/^(\w+)=(.*)$/);if(i){let[,t,r]=i,a=r.trim();(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),n[t]=a}}),n},useEnvConfig=create2((t,r)=>{let n=getConfigStringFromLocalStorage(),i=parseConfig(n),a=window.location.href.startsWith("chrome-extension"),o=localStorage.getItem(SERVICE_MODE_KEY);return{serviceMode:a?"In-Browser-Extension":o||"Server",setServiceMode:r=>{if(a)throw Error("serviceMode cannot be set in extension");t({serviceMode:r}),localStorage.setItem(SERVICE_MODE_KEY,r)},config:i,configString:n,setConfig:r=>t({config:r}),loadConfig:r=>{t({config:parseConfig(r),configString:r}),localStorage.setItem(CONFIG_KEY,r)},syncFromStorage:()=>{let r=getConfigStringFromLocalStorage();t({config:parseConfig(r),configString:r})},forceSameTabNavigation:"false"!==localStorage.getItem(TRACKING_ACTIVE_TAB_KEY),setForceSameTabNavigation:r=>{t({forceSameTabNavigation:r}),localStorage.setItem(TRACKING_ACTIVE_TAB_KEY,r.toString())},deepThink:"true"===localStorage.getItem(DEEP_THINK_KEY),setDeepThink:r=>{t({deepThink:r}),localStorage.setItem(DEEP_THINK_KEY,r.toString())},popupTab:"playground",setPopupTab:r=>{t({popupTab:r})}}});init_globals();var elementColor=["#01204E"],highlightColorForSearchArea="#028391",highlightColorForElement="#fd5907";function djb2Hash(t){t||(t="unnamed");let r=5381;for(let n=0;n<t.length;n++)r=(r<<5)+r+t.charCodeAt(n);return r>>>0}function colorForName(t){return elementColor[djb2Hash(t)%elementColor.length]}function highlightColorForType(t){return"searchArea"===t?highlightColorForSearchArea:highlightColorForElement}function globalThemeConfig(){return{token:{colorPrimary:"#2B83FF"},components:{Layout:{headerHeight:60,headerPadding:"0 30px",headerBg:"#FFF",bodyBg:"#FFF"}}}}init_globals();var import_icons=__webpack_require__(8405),import_antd=__webpack_require__(1542),import_react3=__webpack_require__(4194),import_jsx_runtime=__toESM(require_jsx_runtime());function EnvConfig({showTooltipWhenEmpty:t=!0,showModelName:r=!0,tooltipPlacement:n="bottom",mode:i="icon"}){let{config:a,configString:o,loadConfig:s,syncFromStorage:l}=useEnvConfig(),[u,d]=(0,import_react3.useState)(!1),[c,h]=(0,import_react3.useState)(o),f=a.MIDSCENE_MODEL_NAME,p=(0,import_react3.useRef)(null),m=t=>{l(),d(!0),t.preventDefault(),t.stopPropagation()};return(0,import_react3.useEffect)(()=>{u&&h(o)},[u,o]),(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"10px",alignItems:"center",height:"100%",minHeight:"32px"},ref:p,children:[r?f:null,(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Please set up your environment variables before using.",placement:n,align:{offset:[-10,5]},getPopupContainer:()=>p.current,open:!u&&(t?0===Object.keys(a).length:void 0),children:"icon"===i?(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{onClick:m}):(0,import_jsx_runtime.jsx)("span",{onClick:m,style:{color:"#006AFF",cursor:"pointer"},children:"set up"})}),(0,import_jsx_runtime.jsxs)(import_antd.Modal,{title:"Model Env Config",open:u,onOk:()=>{d(!1),s(c)},onCancel:()=>{d(!1)},okText:"Save",style:{width:"800px",height:"100%",marginTop:"10%"},destroyOnClose:!0,maskClosable:!0,centered:!0,children:[(0,import_jsx_runtime.jsx)(import_antd.Input.TextArea,{rows:7,placeholder:"OPENAI_API_KEY=sk-...\nMIDSCENE_MODEL_NAME=gpt-4o-2024-08-06\n...",value:c,onChange:t=>h(t.target.value),style:{whiteSpace:"nowrap",wordWrap:"break-word"}}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("p",{children:"The format is KEY=VALUE and separated by new lines."}),(0,import_jsx_runtime.jsxs)("p",{children:["These data will be saved ",(0,import_jsx_runtime.jsx)("strong",{children:"locally in your browser"}),"."]})]})]})]})}init_globals();var import_jsx_runtime2=__toESM(require_jsx_runtime()),Logo=({hideLogo:t=!1})=>t?null:(0,import_jsx_runtime2.jsx)("div",{className:"logo",children:(0,import_jsx_runtime2.jsx)("a",{href:"https://midscenejs.com/",target:"_blank",rel:"noreferrer",children:(0,import_jsx_runtime2.jsx)("img",{alt:"Midscene_logo",src:"https://lf3-static.bytednsdoc.com/obj/eden-cn/vhaeh7vhabf/Midscene.png"})})});init_globals();var import_icons2=__webpack_require__(8405),import_jsx_runtime3=__toESM(require_jsx_runtime());function timeCostStrElement(t){let r;return r="number"!=typeof t?"-":`${(t/1e3).toFixed(2)}s`,(0,import_jsx_runtime3.jsx)("span",{style:{fontVariantNumeric:"tabular-nums",fontFeatureSettings:"tnum"},children:r})}var iconForStatus=t=>{switch(t){case"finished":case"passed":case"success":case"connected":return(0,import_jsx_runtime3.jsx)("span",{style:{color:"#00AD4B"},children:(0,import_jsx_runtime3.jsx)(import_icons2.CheckOutlined,{})});case"finishedWithWarning":return(0,import_jsx_runtime3.jsx)("span",{style:{color:"#f7bb05"},children:(0,import_jsx_runtime3.jsx)(import_icons2.WarningOutlined,{})});case"failed":case"closed":case"timedOut":case"interrupted":return(0,import_jsx_runtime3.jsx)("span",{style:{color:"#FF0A0A"},children:(0,import_jsx_runtime3.jsx)(import_icons2.CloseOutlined,{})});case"pending":return(0,import_jsx_runtime3.jsx)(import_icons2.ClockCircleOutlined,{});case"cancelled":case"skipped":return(0,import_jsx_runtime3.jsx)(import_icons2.LogoutOutlined,{});case"running":return(0,import_jsx_runtime3.jsx)(import_icons2.ArrowRightOutlined,{});default:return(0,import_jsx_runtime3.jsx)(import_icons2.MinusOutlined,{})}};init_globals();var import_react4=__webpack_require__(4194),useServerValid=(t=!0)=>{let[r,n]=(0,import_react4.useState)(!0),{serviceMode:i}=useEnvConfig();return(0,import_react4.useEffect)(()=>{let r=!1;if(t)return Promise.resolve((async()=>{for(;!r;)n(!!await checkServerStatus()),await new Promise(t=>setTimeout(t,1e3))})()),()=>{r=!0}},[i,t]),r};init_globals();var import_icons4=__webpack_require__(8405),import_antd5=__webpack_require__(1542);function generateShaderSyncPolyfill(){return syncShader}function syncShader(t,r,n){let i=t.gl,a=t.shader,o=a._getProgramData(r.glProgram);for(let s in r.groups){let l=r.groups[s];for(let u in l.resources){let d=l.resources[u];if(d instanceof UniformGroup)d.ubo?a.bindUniformBlock(d,r._uniformBindMap[s][u],n.blockIndex++):a.updateUniformGroup(d);else if(d instanceof BufferResource)a.bindUniformBlock(d,r._uniformBindMap[s][u],n.blockIndex++);else if(d instanceof TextureSource){t.texture.bind(d,n.textureCount);let a=r._uniformBindMap[s][u],l=o.uniformData[a];l&&(l.value!==n.textureCount&&i.uniform1i(l.location,n.textureCount),n.textureCount++)}}}}init_globals(),init_globals(),init_GlUboSystem(),init_GlShaderSystem(),init_GlUniformGroupSystem(),init_GpuUboSystem(),init_UboSystem(),init_AbstractRenderer(),init_globals(),init_BufferResource(),init_UniformGroup(),init_TextureSource(),init_TextureStyle(),init_globals(),init_createUboElementsSTD40(),init_createUboElementsWGSL(),init_uniformParsers(),init_globals();var uboParserFunctions=[(t,r,n,i,a)=>{let o=i[t].toArray(!0);r[n]=o[0],r[n+1]=o[1],r[n+2]=o[2],r[n+4]=o[3],r[n+5]=o[4],r[n+6]=o[5],r[n+8]=o[6],r[n+9]=o[7],r[n+10]=o[8]},(t,r,n,i,a)=>{a=i[t],r[n]=a.x,r[n+1]=a.y,r[n+2]=a.width,r[n+3]=a.height},(t,r,n,i,a)=>{a=i[t],r[n]=a.x,r[n+1]=a.y},(t,r,n,i,a)=>{a=i[t],r[n]=a.red,r[n+1]=a.green,r[n+2]=a.blue,r[n+3]=a.alpha},(t,r,n,i,a)=>{a=i[t],r[n]=a.red,r[n+1]=a.green,r[n+2]=a.blue}],uboSingleFunctionsWGSL={f32:(t,r,n,i,a)=>{r[n]=a},i32:(t,r,n,i,a)=>{r[n]=a},"vec2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1]},"vec3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2]},"vec4<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+3]=a[3]},"mat2x2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+3]=a[3]},"mat3x3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+4]=a[3],r[n+5]=a[4],r[n+6]=a[5],r[n+8]=a[6],r[n+9]=a[7],r[n+10]=a[8]},"mat4x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<16;t++)r[n+t]=a[t]},"mat3x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/3|0)+t%3]=a[t]},"mat4x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat4x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat3x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/3|0)+t%3]=a[t]}},uboSingleFunctionsSTD40={f32:(t,r,n,i,a)=>{r[n]=a},i32:(t,r,n,i,a)=>{r[n]=a},"vec2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1]},"vec3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2]},"vec4<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+3]=a[3]},"mat2x2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+4]=a[2],r[n+5]=a[3]},"mat3x3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+4]=a[3],r[n+5]=a[4],r[n+6]=a[5],r[n+8]=a[6],r[n+9]=a[7],r[n+10]=a[8]},"mat4x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<16;t++)r[n+t]=a[t]},"mat3x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/3|0)+t%3]=a[t]},"mat4x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat4x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat3x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/3|0)+t%3]=a[t]}};function generateUboSyncPolyfillSTD40(t){return generateUboSyncPolyfill(t,uboSingleFunctionsSTD40,t=>{let r=Math.max(WGSL_TO_STD40_SIZE[t.data.type]/16,1),n=t.data.value.length/t.data.size,i=(4-n%4)%4;return(a,o,s,l,u)=>{let d=0;for(let a=0;a<t.data.size*r;a++){for(let t=0;t<n;t++)o[s++]=u[d++];s+=i}}})}function generateUboSyncPolyfillWGSL(t){return generateUboSyncPolyfill(t,uboSingleFunctionsWGSL,t=>{let{size:r,align:n}=WGSL_ALIGN_SIZE_DATA[t.data.type],i=(r-n)/4;return(n,a,o,s,l)=>{let u=0;for(let n=0;n<t.data.size*(r/4);n++){for(let t=0;t<r/4;t++)a[o++]=l[u++];o+=i}}})}function generateUboSyncPolyfill(t,r,n){let i={};for(let a in t){let o=t[a],s=o.data,l=!1;i[s.name]={offset:o.offset/4,func:null};for(let t=0;t<uniformParsers.length;t++){let r=uniformParsers[t];if(s.type===r.type&&r.test(s)){i[s.name].func=uboParserFunctions[t],l=!0;break}}l||(1===s.size?i[s.name].func=r[s.type]:i[s.name].func=n(o))}return(t,r,n)=>{for(let a in i)i[a].func(a,r,n+i[a].offset,t,t[a])}}init_globals(),init_uniformParsers(),init_globals();var uniformSingleParserFunctions={f32(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1f(a[t].location,i))},"vec2<f32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2f(a[t].location,i[0],i[1]))},"vec3<f32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3f(a[t].location,i[0],i[1],i[2]))},"vec4<f32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4f(a[t].location,i[0],i[1],i[2],i[3]))},i32(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1i(a[t].location,i))},"vec2<i32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2i(a[t].location,i[0],i[1]))},"vec3<i32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3i(a[t].location,i[0],i[1],i[2]))},"vec4<i32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4i(a[t].location,i[0],i[1],i[2],i[3]))},u32(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1ui(a[t].location,i))},"vec2<u32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2ui(a[t].location,i[0],i[1]))},"vec3<u32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3ui(a[t].location,i[0],i[1],i[2]))},"vec4<u32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4ui(a[t].location,i[0],i[1],i[2],i[3]))},bool(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1i(a[t].location,i))},"vec2<bool>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2i(a[t].location,i[0],i[1]))},"vec3<bool>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3i(a[t].location,i[0],i[1],i[2]))},"vec4<bool>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4i(a[t].location,i[0],i[1],i[2],i[3]))},"mat2x2<f32>"(t,r,n,i,a,o,s){s.uniformMatrix2fv(a[t].location,!1,i)},"mat3x3<f32>"(t,r,n,i,a,o,s){s.uniformMatrix3fv(a[t].location,!1,i)},"mat4x4<f32>"(t,r,n,i,a,o,s){s.uniformMatrix4fv(a[t].location,!1,i)}},uniformArrayParserFunctions={f32(t,r,n,i,a,o,s){s.uniform1fv(a[t].location,i)},"vec2<f32>"(t,r,n,i,a,o,s){s.uniform2fv(a[t].location,i)},"vec3<f32>"(t,r,n,i,a,o,s){s.uniform3fv(a[t].location,i)},"vec4<f32>"(t,r,n,i,a,o,s){s.uniform4fv(a[t].location,i)},"mat2x2<f32>"(t,r,n,i,a,o,s){s.uniformMatrix2fv(a[t].location,!1,i)},"mat3x3<f32>"(t,r,n,i,a,o,s){s.uniformMatrix3fv(a[t].location,!1,i)},"mat4x4<f32>"(t,r,n,i,a,o,s){s.uniformMatrix4fv(a[t].location,!1,i)},i32(t,r,n,i,a,o,s){s.uniform1iv(a[t].location,i)},"vec2<i32>"(t,r,n,i,a,o,s){s.uniform2iv(a[t].location,i)},"vec3<i32>"(t,r,n,i,a,o,s){s.uniform3iv(a[t].location,i)},"vec4<i32>"(t,r,n,i,a,o,s){s.uniform4iv(a[t].location,i)},u32(t,r,n,i,a,o,s){s.uniform1iv(a[t].location,i)},"vec2<u32>"(t,r,n,i,a,o,s){s.uniform2iv(a[t].location,i)},"vec3<u32>"(t,r,n,i,a,o,s){s.uniform3iv(a[t].location,i)},"vec4<u32>"(t,r,n,i,a,o,s){s.uniform4iv(a[t].location,i)},bool(t,r,n,i,a,o,s){s.uniform1iv(a[t].location,i)},"vec2<bool>"(t,r,n,i,a,o,s){s.uniform2iv(a[t].location,i)},"vec3<bool>"(t,r,n,i,a,o,s){s.uniform3iv(a[t].location,i)},"vec4<bool>"(t,r,n,i,a,o,s){s.uniform4iv(a[t].location,i)}},uniformParserFunctions=[(t,r,n,i,a,o,s)=>{s.uniformMatrix3fv(a[t].location,!1,o[t].toArray(!0))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.x&&n[1]===i.y&&n[2]===i.width&&n[3]===i.height||(n[0]=i.x,n[1]=i.y,n[2]=i.width,n[3]=i.height,s.uniform4f(a[t].location,i.x,i.y,i.width,i.height))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.x&&n[1]===i.y||(n[0]=i.x,n[1]=i.y,s.uniform2f(a[t].location,i.x,i.y))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.red&&n[1]===i.green&&n[2]===i.blue&&n[3]===i.alpha||(n[0]=i.red,n[1]=i.green,n[2]=i.blue,n[3]=i.alpha,s.uniform4f(a[t].location,i.red,i.green,i.blue,i.alpha))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.red&&n[1]===i.green&&n[2]===i.blue||(n[0]=i.red,n[1]=i.green,n[2]=i.blue,s.uniform3f(a[t].location,i.red,i.green,i.blue))}];function generateUniformsSyncPolyfill(t,r){let n={};for(let i in t.uniformStructures){if(!r[i])continue;let a=t.uniformStructures[i],o=!1;for(let t=0;t<uniformParsers.length;t++){let r=uniformParsers[t];if(a.type===r.type&&r.test(a)){n[i]=uniformParserFunctions[t],o=!0;break}}if(!o){let t=1===a.size?uniformSingleParserFunctions:uniformArrayParserFunctions;n[i]=t[a.type]}}return(t,r,i)=>{let a=i.gl;for(let i in n){let o=r[i],s=t[i],l=t[i].value;n[i](i,s,l,o,t,r,a)}}}function selfInstall(){Object.assign(AbstractRenderer.prototype,{_unsafeEvalCheck(){}}),Object.assign(UboSystem.prototype,{_systemCheck(){}}),Object.assign(GlUniformGroupSystem.prototype,{_generateUniformsSync:generateUniformsSyncPolyfill}),Object.assign(GlUboSystem.prototype,{_generateUboSync:generateUboSyncPolyfillSTD40}),Object.assign(GpuUboSystem.prototype,{_generateUboSync:generateUboSyncPolyfillWGSL}),Object.assign(GlShaderSystem.prototype,{_generateShaderSync:generateShaderSyncPolyfill})}selfInstall(),init_globals(),init_globals(),init_Extensions();var browserExt={extension:{type:ExtensionType.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Promise.resolve().then(()=>(init_browserAll(),browserAll_exports))}};init_globals(),init_Extensions();var webworkerExt={extension:{type:ExtensionType.Environment,name:"webworker",priority:0},test:()=>"undefined"!=typeof self&&void 0!==self.WorkerGlobalScope,load:async()=>{await Promise.resolve().then(()=>(init_webworkerAll(),webworkerAll_exports))}};init_Extensions(),init_init5(),init_init4(),init_globals(),init_Extensions(),init_globals(),init_globals(),init_Extensions();var _isWebGLSupported,_isWebGPUSupported,environments=[];async function autoDetectEnvironment(t){if(t)for(let t=0;t<environments.length;t++){let r=environments[t];if(r.value.test())return void await r.value.load()}}function isWebGLSupported(t){return void 0!==_isWebGLSupported?_isWebGLSupported:_isWebGLSupported=(()=>{let r={stencil:!0,failIfMajorPerformanceCaveat:t??AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat};try{if(!DOMAdapter.get().getWebGLRenderingContext())return!1;let t=DOMAdapter.get().createCanvas().getContext("webgl",r),n=!!t?.getContextAttributes()?.stencil;if(t){let r=t.getExtension("WEBGL_lose_context");r&&r.loseContext()}return t=null,n}catch(t){return!1}})()}async function isWebGPUSupported(t={}){return void 0!==_isWebGPUSupported?_isWebGPUSupported:_isWebGPUSupported=await (async()=>{if(!DOMAdapter.get().getNavigator().gpu)return!1;try{let r=await navigator.gpu.requestAdapter(t);return await r.requestDevice(),!0}catch(t){return!1}})()}extensions.handleByNamedList(ExtensionType.Environment,environments),init_globals(),init_adapter(),init_AbstractRenderer(),init_globals(),init_adapter(),init_AbstractRenderer();var renderPriority=["webgl","webgpu","canvas"];async function autoDetectRenderer(t){let r,n=[];t.preference?(n.push(t.preference),renderPriority.forEach(r=>{r!==t.preference&&n.push(r)})):n=renderPriority.slice(),await autoDetectEnvironment(t.manageImports??!0);let i={};for(let a=0;a<n.length;a++){let o=n[a];if("webgpu"===o&&await isWebGPUSupported()){let{WebGPURenderer:n}=await Promise.resolve().then(()=>(init_WebGPURenderer(),WebGPURenderer_exports));r=n,i={...t,...t.webgpu};break}if("webgl"===o&&isWebGLSupported(t.failIfMajorPerformanceCaveat??AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat)){let{WebGLRenderer:n}=await Promise.resolve().then(()=>(init_WebGLRenderer(),WebGLRenderer_exports));r=n,i={...t,...t.webgl};break}if("canvas"===o)throw i={...t},Error("CanvasRenderer is not yet implemented")}if(delete i.webgpu,delete i.webgl,!r)throw Error("No available renderer for the current environment");let a=new r;return await a.init(i),a}init_Container(),init_deprecation();var _Application=class e{constructor(...t){this.stage=new Container,void 0!==t[0]&&deprecation(v8_0_0,"Application constructor options are deprecated, please use Application.init() instead.")}async init(t){t={...t},this.renderer=await autoDetectRenderer(t),e._plugins.forEach(r=>{r.init.call(this,t)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return deprecation(v8_0_0,"Application.view is deprecated, please use Application.canvas instead."),this.renderer.canvas}get screen(){return this.renderer.screen}destroy(t=!1,r=!1){let n=e._plugins.slice(0);n.reverse(),n.forEach(t=>{t.destroy.call(this)}),this.stage.destroy(r),this.stage=null,this.renderer.destroy(t),this.renderer=null}};_Application._plugins=[];var Application=_Application;extensions.handleByList(ExtensionType.Application,Application._plugins),init_globals(),init_Extensions(),init_warn2(),init_globals();var BackgroundLoader=class{constructor(t,r=!1){this._loader=t,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=r}add(t){t.forEach(t=>{this._assetList.push(t)}),this.verbose&&import_console_browserify.default.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;let t=[],r=Math.min(this._assetList.length,this._maxConcurrent);for(let n=0;n<r;n++)t.push(this._assetList.pop());await this._loader.load(t),this._isLoading=!1,this._next()}}get active(){return this._isActive}set active(t){this._isActive!==t&&(this._isActive=t,t&&!this._isLoading&&this._next())}};init_Cache(),init_globals(),init_Extensions(),init_Texture();var cacheTextureArray={extension:ExtensionType.CacheParser,test:t=>Array.isArray(t)&&t.every(t=>t instanceof Texture),getCacheableAssets:(t,r)=>{let n={};return t.forEach(t=>{r.forEach((r,i)=>{n[t+(0===i?"":i+1)]=r})}),n}};async function testImageFormat(t){if("Image"in globalThis)return new Promise(r=>{let n=new Image;n.onload=()=>{r(!0)},n.onerror=()=>{r(!1)},n.src=t});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{let r=await (await fetch(t)).blob();await createImageBitmap(r)}catch(t){return!1}return!0}return!1}init_globals(),init_Extensions(),init_globals();var detectAvif={extension:{type:ExtensionType.DetectionParser,priority:1},test:async()=>testImageFormat("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async t=>[...t,"avif"],remove:async t=>t.filter(t=>"avif"!==t)};init_globals(),init_Extensions();var imageFormats=["png","jpg","jpeg"],detectDefaults={extension:{type:ExtensionType.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async t=>[...t,...imageFormats],remove:async t=>t.filter(t=>!imageFormats.includes(t))};init_globals(),init_Extensions(),init_globals();var inWorker="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function testVideoFormat(t){return!inWorker&&""!==document.createElement("video").canPlayType(t)}var detectMp4={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testVideoFormat("video/mp4"),add:async t=>[...t,"mp4","m4v"],remove:async t=>t.filter(t=>"mp4"!==t&&"m4v"!==t)};init_globals(),init_Extensions();var detectOgv={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testVideoFormat("video/ogg"),add:async t=>[...t,"ogv"],remove:async t=>t.filter(t=>"ogv"!==t)};init_globals(),init_Extensions();var detectWebm={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testVideoFormat("video/webm"),add:async t=>[...t,"webm"],remove:async t=>t.filter(t=>"webm"!==t)};init_globals(),init_Extensions();var detectWebp={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testImageFormat("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async t=>[...t,"webp"],remove:async t=>t.filter(t=>"webp"!==t)};init_globals(),init_warn2(),init_path(),init_convertToList(),init_isSingleItem();var Loader=class{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(t,r,n)=>(this._parsersValidated=!1,t[r]=n,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(t,r){let n={promise:null,parser:null};return n.promise=(async()=>{let i=null,a=null;if(r.loadParser&&((a=this._parserHash[r.loadParser])||warn(`[Assets] specified load parser "${r.loadParser}" not found while loading ${t}`)),!a){for(let n=0;n<this.parsers.length;n++){let i=this.parsers[n];if(i.load&&i.test?.(t,r,this)){a=i;break}}if(!a)return warn(`[Assets] ${t} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`),null}i=await a.load(t,r,this),n.parser=a;for(let t=0;t<this.parsers.length;t++){let a=this.parsers[t];a.parse&&a.parse&&await a.testParse?.(i,r,this)&&(i=await a.parse(i,r,this)||i,n.parser=a)}return i})(),n}async load(t,r){this._parsersValidated||this._validateParsers();let n=0,i={},a=isSingleItem(t),o=convertToList(t,t=>({alias:[t],src:t})),s=o.length,l=o.map(async t=>{let a=path.toAbsolute(t.src);if(!i[t.src])try{this.promiseCache[a]||(this.promiseCache[a]=this._getLoadPromiseAndParser(a,t)),i[t.src]=await this.promiseCache[a].promise,r&&r(++n/s)}catch(r){throw delete this.promiseCache[a],delete i[t.src],Error(`[Loader.load] Failed to load ${a}.
|
|
905
|
+
`,"background: #E72264; padding:5px 0;","background: #6CA2EA; padding:5px 0;","background: #B5D33D; padding:5px 0;","background: #FED23F; padding:5px 0;","color: #FFFFFF; background: #E72264; padding:5px 0;","color: #E72264; background: #FFFFFF; padding:5px 0;"];globalThis.console.log(...r)}else globalThis.console&&globalThis.console.log(`PixiJS ${VERSION} - ${t} - http://www.pixijs.com/`);saidHello=!0}}var HelloSystem,_TextureGCSystem,TextureGCSystem,_RenderTarget,RenderTarget,canvasCache,init_sayHello=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/sayHello.mjs"(){init_globals(),init_adapter(),saidHello=!1,VERSION="8.1.1"}}),init_HelloSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/startup/HelloSystem.mjs"(){init_globals(),init_Extensions(),init_sayHello(),init_types2(),(HelloSystem=class{constructor(t){this._renderer=t}init(t){if(t.hello){let t=this._renderer.name;this._renderer.type===RendererType.WEBGL&&(t+=` ${this._renderer.context.webGLVersion}`),sayHello(t)}}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem,ExtensionType.CanvasSystem],name:"hello",priority:-2},HelloSystem.defaultOptions={hello:!1}}}),init_TextureGCSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureGCSystem.mjs"(){init_globals(),init_Extensions(),(_TextureGCSystem=class t{constructor(t){this._renderer=t,this.count=0,this.checkCount=0}init(r){r={...t.defaultOptions,...r},this.checkCountMax=r.textureGCCheckCountMax,this.maxIdle=r.textureGCAMaxIdle,this.active=r.textureGCActive}postrender(){this._renderer.renderingToScreen&&(this.count++,this.active&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){let t=this._renderer.texture.managedTextures;for(let r=0;r<t.length;r++){let n=t[r];n.autoGarbageCollect&&n.resource&&n._touched>-1&&this.count-n._touched>this.maxIdle&&(n._touched=-1,n.unload())}}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem],name:"textureGC"},_TextureGCSystem.defaultOptions={textureGCActive:!0,textureGCAMaxIdle:3600,textureGCCheckCountMax:600},TextureGCSystem=_TextureGCSystem,extensions.add(TextureGCSystem)}}),init_RenderTarget=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTarget.mjs"(){init_globals(),init_uid(),init_TextureSource(),init_Texture(),(_RenderTarget=class t{constructor(r={}){if(this.uid=uid("renderTarget"),this.colorTextures=[],this.dirtyId=0,this.isRoot=!1,this._size=new Float32Array(2),this._managedColorTextures=!1,r={...t.defaultOptions,...r},this.stencil=r.stencil,this.depth=r.depth,this.isRoot=r.isRoot,"number"==typeof r.colorTextures){this._managedColorTextures=!0;for(let t=0;t<r.colorTextures;t++)this.colorTextures.push(new TextureSource({width:r.width,height:r.height,resolution:r.resolution,antialias:r.antialias}))}else{this.colorTextures=[...r.colorTextures.map(t=>t.source)];let t=this.colorTexture.source;this.resize(t.width,t.height,t._resolution)}this.colorTexture.source.on("resize",this.onSourceResize,this),(r.depthStencilTexture||this.stencil)&&(r.depthStencilTexture instanceof Texture||r.depthStencilTexture instanceof TextureSource?this.depthStencilTexture=r.depthStencilTexture.source:this.ensureDepthStencilTexture())}get size(){let t=this._size;return t[0]=this.pixelWidth,t[1]=this.pixelHeight,t}get width(){return this.colorTexture.source.width}get height(){return this.colorTexture.source.height}get pixelWidth(){return this.colorTexture.source.pixelWidth}get pixelHeight(){return this.colorTexture.source.pixelHeight}get resolution(){return this.colorTexture.source._resolution}get colorTexture(){return this.colorTextures[0]}onSourceResize(t){this.resize(t.width,t.height,t._resolution,!0)}ensureDepthStencilTexture(){this.depthStencilTexture||(this.depthStencilTexture=new TextureSource({width:this.width,height:this.height,resolution:this.resolution,format:"depth24plus-stencil8",autoGenerateMipmaps:!1,antialias:!1,mipLevelCount:1}))}resize(t,r,n=this.resolution,i=!1){this.dirtyId++,this.colorTextures.forEach((a,o)=>{i&&0===o||a.source.resize(t,r,n)}),this.depthStencilTexture&&this.depthStencilTexture.source.resize(t,r,n)}destroy(){this.colorTexture.source.off("resize",this.onSourceResize,this),this._managedColorTextures&&this.colorTextures.forEach(t=>{t.destroy()}),this.depthStencilTexture&&(this.depthStencilTexture.destroy(),delete this.depthStencilTexture)}}).defaultOptions={width:0,height:0,resolution:1,colorTextures:1,stencil:!1,depth:!1,antialias:!1,isRoot:!1},RenderTarget=_RenderTarget}});function getCanvasTexture(t,r){if(!canvasCache.has(t)){let n=new Texture({source:new CanvasSource({resource:t,...r})}),i=()=>{canvasCache.get(t)===n&&canvasCache.delete(t)};n.once("destroy",i),n.source.once("destroy",i),canvasCache.set(t,n)}return canvasCache.get(t)}var _ViewSystem,ViewSystem,SharedSystems,SharedRenderPipes,BindGroupSystem,GpuBufferSystem,GpuColorMaskSystem,GpuDeviceSystem,GpuEncoderSystem,GpuStencilSystem,UboBatch,minUniformOffsetAlignment,GpuUniformBatchPipe,init_getCanvasTexture=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/utils/getCanvasTexture.mjs"(){init_globals(),init_CanvasSource(),init_Texture(),canvasCache=new Map}}),init_ViewSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/view/ViewSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_Rectangle(),init_deprecation(),init_RenderTarget(),init_getCanvasTexture(),(_ViewSystem=class t{get resolution(){return this.texture.source._resolution}set resolution(t){this.texture.source.resize(this.texture.source.width,this.texture.source.height,t)}init(r){(r={...t.defaultOptions,...r}).view&&(deprecation(v8_0_0,"ViewSystem.view has been renamed to ViewSystem.canvas"),r.canvas=r.view),this.screen=new Rectangle(0,0,r.width,r.height),this.canvas=r.canvas||DOMAdapter.get().createCanvas(),this.antialias=!!r.antialias,this.texture=getCanvasTexture(this.canvas,r),this.renderTarget=new RenderTarget({colorTextures:[this.texture],depth:!!r.depth,isRoot:!0}),this.texture.source.transparent=r.backgroundAlpha<1,this.multiView=!!r.multiView,this.autoDensity&&(this.canvas.style.width=`${this.texture.width}px`,this.canvas.style.height=`${this.texture.height}px`),this.resolution=r.resolution}resize(t,r,n){this.texture.source.resize(t,r,n),this.screen.width=this.texture.frame.width,this.screen.height=this.texture.frame.height,this.autoDensity&&(this.canvas.style.width=`${t}px`,this.canvas.style.height=`${r}px`)}destroy(t=!1){("boolean"==typeof t?t:!!t?.removeView)&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)}}).extension={type:[ExtensionType.WebGLSystem,ExtensionType.WebGPUSystem,ExtensionType.CanvasSystem],name:"view",priority:0},_ViewSystem.defaultOptions={width:800,height:600,autoDensity:!1,antialias:!1},ViewSystem=_ViewSystem}}),init_SharedSystems=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/system/SharedSystems.mjs"(){init_globals(),init_CustomRenderPipe(),init_RenderGroupPipe(),init_RenderGroupSystem(),init_SpritePipe(),init_BatcherPipe(),init_AlphaMaskPipe(),init_ColorMaskPipe(),init_StencilMaskPipe(),init_BackgroundSystem(),init_BlendModePipe(),init_ExtractSystem(),init_GenerateTextureSystem(),init_GlobalUniformSystem(),init_HelloSystem(),init_TextureGCSystem(),init_ViewSystem(),SharedSystems=[BackgroundSystem,GlobalUniformSystem,HelloSystem,ViewSystem,RenderGroupSystem,TextureGCSystem,GenerateTextureSystem,ExtractSystem],SharedRenderPipes=[BlendModePipe,BatcherPipe,SpritePipe,RenderGroupPipe,AlphaMaskPipe,StencilMaskPipe,ColorMaskPipe,CustomRenderPipe]}}),init_BindGroupSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/BindGroupSystem.mjs"(){init_globals(),init_Extensions(),(BindGroupSystem=class{constructor(t){this._hash=Object.create(null),this._renderer=t}contextChange(t){this._gpu=t}getBindGroup(t,r,n){return t._updateKey(),this._hash[t._key]||this._createBindGroup(t,r,n)}_createBindGroup(t,r,n){let i=this._gpu.device,a=r.layout[n],o=[],s=this._renderer;for(let r in a){let n,i=t.resources[r]??t.resources[a[r]];if("uniformGroup"===i._resourceType){let t=i;s.ubo.updateUniformGroup(t);let r=t.buffer;n={buffer:s.buffer.getGPUBuffer(r),offset:0,size:r.descriptor.size}}else if("buffer"===i._resourceType){let t=i;n={buffer:s.buffer.getGPUBuffer(t),offset:0,size:t.descriptor.size}}else if("bufferResource"===i._resourceType){let t=i;n={buffer:s.buffer.getGPUBuffer(t.buffer),offset:t.offset,size:t.size}}else if("textureSampler"===i._resourceType){let t=i;n=s.texture.getGpuSampler(t)}else if("textureSource"===i._resourceType){let t=i;n=s.texture.getGpuSource(t).createView({})}o.push({binding:a[r],resource:n})}let l=s.shader.getProgramData(r).bindGroups[n],u=i.createBindGroup({layout:l,entries:o});return this._hash[t._key]=u,u}destroy(){for(let t of Object.keys(this._hash))this._hash[t]=null;this._hash=null,this._renderer=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"bindGroup"}}}),init_GpuBufferSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/GpuBufferSystem.mjs"(){init_globals(),init_Extensions(),init_fastCopy(),(GpuBufferSystem=class{constructor(){this._gpuBuffers=Object.create(null),this._managedBuffers=[]}contextChange(t){this._gpu=t}getGPUBuffer(t){return this._gpuBuffers[t.uid]||this.createGPUBuffer(t)}updateBuffer(t){let r=this._gpuBuffers[t.uid]||this.createGPUBuffer(t),n=t.data;return t._updateID&&n&&(t._updateID=0,this._gpu.device.queue.writeBuffer(r,0,n.buffer,0,(t._updateSize||n.byteLength)+3&-4)),r}destroyAll(){for(let t in this._gpuBuffers)this._gpuBuffers[t].destroy();this._gpuBuffers={}}createGPUBuffer(t){this._gpuBuffers[t.uid]||(t.on("update",this.updateBuffer,this),t.on("change",this.onBufferChange,this),t.on("destroy",this.onBufferDestroy,this));let r=this._gpu.device.createBuffer(t.descriptor);return t._updateID=0,t.data&&(fastCopy(t.data.buffer,r.getMappedRange()),r.unmap()),this._gpuBuffers[t.uid]=r,this._managedBuffers.push(t),r}onBufferChange(t){this._gpuBuffers[t.uid].destroy(),t._updateID=0,this._gpuBuffers[t.uid]=this.createGPUBuffer(t)}onBufferDestroy(t){this._managedBuffers.splice(this._managedBuffers.indexOf(t),1),this._destroyBuffer(t)}destroy(){this._managedBuffers.forEach(t=>this._destroyBuffer(t)),this._managedBuffers=null,this._gpuBuffers=null}_destroyBuffer(t){this._gpuBuffers[t.uid].destroy(),t.off("update",this.updateBuffer,this),t.off("change",this.onBufferChange,this),t.off("destroy",this.onBufferDestroy,this),this._gpuBuffers[t.uid]=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"buffer"}}}),init_GpuColorMaskSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuColorMaskSystem.mjs"(){init_globals(),init_Extensions(),(GpuColorMaskSystem=class{constructor(t){this._colorMaskCache=15,this._renderer=t}setMask(t){this._colorMaskCache!==t&&(this._colorMaskCache=t,this._renderer.pipeline.setColorMask(t))}destroy(){this._renderer=null,this._colorMaskCache=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"colorMask"}}}),init_GpuDeviceSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuDeviceSystem.mjs"(){init_globals(),init_Extensions(),(GpuDeviceSystem=class{constructor(t){this._renderer=t}async init(t){return this._initPromise||(this._initPromise=this._createDeviceAndAdaptor(t).then(t=>{this.gpu=t,this._renderer.runners.contextChange.emit(this.gpu)})),this._initPromise}contextChange(t){this._renderer.gpu=t}async _createDeviceAndAdaptor(t){let r=await navigator.gpu.requestAdapter({powerPreference:t.powerPreference,forceFallbackAdapter:t.forceFallbackAdapter}),n=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(t=>r.features.has(t)),i=await r.requestDevice({requiredFeatures:n});return{adapter:r,device:i}}destroy(){this.gpu=null,this._renderer=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"device"},GpuDeviceSystem.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1}}}),init_GpuEncoderSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuEncoderSystem.mjs"(){init_globals(),init_Extensions(),(GpuEncoderSystem=class{constructor(t){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=t}renderStart(){this.commandFinished=new Promise(t=>{this._resolveCommandFinished=t}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(t){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(t.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(t){this.renderPassEncoder.setViewport(t.x,t.y,t.width,t.height,0,1)}setPipelineFromGeometryProgramAndState(t,r,n,i){let a=this._renderer.pipeline.getPipeline(t,r,n,i);this.setPipeline(a)}setPipeline(t){this._boundPipeline!==t&&(this._boundPipeline=t,this.renderPassEncoder.setPipeline(t))}_setVertexBuffer(t,r){this._boundVertexBuffer[t]!==r&&(this._boundVertexBuffer[t]=r,this.renderPassEncoder.setVertexBuffer(t,this._renderer.buffer.updateBuffer(r)))}_setIndexBuffer(t){if(this._boundIndexBuffer===t)return;this._boundIndexBuffer=t;let r=2===t.data.BYTES_PER_ELEMENT?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(t),r)}resetBindGroup(t){this._boundBindGroup[t]=null}setBindGroup(t,r,n){if(this._boundBindGroup[t]===r)return;this._boundBindGroup[t]=r,r._touch(this._renderer.textureGC.count);let i=this._renderer.bindGroup.getBindGroup(r,n,t);this.renderPassEncoder.setBindGroup(t,i)}setGeometry(t){for(let r in t.attributes){let n=t.attributes[r];this._setVertexBuffer(n.location,n.buffer)}t.indexBuffer&&this._setIndexBuffer(t.indexBuffer)}_setShaderBindGroups(t,r){for(let n in t.groups){let i=t.groups[n];r||this._syncBindGroup(i),this.setBindGroup(n,i,t.gpuProgram)}}_syncBindGroup(t){for(let r in t.resources){let n=t.resources[r];n.isUniformGroup&&this._renderer.ubo.updateUniformGroup(n)}}draw(t){let{geometry:r,shader:n,state:i,topology:a,size:o,start:s,instanceCount:l,skipSync:u}=t;this.setPipelineFromGeometryProgramAndState(r,n.gpuProgram,i,a),this.setGeometry(r),this._setShaderBindGroups(n,u),r.indexBuffer?this.renderPassEncoder.drawIndexed(o||r.indexBuffer.data.length,l||r.instanceCount,s||0):this.renderPassEncoder.draw(o||r.getSize(),l||r.instanceCount,s||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){let t=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(t);let r=this._boundPipeline,n={...this._boundVertexBuffer},i=this._boundIndexBuffer,a={...this._boundBindGroup};this._clearCache();let o=this._renderer.renderTarget.viewport;for(let t in this.renderPassEncoder.setViewport(o.x,o.y,o.width,o.height,0,1),this.setPipeline(r),n)this._setVertexBuffer(t,n[t]);for(let t in a)this.setBindGroup(t,a[t],null);this._setIndexBuffer(i)}_clearCache(){for(let t=0;t<16;t++)this._boundBindGroup[t]=null,this._boundVertexBuffer[t]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(t){this._gpu=t}}).extension={type:[ExtensionType.WebGPUSystem],name:"encoder",priority:1}}}),init_GpuStencilSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.mjs"(){init_globals(),init_Extensions(),init_const6(),(GpuStencilSystem=class{constructor(t){this._renderTargetStencilState=Object.create(null),this._renderer=t,t.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(t){let r=this._renderTargetStencilState[t.uid];r||(r=this._renderTargetStencilState[t.uid]={stencilMode:STENCIL_MODES.DISABLED,stencilReference:0}),this._activeRenderTarget=t,this.setStencilMode(r.stencilMode,r.stencilReference)}setStencilMode(t,r){let n=this._renderTargetStencilState[this._activeRenderTarget.uid];n.stencilMode=t,n.stencilReference=r;let i=this._renderer;i.pipeline.setStencilMode(t),i.encoder.renderPassEncoder.setStencilReference(r)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"stencil"}}}),init_UboBatch=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/UboBatch.mjs"(){init_globals(),UboBatch=class{constructor({minUniformOffsetAlignment:t}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=t,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(t){if(t>this._minUniformOffsetAlignment/4)throw Error("UniformBufferBatch: array is too large: "+4*t);let r=this.byteIndex,n=r+4*t;if((n=Math.ceil(n/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment)>4*this.data.length)throw Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=n,r}addGroup(t){let r=this.addEmptyGroup(t.length);for(let n=0;n<t.length;n++)this.data[r/4+n]=t[n];return r}destroy(){this._buffer.destroy(),this._buffer=null,this.data=null}}}}),init_GpuUniformBatchPipe=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUniformBatchPipe.mjs"(){init_globals(),init_Extensions(),init_Buffer(),init_BufferResource(),init_const(),init_UboBatch(),init_BindGroup(),minUniformOffsetAlignment=128,(GpuUniformBatchPipe=class{constructor(t){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=t,this._batchBuffer=new UboBatch({minUniformOffsetAlignment:minUniformOffsetAlignment});let r=256/minUniformOffsetAlignment;for(let t=0;t<r;t++){let r=BufferUsage.UNIFORM|BufferUsage.COPY_DST;0===t&&(r|=BufferUsage.COPY_SRC),this._buffers.push(new Buffer3({data:this._batchBuffer.data,usage:r}))}}renderEnd(){this._uploadBindGroups(),this._resetBindGroups()}_resetBindGroups(){for(let t in this._bindGroupHash)this._bindGroupHash[t]=null;this._batchBuffer.clear()}getUniformBindGroup(t,r){if(!r&&this._bindGroupHash[t.uid])return this._bindGroupHash[t.uid];this._renderer.ubo.ensureUniformGroup(t);let n=t.buffer.data,i=this._batchBuffer.addEmptyGroup(n.length);return this._renderer.ubo.syncUniformGroup(t,this._batchBuffer.data,i/4),this._bindGroupHash[t.uid]=this._getBindGroup(i/minUniformOffsetAlignment),this._bindGroupHash[t.uid]}getUboResource(t){this._renderer.ubo.updateUniformGroup(t);let r=t.buffer.data,n=this._batchBuffer.addGroup(r);return this._getBufferResource(n/minUniformOffsetAlignment)}getArrayBindGroup(t){let r=this._batchBuffer.addGroup(t);return this._getBindGroup(r/minUniformOffsetAlignment)}getArrayBufferResource(t){let r=this._batchBuffer.addGroup(t)/minUniformOffsetAlignment;return this._getBufferResource(r)}_getBufferResource(t){if(!this._bufferResources[t]){let r=this._buffers[t%2];this._bufferResources[t]=new BufferResource({buffer:r,offset:256*(t/2|0),size:minUniformOffsetAlignment})}return this._bufferResources[t]}_getBindGroup(t){if(!this._bindGroups[t]){let r=new BindGroup({0:this._getBufferResource(t)});this._bindGroups[t]=r}return this._bindGroups[t]}_uploadBindGroups(){let t=this._renderer.buffer,r=this._buffers[0];r.update(this._batchBuffer.byteIndex),t.updateBuffer(r);let n=this._renderer.gpu.device.createCommandEncoder();for(let i=1;i<this._buffers.length;i++){let a=this._buffers[i];n.copyBufferToBuffer(t.getGPUBuffer(r),minUniformOffsetAlignment,t.getGPUBuffer(a),0,this._batchBuffer.byteIndex)}this._renderer.gpu.device.queue.submit([n.finish()])}destroy(){for(let t=0;t<this._bindGroups.length;t++)this._bindGroups[t].destroy();this._bindGroups=null,this._bindGroupHash=null;for(let t=0;t<this._buffers.length;t++)this._buffers[t].destroy();this._buffers=null;for(let t=0;t<this._bufferResources.length;t++)this._bufferResources[t].destroy();this._bufferResources=null,this._batchBuffer.destroy(),this._bindGroupHash=null,this._renderer=null}}).extension={type:[ExtensionType.WebGPUPipes],name:"uniformBatch"}}});function ensureAttributes(t,r){for(let n in t.attributes){let i=t.attributes[n],a=r[n];a?(i.location??(i.location=a.location),i.format??(i.format=a.format),i.offset??(i.offset=a.offset),i.instance??(i.instance=a.instance)):warn(`Attribute ${n} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`)}ensureStartAndStride(t)}function ensureStartAndStride(t){let{buffers:r,attributes:n}=t,i={},a={};for(let t in r){let n=r[t];i[n.uid]=0,a[n.uid]=0}for(let t in n){let r=n[t];i[r.buffer.uid]+=getAttributeInfoFromFormat(r.format).stride}for(let t in n){let r=n[t];r.stride??(r.stride=i[r.buffer.uid]),r.start??(r.start=a[r.buffer.uid]),a[r.buffer.uid]+=getAttributeInfoFromFormat(r.format).stride}}var GpuStencilModesToPixi,topologyStringToId,PipelineSystem,init_ensureAttributes=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/ensureAttributes.mjs"(){init_globals(),init_warn2(),init_getAttributeInfoFromFormat()}}),init_GpuStencilModesToPixi=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStencilModesToPixi.mjs"(){init_globals(),init_const6(),(GpuStencilModesToPixi=[])[STENCIL_MODES.NONE]=void 0,GpuStencilModesToPixi[STENCIL_MODES.DISABLED]={stencilWriteMask:0,stencilReadMask:0},GpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_ADD]={stencilFront:{compare:"equal",passOp:"increment-clamp"},stencilBack:{compare:"equal",passOp:"increment-clamp"}},GpuStencilModesToPixi[STENCIL_MODES.RENDERING_MASK_REMOVE]={stencilFront:{compare:"equal",passOp:"decrement-clamp"},stencilBack:{compare:"equal",passOp:"decrement-clamp"}},GpuStencilModesToPixi[STENCIL_MODES.MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"equal",passOp:"keep"},stencilBack:{compare:"equal",passOp:"keep"}}}});function getGraphicsStateKey(t,r,n,i,a){return t<<24|r<<16|n<<10|i<<5|a}function getGlobalStateKey(t,r,n,i){return n<<6|t<<3|i<<1|r}var init_PipelineSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/pipeline/PipelineSystem.mjs"(){init_globals(),init_Extensions(),init_ensureAttributes(),init_const6(),init_createIdFromString(),init_GpuStencilModesToPixi(),topologyStringToId={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4},(PipelineSystem=class{constructor(t){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._renderer=t}contextChange(t){this._gpu=t,this.setStencilMode(STENCIL_MODES.DISABLED),this._updatePipeHash()}setMultisampleCount(t){this._multisampleCount!==t&&(this._multisampleCount=t,this._updatePipeHash())}setRenderTarget(t){this._multisampleCount=t.msaaSamples,this._depthStencilAttachment=+!!t.descriptor.depthStencilAttachment,this._updatePipeHash()}setColorMask(t){this._colorMask!==t&&(this._colorMask=t,this._updatePipeHash())}setStencilMode(t){this._stencilMode!==t&&(this._stencilMode=t,this._stencilState=GpuStencilModesToPixi[t],this._updatePipeHash())}setPipeline(t,r,n,i){let a=this.getPipeline(t,r,n);i.setPipeline(a)}getPipeline(t,r,n,i){t._layoutKey||(ensureAttributes(t,r.attributeData),this._generateBufferKey(t)),i=i||t.topology;let a=getGraphicsStateKey(t._layoutKey,r._layoutKey,n.data,n._blendModeId,topologyStringToId[i]);return this._pipeCache[a]||(this._pipeCache[a]=this._createPipeline(t,r,n,i)),this._pipeCache[a]}_createPipeline(t,r,n,i){let a=this._gpu.device,o=this._createVertexBufferLayouts(t),s=this._renderer.state.getColorTargets(n);s[0].writeMask=this._stencilMode===STENCIL_MODES.RENDERING_MASK_ADD?0:this._colorMask;let l=this._renderer.shader.getProgramData(r).pipeline,u={vertex:{module:this._getModule(r.vertex.source),entryPoint:r.vertex.entryPoint,buffers:o},fragment:{module:this._getModule(r.fragment.source),entryPoint:r.fragment.entryPoint,targets:s},primitive:{topology:i,cullMode:n.cullMode},layout:l,multisample:{count:this._multisampleCount},label:"PIXI Pipeline"};return this._depthStencilAttachment&&(u.depthStencil={...this._stencilState,format:"depth24plus-stencil8",depthWriteEnabled:n.depthTest,depthCompare:n.depthTest?"less":"always"}),a.createRenderPipeline(u)}_getModule(t){return this._moduleCache[t]||this._createModule(t)}_createModule(t){let r=this._gpu.device;return this._moduleCache[t]=r.createShaderModule({code:t}),this._moduleCache[t]}_generateBufferKey(t){let r=[],n=0,i=Object.keys(t.attributes).sort();for(let a=0;a<i.length;a++){let o=t.attributes[i[a]];r[n++]=o.location,r[n++]=o.offset,r[n++]=o.format,r[n++]=o.stride}return t._layoutKey=createIdFromString(r.join(""),"geometry"),t._layoutKey}_createVertexBufferLayouts(t){if(this._bufferLayoutsCache[t._layoutKey])return this._bufferLayoutsCache[t._layoutKey];let r=[];return t.buffers.forEach(n=>{let i={arrayStride:0,stepMode:"vertex",attributes:[]},a=i.attributes;for(let r in t.attributes){let o=t.attributes[r];o.buffer===n&&(i.arrayStride=o.stride,i.stepMode=o.instance?"instance":"vertex",a.push({shaderLocation:o.location,offset:o.offset,format:o.format}))}a.length&&r.push(i)}),this._bufferLayoutsCache[t._layoutKey]=r,r}_updatePipeHash(){let t=getGlobalStateKey(this._stencilMode,this._multisampleCount,this._colorMask,this._depthStencilAttachment);this._pipeStateCaches[t]||(this._pipeStateCaches[t]=Object.create(null)),this._pipeCache=this._pipeStateCaches[t]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"pipeline"}}});function calculateProjection(t,r,n,i,a,o){let s=o?1:-1;return t.identity(),t.a=1/i*2,t.d=1/a*2*s,t.tx=-1-r*t.a,t.ty=-s-n*t.d,t}var init_calculateProjection=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/calculateProjection.mjs"(){init_globals()}});function isRenderingToScreen(t){let r=t.colorTexture.source.resource;return globalThis.HTMLCanvasElement&&r instanceof HTMLCanvasElement&&document.body.contains(r)}var RenderTargetSystem,GpuRenderTarget,GpuRenderTargetAdaptor,GpuRenderTargetSystem,GpuShaderSystem,GpuBlendModesToPixi,GpuStateSystem,gpuUploadBufferImageResource,blockDataMap,defaultBlockData,gpuUploadCompressedTextureResource,gpuUploadImageResource,gpuUploadVideoResource,GpuMipmapGenerator,GpuTextureSystem,DefaultWebGPUSystems,DefaultWebGPUPipes,DefaultWebGPUAdapters,systems,renderPipes,renderPipeAdaptors,WebGPURenderer,init_isRenderingToScreen=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/isRenderingToScreen.mjs"(){init_globals()}}),init_RenderTargetSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/renderTarget/RenderTargetSystem.mjs"(){init_globals(),init_Matrix(),init_Rectangle(),init_const3(),init_calculateProjection(),init_SystemRunner(),init_CanvasSource(),init_TextureSource(),init_Texture(),init_getCanvasTexture(),init_isRenderingToScreen(),init_RenderTarget(),RenderTargetSystem=class{constructor(t){this.rootViewPort=new Rectangle,this.viewport=new Rectangle,this.onRenderTargetChange=new SystemRunner("onRenderTargetChange"),this.projectionMatrix=new Matrix,this.defaultClearColor=[0,0,0,0],this._renderSurfaceToRenderTargetHash=new Map,this._gpuRenderTargetHash=Object.create(null),this._renderTargetStack=[],this._renderer=t}finishRenderPass(){this.adaptor.finishRenderPass(this.renderTarget)}renderStart({target:t,clear:r,clearColor:n,frame:i}){this._renderTargetStack.length=0,this.push(t,r,n,i),this.rootViewPort.copyFrom(this.viewport),this.rootRenderTarget=this.renderTarget,this.renderingToScreen=isRenderingToScreen(this.rootRenderTarget)}bind(t,r=!0,n,i){let a=this.getRenderTarget(t),o=this.renderTarget!==a;this.renderTarget=a,this.renderSurface=t;let s=this.getGpuRenderTarget(a);a.pixelWidth===s.width&&a.pixelHeight===s.height||(this.adaptor.resizeGpuRenderTarget(a),s.width=a.pixelWidth,s.height=a.pixelHeight);let l=a.colorTexture,u=this.viewport,d=l.pixelWidth,c=l.pixelHeight;if(!i&&t instanceof Texture&&(i=t.frame),i){let t=l._resolution;u.x=i.x*t+.5|0,u.y=i.y*t+.5|0,u.width=i.width*t+.5|0,u.height=i.height*t+.5|0}else u.x=0,u.y=0,u.width=d,u.height=c;return calculateProjection(this.projectionMatrix,0,0,u.width/l.resolution,u.height/l.resolution,!a.isRoot),this.adaptor.startRenderPass(a,r,n,u),o&&this.onRenderTargetChange.emit(a),a}clear(t,r=CLEAR.ALL,n){r&&(t&&(t=this.getRenderTarget(t)),this.adaptor.clear(t||this.renderTarget,r,n,this.viewport))}contextChange(){this._gpuRenderTargetHash=Object.create(null)}push(t,r=CLEAR.ALL,n,i){let a=this.bind(t,r,n,i);return this._renderTargetStack.push({renderTarget:a,frame:i}),a}pop(){this._renderTargetStack.pop();let t=this._renderTargetStack[this._renderTargetStack.length-1];this.bind(t.renderTarget,!1,null,t.frame)}getRenderTarget(t){return t.isTexture&&(t=t.source),this._renderSurfaceToRenderTargetHash.get(t)??this._initRenderTarget(t)}copyToTexture(t,r,n,i,a){n.x<0&&(i.width+=n.x,a.x-=n.x,n.x=0),n.y<0&&(i.height+=n.y,a.y-=n.y,n.y=0);let{pixelWidth:o,pixelHeight:s}=t;return i.width=Math.min(i.width,o-n.x),i.height=Math.min(i.height,s-n.y),this.adaptor.copyToTexture(t,r,n,i,a)}ensureDepthStencil(){this.renderTarget.stencil||(this.renderTarget.stencil=!0,this.adaptor.startRenderPass(this.renderTarget,!1,null,this.viewport))}destroy(){this._renderer=null,this._renderSurfaceToRenderTargetHash.forEach((t,r)=>{t!==r&&t.destroy()}),this._renderSurfaceToRenderTargetHash.clear(),this._gpuRenderTargetHash=Object.create(null)}_initRenderTarget(t){let r=null;return CanvasSource.test(t)&&(t=getCanvasTexture(t)),t instanceof RenderTarget?r=t:t instanceof TextureSource&&(r=new RenderTarget({colorTextures:[t]}),CanvasSource.test(t.source.resource)&&(r.isRoot=!0),t.once("destroy",()=>{r.destroy();let t=this._gpuRenderTargetHash[r.uid];t&&(this._gpuRenderTargetHash[r.uid]=null,this.adaptor.destroyGpuRenderTarget(t))})),this._renderSurfaceToRenderTargetHash.set(t,r),r}getGpuRenderTarget(t){return this._gpuRenderTargetHash[t.uid]||(this._gpuRenderTargetHash[t.uid]=this.adaptor.initGpuRenderTarget(t))}}}}),init_GpuRenderTarget=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTarget.mjs"(){init_globals(),GpuRenderTarget=class{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}}}}),init_GpuRenderTargetAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.mjs"(){init_globals(),init_const3(),init_CanvasSource(),init_TextureSource(),init_GpuRenderTarget(),GpuRenderTargetAdaptor=class{init(t,r){this._renderer=t,this._renderTargetSystem=r}copyToTexture(t,r,n,i,a){let o=this._renderer,s=this._getGpuColorTexture(t),l=o.texture.getGpuSource(r.source);return o.encoder.commandEncoder.copyTextureToTexture({texture:s,origin:n},{texture:l,origin:a},i),r}startRenderPass(t,r=!0,n,i){let a=this._renderTargetSystem.getGpuRenderTarget(t);a.descriptor=this.getDescriptor(t,r,n),this._renderer.pipeline.setRenderTarget(a),this._renderer.encoder.beginRenderPass(a),this._renderer.encoder.setViewport(i)}finishRenderPass(){this._renderer.encoder.endRenderPass()}_getGpuColorTexture(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);return r.contexts[0]?r.contexts[0].getCurrentTexture():this._renderer.texture.getGpuSource(t.colorTextures[0].source)}getDescriptor(t,r,n){let i;"boolean"==typeof r&&(r=r?CLEAR.ALL:CLEAR.NONE);let a=this._renderTargetSystem,o=a.getGpuRenderTarget(t),s=t.colorTextures.map((t,i)=>{let s,l,u=o.contexts[i];s=u?u.getCurrentTexture().createView():this._renderer.texture.getGpuSource(t).createView({mipLevelCount:1}),o.msaaTextures[i]&&(l=s,s=this._renderer.texture.getTextureView(o.msaaTextures[i]));let d=r&CLEAR.COLOR?"clear":"load";return n??(n=a.defaultClearColor),{view:s,resolveTarget:l,clearValue:n,storeOp:"store",loadOp:d}});if((t.stencil||t.depth)&&!t.depthStencilTexture&&(t.ensureDepthStencilTexture(),t.depthStencilTexture.source.sampleCount=o.msaa?4:1),t.depthStencilTexture){let n=r&CLEAR.STENCIL?"clear":"load",a=r&CLEAR.DEPTH?"clear":"load";i={view:this._renderer.texture.getGpuSource(t.depthStencilTexture.source).createView(),stencilStoreOp:"store",stencilLoadOp:n,depthClearValue:1,depthLoadOp:a,depthStoreOp:"store"}}return{colorAttachments:s,depthStencilAttachment:i}}clear(t,r=!0,n,i){if(!r)return;let{gpu:a,encoder:o}=this._renderer,s=a.device;if(null===o.commandEncoder){let a=s.createCommandEncoder(),o=this.getDescriptor(t,r,n),l=a.beginRenderPass(o);l.setViewport(i.x,i.y,i.width,i.height,0,1),l.end();let u=a.finish();s.queue.submit([u])}else this.startRenderPass(t,r,n,i)}initGpuRenderTarget(t){t.isRoot=!0;let r=new GpuRenderTarget;return t.colorTextures.forEach((t,n)=>{if(CanvasSource.test(t.resource)){let i=t.resource.getContext("webgpu"),a=t.transparent?"premultiplied":"opaque";try{i.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:"bgra8unorm",alphaMode:a})}catch(t){import_console_browserify.default.error(t)}r.contexts[n]=i}if(r.msaa=t.source.antialias,t.source.antialias){let t=new TextureSource({width:0,height:0,sampleCount:4});r.msaaTextures[n]=t}}),r.msaa&&(r.msaaSamples=4,t.depthStencilTexture&&(t.depthStencilTexture.source.sampleCount=4)),r}destroyGpuRenderTarget(t){t.contexts.forEach(t=>{t.unconfigure()}),t.msaaTextures.forEach(t=>{t.destroy()}),t.msaaTextures.length=0,t.contexts.length=0}ensureDepthStencilTexture(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);t.depthStencilTexture&&r.msaa&&(t.depthStencilTexture.source.sampleCount=4)}resizeGpuRenderTarget(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);r.width=t.width,r.height=t.height,r.msaa&&t.colorTextures.forEach((t,n)=>{let i=r.msaaTextures[n];i?.resize(t.source.width,t.source.height,t.source._resolution)})}}}}),init_GpuRenderTargetSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.mjs"(){init_globals(),init_Extensions(),init_RenderTargetSystem(),init_GpuRenderTargetAdaptor(),(GpuRenderTargetSystem=class extends RenderTargetSystem{constructor(t){super(t),this.adaptor=new GpuRenderTargetAdaptor,this.adaptor.init(t,this)}}).extension={type:[ExtensionType.WebGPUSystem],name:"renderTarget"}}}),init_GpuShaderSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuShaderSystem.mjs"(){init_globals(),init_Extensions(),(GpuShaderSystem=class{constructor(){this._gpuProgramData=Object.create(null)}contextChange(t){this._gpu=t}getProgramData(t){return this._gpuProgramData[t._layoutKey]||this._createGPUProgramData(t)}_createGPUProgramData(t){let r=this._gpu.device,n=t.gpuLayout.map(t=>r.createBindGroupLayout({entries:t})),i={bindGroupLayouts:n};return this._gpuProgramData[t._layoutKey]={bindGroups:n,pipeline:r.createPipelineLayout(i)},this._gpuProgramData[t._layoutKey]}destroy(){this._gpu=null,this._gpuProgramData=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"shader"}}}),init_GpuBlendModesToPixi=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuBlendModesToPixi.mjs"(){init_globals(),(GpuBlendModesToPixi={}).normal={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}},GpuBlendModesToPixi.add={alpha:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one",operation:"add"}},GpuBlendModesToPixi.multiply={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"dst",dstFactor:"one-minus-src-alpha",operation:"add"}},GpuBlendModesToPixi.screen={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},GpuBlendModesToPixi.overlay={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}},GpuBlendModesToPixi.none={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"zero",operation:"add"}},GpuBlendModesToPixi["normal-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"}},GpuBlendModesToPixi["add-npm"]={alpha:{srcFactor:"one",dstFactor:"one",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one",operation:"add"}},GpuBlendModesToPixi["screen-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src",operation:"add"}},GpuBlendModesToPixi.erase={alpha:{srcFactor:"zero",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"one-minus-src",operation:"add"}}}}),init_GpuStateSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStateSystem.mjs"(){init_globals(),init_Extensions(),init_State(),init_GpuBlendModesToPixi(),(GpuStateSystem=class{constructor(){this.defaultState=new State,this.defaultState.blend=!0}contextChange(t){this.gpu=t}getColorTargets(t){return[{format:"bgra8unorm",writeMask:0,blend:GpuBlendModesToPixi[t.blendMode]||GpuBlendModesToPixi.normal}]}destroy(){this.gpu=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"state"}}}),init_gpuUploadBufferImageResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.mjs"(){init_globals(),gpuUploadBufferImageResource={type:"image",upload(t,r,n){let i=t.resource,a=(0|t.pixelWidth)*(0|t.pixelHeight),o=i.byteLength/a;n.device.queue.writeTexture({texture:r},i,{offset:0,rowsPerImage:t.pixelHeight,bytesPerRow:t.pixelHeight*o},{width:t.pixelWidth,height:t.pixelHeight,depthOrArrayLayers:1})}}}}),init_gpuUploadCompressedTextureResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.mjs"(){init_globals(),blockDataMap={"bc1-rgba-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"bc2-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc3-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc7-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"etc1-rgb-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"etc2-rgba8unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"astc-4x4-unorm":{blockBytes:16,blockWidth:4,blockHeight:4}},defaultBlockData={blockBytes:4,blockWidth:1,blockHeight:1},gpuUploadCompressedTextureResource={type:"compressed",upload(t,r,n){let i=t.pixelWidth,a=t.pixelHeight,o=blockDataMap[t.format]||defaultBlockData;for(let s=0;s<t.resource.length;s++){let l=t.resource[s],u=Math.ceil(i/o.blockWidth)*o.blockBytes;n.device.queue.writeTexture({texture:r,mipLevel:s},l,{offset:0,bytesPerRow:u},{width:Math.ceil(i/o.blockWidth)*o.blockWidth,height:Math.ceil(a/o.blockHeight)*o.blockHeight,depthOrArrayLayers:1}),i=Math.max(i>>1,1),a=Math.max(a>>1,1)}}}}}),init_gpuUploadImageSource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.mjs"(){init_globals(),gpuUploadImageResource={type:"image",upload(t,r,n){let i=t.resource;if(!i)return;let a=Math.min(r.width,t.resourceWidth||t.pixelWidth),o=Math.min(r.height,t.resourceHeight||t.pixelHeight),s="premultiply-alpha-on-upload"===t.alphaMode;n.device.queue.copyExternalImageToTexture({source:i},{texture:r,premultipliedAlpha:s},{width:a,height:o})}}}}),init_gpuUploadVideoSource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.mjs"(){init_globals(),init_gpuUploadImageSource(),gpuUploadVideoResource={type:"video",upload(t,r,n){gpuUploadImageResource.upload(t,r,n)}}}}),init_GpuMipmapGenerator=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.mjs"(){init_globals(),GpuMipmapGenerator=class{constructor(t){this.device=t,this.sampler=t.createSampler({minFilter:"linear"}),this.pipelines={}}_getMipmapPipeline(t){let r=this.pipelines[t];return r||(this.mipmapShaderModule||(this.mipmapShaderModule=this.device.createShaderModule({code:"\n var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(\n vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));\n\n struct VertexOutput {\n @builtin(position) position : vec4<f32>,\n @location(0) texCoord : vec2<f32>,\n };\n\n @vertex\n fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n var output : VertexOutput;\n output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);\n output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);\n return output;\n }\n\n @group(0) @binding(0) var imgSampler : sampler;\n @group(0) @binding(1) var img : texture_2d<f32>;\n\n @fragment\n fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {\n return textureSample(img, imgSampler, texCoord);\n }\n "})),r=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:t}]}}),this.pipelines[t]=r),r}generateMipmap(t){let r=this._getMipmapPipeline(t.format);if("3d"===t.dimension||"1d"===t.dimension)throw Error("Generating mipmaps for non-2d textures is currently unsupported!");let n=t,i=t.depthOrArrayLayers||1,a=t.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!a){let r={size:{width:Math.ceil(t.width/2),height:Math.ceil(t.height/2),depthOrArrayLayers:i},format:t.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:t.mipLevelCount-1};n=this.device.createTexture(r)}let o=this.device.createCommandEncoder({}),s=r.getBindGroupLayout(0);for(let l=0;l<i;++l){let i=t.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:l,arrayLayerCount:1}),u=+!!a;for(let a=1;a<t.mipLevelCount;++a){let t=n.createView({baseMipLevel:u++,mipLevelCount:1,dimension:"2d",baseArrayLayer:l,arrayLayerCount:1}),a=o.beginRenderPass({colorAttachments:[{view:t,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),d=this.device.createBindGroup({layout:s,entries:[{binding:0,resource:this.sampler},{binding:1,resource:i}]});a.setPipeline(r),a.setBindGroup(0,d),a.draw(3,1,0,0),a.end(),i=t}}if(!a){let r={width:Math.ceil(t.width/2),height:Math.ceil(t.height/2),depthOrArrayLayers:i};for(let i=1;i<t.mipLevelCount;++i)o.copyTextureToTexture({texture:n,mipLevel:i-1},{texture:t,mipLevel:i},r),r.width=Math.ceil(r.width/2),r.height=Math.ceil(r.height/2)}return this.device.queue.submit([o.finish()]),a||n.destroy(),t}}}}),init_GpuTextureSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/GpuTextureSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_CanvasPool(),init_BindGroup(),init_gpuUploadBufferImageResource(),init_gpuUploadCompressedTextureResource(),init_gpuUploadImageSource(),init_gpuUploadVideoSource(),init_GpuMipmapGenerator(),(GpuTextureSystem=class{constructor(t){this.managedTextures=[],this._gpuSources=Object.create(null),this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._textureViewHash=Object.create(null),this._uploads={image:gpuUploadImageResource,buffer:gpuUploadBufferImageResource,video:gpuUploadVideoResource,compressed:gpuUploadCompressedTextureResource},this._renderer=t}contextChange(t){this._gpu=t}initSource(t){if(t.autoGenerateMipmaps){let r=Math.max(t.pixelWidth,t.pixelHeight);t.mipLevelCount=Math.floor(Math.log2(r))+1}let r=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;"compressed"!==t.uploadMethodId&&(r|=GPUTextureUsage.RENDER_ATTACHMENT,r|=GPUTextureUsage.COPY_SRC);let n=blockDataMap[t.format]||{blockBytes:4,blockWidth:1,blockHeight:1},i=Math.ceil(t.pixelWidth/n.blockWidth)*n.blockWidth,a=Math.ceil(t.pixelHeight/n.blockHeight)*n.blockHeight,o={label:t.label,size:{width:i,height:a},format:t.format,sampleCount:t.sampleCount,mipLevelCount:t.mipLevelCount,dimension:t.dimension,usage:r},s=this._gpu.device.createTexture(o);return this._gpuSources[t.uid]=s,this.managedTextures.includes(t)||(t.on("update",this.onSourceUpdate,this),t.on("resize",this.onSourceResize,this),t.on("destroy",this.onSourceDestroy,this),t.on("unload",this.onSourceUnload,this),t.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(t)),this.onSourceUpdate(t),s}onSourceUpdate(t){let r=this.getGpuSource(t);r&&(this._uploads[t.uploadMethodId]&&this._uploads[t.uploadMethodId].upload(t,r,this._gpu),t.autoGenerateMipmaps&&t.mipLevelCount>1&&this.onUpdateMipmaps(t))}onSourceUnload(t){let r=this._gpuSources[t.uid];r&&(this._gpuSources[t.uid]=null,r.destroy())}onUpdateMipmaps(t){this._mipmapGenerator||(this._mipmapGenerator=new GpuMipmapGenerator(this._gpu.device));let r=this.getGpuSource(t);this._mipmapGenerator.generateMipmap(r)}onSourceDestroy(t){t.off("update",this.onSourceUpdate,this),t.off("unload",this.onSourceUnload,this),t.off("destroy",this.onSourceDestroy,this),t.off("resize",this.onSourceResize,this),t.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(t),1),this.onSourceUnload(t)}onSourceResize(t){let r=this._gpuSources[t.uid];r?r.width===t.pixelWidth&&r.height===t.pixelHeight||(this._textureViewHash[t.uid]=null,this._bindGroupHash[t.uid]=null,this.onSourceUnload(t),this.initSource(t)):this.initSource(t)}_initSampler(t){return this._gpuSamplers[t._resourceId]=this._gpu.device.createSampler(t),this._gpuSamplers[t._resourceId]}getGpuSampler(t){return this._gpuSamplers[t._resourceId]||this._initSampler(t)}getGpuSource(t){return this._gpuSources[t.uid]||this.initSource(t)}getTextureBindGroup(t){return this._bindGroupHash[t.uid]??this._createTextureBindGroup(t)}_createTextureBindGroup(t){let r=t.source,n=r.uid;return this._bindGroupHash[n]=new BindGroup({0:r,1:r.style}),this._bindGroupHash[n]}getTextureView(t){let r=t.source;return this._textureViewHash[r.uid]??this._createTextureView(r)}_createTextureView(t){return this._textureViewHash[t.uid]=this.getGpuSource(t).createView(),this._textureViewHash[t.uid]}generateCanvas(t){let r=this._renderer,n=r.gpu.device.createCommandEncoder(),i=DOMAdapter.get().createCanvas();i.width=t.source.pixelWidth,i.height=t.source.pixelHeight;let a=i.getContext("webgpu");return a.configure({device:r.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:navigator.gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),n.copyTextureToTexture({texture:r.texture.getGpuSource(t.source),origin:{x:0,y:0}},{texture:a.getCurrentTexture()},{width:i.width,height:i.height}),r.gpu.device.queue.submit([n.finish()]),i}getPixels(t){let r=this.generateCanvas(t),n=CanvasPool.getOptimalCanvasAndContext(r.width,r.height),i=n.context;i.drawImage(r,0,0);let{width:a,height:o}=r,s=new Uint8ClampedArray(i.getImageData(0,0,a,o).data.buffer);return CanvasPool.returnCanvasAndContext(n),{pixels:s,width:a,height:o}}destroy(){for(let t of(this.managedTextures.slice().forEach(t=>this.onSourceDestroy(t)),this.managedTextures=null,Object.keys(this._bindGroupHash))){let r=Number(t),n=this._bindGroupHash[r];n?.destroy(),this._bindGroupHash[r]=null}this._gpu=null,this._mipmapGenerator=null,this._gpuSources=null,this._bindGroupHash=null,this._textureViewHash=null,this._gpuSamplers=null}}).extension={type:[ExtensionType.WebGPUSystem],name:"texture"}}}),WebGPURenderer_exports={};__export(WebGPURenderer_exports,{WebGPURenderer:()=>WebGPURenderer});var GlGraphicsAdaptor,GlMeshAdaptor,GlBatchAdaptor,BUFFER_TYPE,GlBuffer,GlBufferSystem,_GlContextSystem,GlContextSystem,GL_FORMATS,GL_TARGETS,GL_TYPES,infoMap,init_WebGPURenderer=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/WebGPURenderer.mjs"(){init_globals(),init_Extensions(),init_GpuGraphicsAdaptor(),init_GpuMeshAdapter(),init_GpuBatchAdaptor(),init_AbstractRenderer(),init_SharedSystems(),init_types2(),init_BindGroupSystem(),init_GpuBufferSystem(),init_GpuColorMaskSystem(),init_GpuDeviceSystem(),init_GpuEncoderSystem(),init_GpuStencilSystem(),init_GpuUboSystem(),init_GpuUniformBatchPipe(),init_PipelineSystem(),init_GpuRenderTargetSystem(),init_GpuShaderSystem(),init_GpuStateSystem(),init_GpuTextureSystem(),DefaultWebGPUSystems=[...SharedSystems,GpuUboSystem,GpuEncoderSystem,GpuDeviceSystem,GpuBufferSystem,GpuTextureSystem,GpuRenderTargetSystem,GpuShaderSystem,GpuStateSystem,PipelineSystem,GpuColorMaskSystem,GpuStencilSystem,BindGroupSystem],DefaultWebGPUPipes=[...SharedRenderPipes,GpuUniformBatchPipe],DefaultWebGPUAdapters=[GpuBatchAdaptor,GpuMeshAdapter,GpuGraphicsAdaptor],systems=[],renderPipes=[],renderPipeAdaptors=[],extensions.handleByNamedList(ExtensionType.WebGPUSystem,systems),extensions.handleByNamedList(ExtensionType.WebGPUPipes,renderPipes),extensions.handleByNamedList(ExtensionType.WebGPUPipesAdaptor,renderPipeAdaptors),extensions.add(...DefaultWebGPUSystems,...DefaultWebGPUPipes,...DefaultWebGPUAdapters),WebGPURenderer=class extends AbstractRenderer{constructor(){super({name:"webgpu",type:RendererType.WEBGPU,systems:systems,renderPipes:renderPipes,renderPipeAdaptors:renderPipeAdaptors})}}}}),init_GlGraphicsAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/gl/GlGraphicsAdaptor.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_const5(),init_compileHighShaderToProgram(),init_colorBit(),init_generateTextureBatchBit(),init_localUniformBit(),init_roundPixelsBit(),init_batchSamplersUniformGroup(),init_Shader(),init_UniformGroup(),(GlGraphicsAdaptor=class{init(){let t=new UniformGroup({uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uTransformMatrix:{value:new Matrix,type:"mat3x3<f32>"},uRound:{value:0,type:"f32"}}),r=compileHighShaderGlProgram({name:"graphics",bits:[colorBitGl,generateTextureBatchBitGl(MAX_TEXTURES),localUniformBitGl,roundPixelsBitGl]});this.shader=new Shader({glProgram:r,resources:{localUniforms:t,batchSamplers:batchSamplersUniformGroup}})}execute(t,r){let n=r.context,i=n.customShader||this.shader,a=t.renderer,{geometry:o,instructions:s}=a.graphicsContext.getContextRenderData(n);i.groups[0]=a.globalUniforms.bindGroup,a.state.set(t.state),a.shader.bind(i),a.geometry.bind(o,i.glProgram);let l=s.instructions;for(let t=0;t<s.instructionSize;t++){let r=l[t];if(r.size){for(let t=0;t<r.textures.textures.length;t++)a.texture.bind(r.textures.textures[t],t);a.geometry.draw("triangle-list",r.size,r.start)}}}destroy(){this.shader.destroy(!0),this.shader=null}}).extension={type:[ExtensionType.WebGLPipesAdaptor],name:"graphics"}}}),init_GlMeshAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/gl/GlMeshAdaptor.mjs"(){init_globals(),init_Extensions(),init_Matrix(),init_compileHighShaderToProgram(),init_localUniformBit(),init_roundPixelsBit(),init_textureBit(),init_Shader(),init_Texture(),init_warn2(),(GlMeshAdaptor=class{init(){let t=compileHighShaderGlProgram({name:"mesh",bits:[localUniformBitGl,textureBitGl,roundPixelsBitGl]});this._shader=new Shader({glProgram:t,resources:{uTexture:Texture.EMPTY.source,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new Matrix}}}})}execute(t,r){let n=t.renderer,i=r._shader;if(i){if(!i.glProgram)return void warn("Mesh shader has no glProgram",r.shader)}else{i=this._shader;let t=r.texture,n=t.source;i.resources.uTexture=n,i.resources.uSampler=n.style,i.resources.textureUniforms.uniforms.uTextureMatrix=t.textureMatrix.mapCoord}i.groups[100]=n.globalUniforms.bindGroup,i.groups[101]=t.localUniformsBindGroup,n.encoder.draw({geometry:r._geometry,shader:i,state:r.state})}destroy(){this._shader.destroy(!0),this._shader=null}}).extension={type:[ExtensionType.WebGLPipesAdaptor],name:"mesh"}}}),init_GlBatchAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/batcher/gl/GlBatchAdaptor.mjs"(){init_globals(),init_Extensions(),init_compileHighShaderToProgram(),init_colorBit(),init_generateTextureBatchBit(),init_roundPixelsBit(),init_batchSamplersUniformGroup(),init_Shader(),init_State(),init_const5(),(GlBatchAdaptor=class{constructor(){this._didUpload=!1,this._tempState=State.for2d()}init(t){let r=compileHighShaderGlProgram({name:"batch",bits:[colorBitGl,generateTextureBatchBitGl(MAX_TEXTURES),roundPixelsBitGl]});this._shader=new Shader({glProgram:r,resources:{batchSamplers:batchSamplersUniformGroup}}),t.renderer.runners.contextChange.add(this)}contextChange(){this._didUpload=!1}start(t,r){let n=t.renderer;n.shader.bind(this._shader,this._didUpload),n.shader.updateUniformGroup(n.globalUniforms.uniformGroup),n.geometry.bind(r,this._shader.glProgram)}execute(t,r){let n=t.renderer;this._didUpload=!0,this._tempState.blendMode=r.blendMode,n.state.set(this._tempState);let i=r.textures.textures;for(let t=0;t<i.length;t++)n.texture.bind(i[t],t);n.geometry.draw("triangle-list",r.size,r.start)}destroy(){this._shader.destroy(!0),this._shader=null}}).extension={type:[ExtensionType.WebGLPipesAdaptor],name:"batch"}}}),init_const9=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/const.mjs"(){let t;init_globals(),(t=BUFFER_TYPE||{})[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",BUFFER_TYPE=t}}),init_GlBuffer=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBuffer.mjs"(){init_globals(),GlBuffer=class{constructor(t,r){this.buffer=t||null,this.updateID=-1,this.byteLength=-1,this.type=r}}}}),init_GlBufferSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBufferSystem.mjs"(){init_globals(),init_Extensions(),init_const(),init_const9(),init_GlBuffer(),(GlBufferSystem=class{constructor(t){this._gpuBuffers=Object.create(null),this._boundBufferBases=Object.create(null),this._renderer=t}destroy(){this._renderer=null,this._gl=null,this._gpuBuffers=null,this._boundBufferBases=null}contextChange(){this._gpuBuffers=Object.create(null),this._gl=this._renderer.gl}getGlBuffer(t){return this._gpuBuffers[t.uid]||this.createGLBuffer(t)}bind(t){let{_gl:r}=this,n=this.getGlBuffer(t);r.bindBuffer(n.type,n.buffer)}bindBufferBase(t,r){let{_gl:n}=this;if(this._boundBufferBases[r]!==t){let i=this.getGlBuffer(t);this._boundBufferBases[r]=t,n.bindBufferBase(n.UNIFORM_BUFFER,r,i.buffer)}}bindBufferRange(t,r,n){let{_gl:i}=this;n=n||0;let a=this.getGlBuffer(t);i.bindBufferRange(i.UNIFORM_BUFFER,r||0,a.buffer,256*n,256)}updateBuffer(t){let{_gl:r}=this,n=this.getGlBuffer(t);if(t._updateID===n.updateID)return n;n.updateID=t._updateID,r.bindBuffer(n.type,n.buffer);let i=t.data;if(n.byteLength>=t.data.byteLength)r.bufferSubData(n.type,0,i,0,t._updateSize/i.BYTES_PER_ELEMENT);else{let a=t.descriptor.usage&BufferUsage.STATIC?r.STATIC_DRAW:r.DYNAMIC_DRAW;n.byteLength=i.byteLength,r.bufferData(n.type,i,a)}return n}destroyAll(){let t=this._gl;for(let r in this._gpuBuffers)t.deleteBuffer(this._gpuBuffers[r].buffer);this._gpuBuffers=Object.create(null)}onBufferDestroy(t,r){let n=this._gpuBuffers[t.uid],i=this._gl;r||i.deleteBuffer(n.buffer),this._gpuBuffers[t.uid]=null}createGLBuffer(t){let{_gl:r}=this,n=BUFFER_TYPE.ARRAY_BUFFER;t.descriptor.usage&BufferUsage.INDEX?n=BUFFER_TYPE.ELEMENT_ARRAY_BUFFER:t.descriptor.usage&BufferUsage.UNIFORM&&(n=BUFFER_TYPE.UNIFORM_BUFFER);let i=new GlBuffer(r.createBuffer(),n);return this._gpuBuffers[t.uid]=i,t.on("destroy",this.onBufferDestroy,this),i}}).extension={type:[ExtensionType.WebGLSystem],name:"buffer"}}}),init_GlContextSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/context/GlContextSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_warn2(),(_GlContextSystem=class t{constructor(t){this.supports={uint32Indices:!0,uniformBufferObject:!0,vertexArrayObject:!0,srgbTextures:!0,nonPowOf2wrapping:!0,msaa:!0,nonPowOf2mipmaps:!0},this._renderer=t,this.extensions=Object.create(null),this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(t){this.gl=t,this._renderer.gl=t}init(r){if((r={...t.defaultOptions,...r}).context)this.initFromContext(r.context);else{let t=this._renderer.background.alpha<1,n=r.premultipliedAlpha??!0,i=r.antialias&&!this._renderer.backBuffer.useBackBuffer;this.createContext(r.preferWebGLVersion,{alpha:t,premultipliedAlpha:n,antialias:i,stencil:!0,preserveDrawingBuffer:r.preserveDrawingBuffer,powerPreference:r.powerPreference??"default"})}}initFromContext(t){this.gl=t,this.webGLVersion=t instanceof DOMAdapter.get().getWebGLRenderingContext()?1:2,this.getExtensions(),this.validateContext(t),this._renderer.runners.contextChange.emit(t);let r=this._renderer.view.canvas;r.addEventListener("webglcontextlost",this.handleContextLost,!1),r.addEventListener("webglcontextrestored",this.handleContextRestored,!1)}createContext(t,r){let n,i=this._renderer.view.canvas;if(2===t&&(n=i.getContext("webgl2",r)),!n&&!(n=i.getContext("webgl",r)))throw Error("This browser does not support WebGL. Try using the canvas renderer");this.gl=n,this.initFromContext(this.gl)}getExtensions(){let{gl:t}=this,r={anisotropicFiltering:t.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),s3tc:t.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:t.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:t.getExtension("WEBGL_compressed_texture_etc"),etc1:t.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:t.getExtension("WEBGL_compressed_texture_atc"),astc:t.getExtension("WEBGL_compressed_texture_astc"),bptc:t.getExtension("EXT_texture_compression_bptc"),rgtc:t.getExtension("EXT_texture_compression_rgtc"),loseContext:t.getExtension("WEBGL_lose_context")};if(1===this.webGLVersion)this.extensions={...r,drawBuffers:t.getExtension("WEBGL_draw_buffers"),depthTexture:t.getExtension("WEBGL_depth_texture"),vertexArrayObject:t.getExtension("OES_vertex_array_object")||t.getExtension("MOZ_OES_vertex_array_object")||t.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:t.getExtension("OES_element_index_uint"),floatTexture:t.getExtension("OES_texture_float"),floatTextureLinear:t.getExtension("OES_texture_float_linear"),textureHalfFloat:t.getExtension("OES_texture_half_float"),textureHalfFloatLinear:t.getExtension("OES_texture_half_float_linear"),vertexAttribDivisorANGLE:t.getExtension("ANGLE_instanced_arrays"),srgb:t.getExtension("EXT_sRGB")};else{this.extensions={...r,colorBufferFloat:t.getExtension("EXT_color_buffer_float")};let n=t.getExtension("WEBGL_provoking_vertex");n&&n.provokingVertexWEBGL(n.FIRST_VERTEX_CONVENTION_WEBGL)}}handleContextLost(t){t.preventDefault(),this._contextLossForced&&(this._contextLossForced=!1,setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext?.restoreContext()},0))}handleContextRestored(){this._renderer.runners.contextChange.emit(this.gl)}destroy(){let t=this._renderer.view.canvas;this._renderer=null,t.removeEventListener("webglcontextlost",this.handleContextLost),t.removeEventListener("webglcontextrestored",this.handleContextRestored),this.gl.useProgram(null),this.extensions.loseContext?.loseContext()}forceContextLoss(){this.extensions.loseContext?.loseContext(),this._contextLossForced=!0}validateContext(t){let r=t.getContextAttributes();r&&!r.stencil&&warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");let n=this.supports,i=2===this.webGLVersion,a=this.extensions;n.uint32Indices=i||!!a.uint32ElementIndex,n.uniformBufferObject=i,n.vertexArrayObject=i||!!a.vertexArrayObject,n.srgbTextures=i||!!a.srgb,n.nonPowOf2wrapping=i,n.nonPowOf2mipmaps=i,n.msaa=i,n.uint32Indices||warn("Provided WebGL context does not support 32 index buffer, large scenes may not render correctly")}}).extension={type:[ExtensionType.WebGLSystem],name:"context"},_GlContextSystem.defaultOptions={context:null,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:void 0,preferWebGLVersion:2},GlContextSystem=_GlContextSystem}}),init_const10=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/const.mjs"(){let t,r,n;init_globals(),(t=GL_FORMATS||{})[t.RGBA=6408]="RGBA",t[t.RGB=6407]="RGB",t[t.RG=33319]="RG",t[t.RED=6403]="RED",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.ALPHA=6406]="ALPHA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",GL_FORMATS=t,(r=GL_TARGETS||{})[r.TEXTURE_2D=3553]="TEXTURE_2D",r[r.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",r[r.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",r[r.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",r[r.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",r[r.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",r[r.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",r[r.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",r[r.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",GL_TARGETS=r,(n=GL_TYPES||{})[n.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",n[n.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",n[n.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",n[n.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",n[n.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",n[n.UNSIGNED_INT=5125]="UNSIGNED_INT",n[n.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",n[n.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",n[n.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",n[n.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",n[n.BYTE=5120]="BYTE",n[n.SHORT=5122]="SHORT",n[n.INT=5124]="INT",n[n.FLOAT=5126]="FLOAT",n[n.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",n[n.HALF_FLOAT=36193]="HALF_FLOAT",GL_TYPES=n}});function getGlTypeFromFormat(t){return infoMap[t]??infoMap.float32}var topologyToGlMap,GlGeometrySystem,bigTriangleGeometry,_GlBackBufferSystem,GlBackBufferSystem,GlColorMaskSystem,GlEncoderSystem,GlStencilSystem,GlRenderTarget,GlRenderTargetAdaptor,GlRenderTargetSystem,init_getGlTypeFromFormat=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/geometry/utils/getGlTypeFromFormat.mjs"(){init_globals(),init_const10(),infoMap={uint8x2:GL_TYPES.UNSIGNED_BYTE,uint8x4:GL_TYPES.UNSIGNED_BYTE,sint8x2:GL_TYPES.BYTE,sint8x4:GL_TYPES.BYTE,unorm8x2:GL_TYPES.UNSIGNED_BYTE,unorm8x4:GL_TYPES.UNSIGNED_BYTE,snorm8x2:GL_TYPES.BYTE,snorm8x4:GL_TYPES.BYTE,uint16x2:GL_TYPES.UNSIGNED_SHORT,uint16x4:GL_TYPES.UNSIGNED_SHORT,sint16x2:GL_TYPES.SHORT,sint16x4:GL_TYPES.SHORT,unorm16x2:GL_TYPES.UNSIGNED_SHORT,unorm16x4:GL_TYPES.UNSIGNED_SHORT,snorm16x2:GL_TYPES.SHORT,snorm16x4:GL_TYPES.SHORT,float16x2:GL_TYPES.HALF_FLOAT,float16x4:GL_TYPES.HALF_FLOAT,float32:GL_TYPES.FLOAT,float32x2:GL_TYPES.FLOAT,float32x3:GL_TYPES.FLOAT,float32x4:GL_TYPES.FLOAT,uint32:GL_TYPES.UNSIGNED_INT,uint32x2:GL_TYPES.UNSIGNED_INT,uint32x3:GL_TYPES.UNSIGNED_INT,uint32x4:GL_TYPES.UNSIGNED_INT,sint32:GL_TYPES.INT,sint32x2:GL_TYPES.INT,sint32x3:GL_TYPES.INT,sint32x4:GL_TYPES.INT}}}),init_GlGeometrySystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/geometry/GlGeometrySystem.mjs"(){init_globals(),init_Extensions(),init_getAttributeInfoFromFormat(),init_ensureAttributes(),init_getGlTypeFromFormat(),topologyToGlMap={"point-list":0,"line-list":1,"line-strip":3,"triangle-list":4,"triangle-strip":5},(GlGeometrySystem=class{constructor(t){this._geometryVaoHash=Object.create(null),this._renderer=t,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0}contextChange(){let t=this.gl=this._renderer.gl;if(!this._renderer.context.supports.vertexArrayObject)throw Error("[PixiJS] Vertex Array Objects are not supported on this device");let r=this._renderer.context.extensions.vertexArrayObject;r&&(t.createVertexArray=()=>r.createVertexArrayOES(),t.bindVertexArray=t=>r.bindVertexArrayOES(t),t.deleteVertexArray=t=>r.deleteVertexArrayOES(t));let n=this._renderer.context.extensions.vertexAttribDivisorANGLE;n&&(t.drawArraysInstanced=(t,r,i,a)=>{n.drawArraysInstancedANGLE(t,r,i,a)},t.drawElementsInstanced=(t,r,i,a,o)=>{n.drawElementsInstancedANGLE(t,r,i,a,o)},t.vertexAttribDivisor=(t,r)=>n.vertexAttribDivisorANGLE(t,r)),this._activeGeometry=null,this._activeVao=null,this._geometryVaoHash=Object.create(null)}bind(t,r){let n=this.gl;this._activeGeometry=t;let i=this.getVao(t,r);this._activeVao!==i&&(this._activeVao=i,n.bindVertexArray(i)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){let t=this._activeGeometry,r=this._renderer.buffer;for(let n=0;n<t.buffers.length;n++){let i=t.buffers[n];r.updateBuffer(i)}}checkCompatibility(t,r){let n=t.attributes,i=r._attributeData;for(let t in i)if(!n[t])throw Error(`shader and geometry incompatible, geometry missing the "${t}" attribute`)}getSignature(t,r){let n=t.attributes,i=r._attributeData,a=["g",t.uid];for(let t in n)i[t]&&a.push(t,i[t].location);return a.join("-")}getVao(t,r){return this._geometryVaoHash[t.uid]?.[r._key]||this.initGeometryVao(t,r)}initGeometryVao(t,r,n=!0){let i=this._renderer.gl,a=this._renderer.buffer;this._renderer.shader._getProgramData(r),this.checkCompatibility(t,r);let o=this.getSignature(t,r);this._geometryVaoHash[t.uid]||(this._geometryVaoHash[t.uid]=Object.create(null),t.on("destroy",this.onGeometryDestroy,this));let s=this._geometryVaoHash[t.uid],l=s[o];if(l)return s[r._key]=l,l;ensureAttributes(t,r._attributeData);let u=t.buffers;l=i.createVertexArray(),i.bindVertexArray(l);for(let t=0;t<u.length;t++){let r=u[t];a.bind(r)}return this.activateVao(t,r),s[r._key]=l,s[o]=l,i.bindVertexArray(null),l}onGeometryDestroy(t,r){let n=this._geometryVaoHash[t.uid],i=this.gl;if(n){if(r)for(let t in n)this._activeVao!==n[t]&&this.unbind(),i.deleteVertexArray(n[t]);this._geometryVaoHash[t.uid]=null}}destroyAll(t=!1){let r=this.gl;for(let n in this._geometryVaoHash){if(t)for(let t in this._geometryVaoHash[n]){let i=this._geometryVaoHash[n];this._activeVao!==i&&this.unbind(),r.deleteVertexArray(i[t])}this._geometryVaoHash[n]=null}}activateVao(t,r){let n=this._renderer.gl,i=this._renderer.buffer,a=t.attributes;t.indexBuffer&&i.bind(t.indexBuffer);let o=null;for(let t in a){let s=a[t],l=s.buffer,u=i.getGlBuffer(l),d=r._attributeData[t];if(d){o!==u&&(i.bind(l),o=u);let t=s.location;n.enableVertexAttribArray(t);let r=getAttributeInfoFromFormat(s.format),a=getGlTypeFromFormat(s.format);if("int"===d.format?.substring(1,4)?n.vertexAttribIPointer(t,r.size,a,s.stride,s.offset):n.vertexAttribPointer(t,r.size,a,r.normalised,s.stride,s.offset),s.instance){if(!this.hasInstance)throw Error("geometry error, GPU Instancing is not supported on this device");n.vertexAttribDivisor(t,1)}}}}draw(t,r,n,i){let{gl:a}=this._renderer,o=this._activeGeometry,s=topologyToGlMap[o.topology||t];if(i||(i=o.instanceCount),o.indexBuffer){let t=o.indexBuffer.data.BYTES_PER_ELEMENT,l=2===t?a.UNSIGNED_SHORT:a.UNSIGNED_INT;i>1?a.drawElementsInstanced(s,r||o.indexBuffer.data.length,l,(n||0)*t,i):a.drawElements(s,r||o.indexBuffer.data.length,l,(n||0)*t)}else i>1?a.drawArraysInstanced(s,n||0,r||o.getSize(),i):a.drawArrays(s,n||0,r||o.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this._renderer=null,this.gl=null,this._activeVao=null,this._activeGeometry=null}}).extension={type:[ExtensionType.WebGLSystem],name:"geometry"}}}),init_GlBackBufferSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlBackBufferSystem.mjs"(){init_globals(),init_Extensions(),init_warn2(),init_Geometry(),init_Shader(),init_State(),init_TextureSource(),init_Texture(),init_GlProgram(),bigTriangleGeometry=new Geometry({attributes:{aPosition:[-1,-1,3,-1,-1,3]}}),(_GlBackBufferSystem=class t{constructor(t){this.useBackBuffer=!1,this._useBackBufferThisRender=!1,this._renderer=t}init(r={}){let{useBackBuffer:n,antialias:i}={...t.defaultOptions,...r};this.useBackBuffer=n,this._antialias=i,this._renderer.context.supports.msaa||(warn("antialiasing, is not supported on when using the back buffer"),this._antialias=!1),this._state=State.for2d();let a=new GlProgram({vertex:"\n attribute vec2 aPosition;\n out vec2 vUv;\n\n void main() {\n gl_Position = vec4(aPosition, 0.0, 1.0);\n\n vUv = (aPosition + 1.0) / 2.0;\n\n // flip dem UVs\n vUv.y = 1.0 - vUv.y;\n }",fragment:"\n in vec2 vUv;\n out vec4 finalColor;\n\n uniform sampler2D uTexture;\n\n void main() {\n finalColor = texture(uTexture, vUv);\n }",name:"big-triangle"});this._bigTriangleShader=new Shader({glProgram:a,resources:{uTexture:Texture.WHITE.source}})}renderStart(t){let r=this._renderer.renderTarget.getRenderTarget(t.target);if(this._useBackBufferThisRender=this.useBackBuffer&&!!r.isRoot,this._useBackBufferThisRender){let r=this._renderer.renderTarget.getRenderTarget(t.target);this._targetTexture=r.colorTexture,t.target=this._getBackBufferTexture(r.colorTexture)}}renderEnd(){this._presentBackBuffer()}_presentBackBuffer(){let t=this._renderer;t.renderTarget.finishRenderPass(),this._useBackBufferThisRender&&(t.renderTarget.bind(this._targetTexture,!1),this._bigTriangleShader.resources.uTexture=this._backBufferTexture.source,t.encoder.draw({geometry:bigTriangleGeometry,shader:this._bigTriangleShader,state:this._state}))}_getBackBufferTexture(t){return this._backBufferTexture=this._backBufferTexture||new Texture({source:new TextureSource({width:t.width,height:t.height,resolution:t._resolution,antialias:this._antialias})}),this._backBufferTexture.source.resize(t.width,t.height,t._resolution),this._backBufferTexture}destroy(){this._backBufferTexture&&(this._backBufferTexture.destroy(),this._backBufferTexture=null)}}).extension={type:[ExtensionType.WebGLSystem],name:"backBuffer",priority:1},_GlBackBufferSystem.defaultOptions={useBackBuffer:!1},GlBackBufferSystem=_GlBackBufferSystem}}),init_GlColorMaskSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlColorMaskSystem.mjs"(){init_globals(),init_Extensions(),(GlColorMaskSystem=class{constructor(t){this._colorMaskCache=15,this._renderer=t}setMask(t){this._colorMaskCache!==t&&(this._colorMaskCache=t,this._renderer.gl.colorMask(!!(8&t),!!(4&t),!!(2&t),!!(1&t)))}}).extension={type:[ExtensionType.WebGLSystem],name:"colorMask"}}}),init_GlEncoderSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlEncoderSystem.mjs"(){init_globals(),init_Extensions(),(GlEncoderSystem=class{constructor(t){this.commandFinished=Promise.resolve(),this._renderer=t}setGeometry(t,r){this._renderer.geometry.bind(t,r.glProgram)}finishRenderPass(){}draw(t){let r=this._renderer,{geometry:n,shader:i,state:a,skipSync:o,topology:s,size:l,start:u,instanceCount:d}=t;r.shader.bind(i,o),r.geometry.bind(n,r.shader._activeProgram),a&&r.state.set(a),r.geometry.draw(s,l,u,d??n.instanceCount)}destroy(){this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem],name:"encoder"}}}),init_GlStencilSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlStencilSystem.mjs"(){init_globals(),init_Extensions(),init_GpuStencilModesToPixi(),init_const6(),(GlStencilSystem=class{constructor(t){this._stencilCache={enabled:!1,stencilReference:0,stencilMode:STENCIL_MODES.NONE},this._renderTargetStencilState=Object.create(null),t.renderTarget.onRenderTargetChange.add(this)}contextChange(t){this._gl=t,this._comparisonFuncMapping={always:t.ALWAYS,never:t.NEVER,equal:t.EQUAL,"not-equal":t.NOTEQUAL,less:t.LESS,"less-equal":t.LEQUAL,greater:t.GREATER,"greater-equal":t.GEQUAL},this._stencilOpsMapping={keep:t.KEEP,zero:t.ZERO,replace:t.REPLACE,invert:t.INVERT,"increment-clamp":t.INCR,"decrement-clamp":t.DECR,"increment-wrap":t.INCR_WRAP,"decrement-wrap":t.DECR_WRAP},this._stencilCache.enabled=!1,this._stencilCache.stencilMode=STENCIL_MODES.NONE,this._stencilCache.stencilReference=0}onRenderTargetChange(t){if(this._activeRenderTarget===t)return;this._activeRenderTarget=t;let r=this._renderTargetStencilState[t.uid];r||(r=this._renderTargetStencilState[t.uid]={stencilMode:STENCIL_MODES.DISABLED,stencilReference:0}),this.setStencilMode(r.stencilMode,r.stencilReference)}setStencilMode(t,r){let n=this._renderTargetStencilState[this._activeRenderTarget.uid],i=this._gl,a=GpuStencilModesToPixi[t],o=this._stencilCache;n.stencilMode=t,n.stencilReference=r,t!==STENCIL_MODES.DISABLED?(this._stencilCache.enabled||(this._stencilCache.enabled=!0,i.enable(i.STENCIL_TEST)),t===o.stencilMode&&o.stencilReference===r||(o.stencilMode=t,o.stencilReference=r,i.stencilFunc(this._comparisonFuncMapping[a.stencilBack.compare],r,255),i.stencilOp(i.KEEP,i.KEEP,this._stencilOpsMapping[a.stencilBack.passOp]))):this._stencilCache.enabled&&(this._stencilCache.enabled=!1,i.disable(i.STENCIL_TEST))}}).extension={type:[ExtensionType.WebGLSystem],name:"stencil"}}}),init_GlRenderTarget=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/GlRenderTarget.mjs"(){init_globals(),GlRenderTarget=class{constructor(){this.width=-1,this.height=-1,this.msaa=!1,this.msaaRenderBuffer=[]}}}}),init_GlRenderTargetAdaptor=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetAdaptor.mjs"(){init_globals(),init_Rectangle(),init_warn2(),init_const3(),init_GlRenderTarget(),GlRenderTargetAdaptor=class{constructor(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new Rectangle}init(t,r){this._renderer=t,this._renderTargetSystem=r,t.runners.contextChange.add(this)}contextChange(){this._clearColorCache=[0,0,0,0],this._viewPortCache=new Rectangle}copyToTexture(t,r,n,i,a){let o=this._renderTargetSystem,s=this._renderer,l=o.getGpuRenderTarget(t),u=s.gl;return this.finishRenderPass(t),u.bindFramebuffer(u.FRAMEBUFFER,l.resolveTargetFramebuffer),s.texture.bind(r,0),u.copyTexSubImage2D(u.TEXTURE_2D,0,a.x,a.y,n.x,n.y,i.width,i.height),r}startRenderPass(t,r=!0,n,i){let a=this._renderTargetSystem,o=t.colorTexture,s=a.getGpuRenderTarget(t),l=i.y;t.isRoot&&(l=o.pixelHeight-i.height),t.colorTextures.forEach(t=>{this._renderer.texture.unbind(t)});let u=this._renderer.gl;u.bindFramebuffer(u.FRAMEBUFFER,s.framebuffer);let d=this._viewPortCache;d.x===i.x&&d.y===l&&d.width===i.width&&d.height===i.height||(d.x=i.x,d.y=l,d.width=i.width,d.height=i.height,u.viewport(i.x,l,i.width,i.height)),!s.depthStencilRenderBuffer&&(t.stencil||t.depth)&&this._initStencil(s),this.clear(t,r,n)}finishRenderPass(t){let r=this._renderTargetSystem.getGpuRenderTarget(t);if(!r.msaa)return;let n=this._renderer.gl;n.bindFramebuffer(n.FRAMEBUFFER,r.resolveTargetFramebuffer),n.bindFramebuffer(n.READ_FRAMEBUFFER,r.framebuffer),n.blitFramebuffer(0,0,r.width,r.height,0,0,r.width,r.height,n.COLOR_BUFFER_BIT,n.NEAREST),n.bindFramebuffer(n.FRAMEBUFFER,r.framebuffer)}initGpuRenderTarget(t){let r=this._renderer,n=r.gl,i=new GlRenderTarget;return t.colorTexture.resource===r.gl.canvas?i.framebuffer=null:(this._initColor(t,i),n.bindFramebuffer(n.FRAMEBUFFER,null)),i}destroyGpuRenderTarget(t){let r=this._renderer.gl;t.framebuffer&&(r.deleteFramebuffer(t.framebuffer),t.framebuffer=null),t.resolveTargetFramebuffer&&(r.deleteFramebuffer(t.resolveTargetFramebuffer),t.resolveTargetFramebuffer=null),t.depthStencilRenderBuffer&&(r.deleteRenderbuffer(t.depthStencilRenderBuffer),t.depthStencilRenderBuffer=null),t.msaaRenderBuffer.forEach(t=>{r.deleteRenderbuffer(t)}),t.msaaRenderBuffer=null}clear(t,r,n){if(!r)return;let i=this._renderTargetSystem;"boolean"==typeof r&&(r=r?CLEAR.ALL:CLEAR.NONE);let a=this._renderer.gl;if(r&CLEAR.COLOR){n??(n=i.defaultClearColor);let t=this._clearColorCache,r=n;t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[3]===r[3]||(t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=r[3],a.clearColor(r[0],r[1],r[2],r[3]))}a.clear(r)}resizeGpuRenderTarget(t){if(t.isRoot)return;let r=this._renderTargetSystem.getGpuRenderTarget(t);this._resizeColor(t,r),t.stencil&&this._resizeStencil(r)}_initColor(t,r){let n=this._renderer,i=n.gl,a=i.createFramebuffer();if(r.resolveTargetFramebuffer=a,i.bindFramebuffer(i.FRAMEBUFFER,a),r.width=t.colorTexture.source.pixelWidth,r.height=t.colorTexture.source.pixelHeight,t.colorTextures.forEach((t,a)=>{let o=t.source;o.antialias&&(n.context.supports.msaa?r.msaa=!0:warn("[RenderTexture] Antialiasing on textures is not supported in WebGL1")),n.texture.bindSource(o,0);let s=n.texture.getGlSource(o).texture;i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+a,3553,s,0)}),r.msaa){let n=i.createFramebuffer();r.framebuffer=n,i.bindFramebuffer(i.FRAMEBUFFER,n),t.colorTextures.forEach((t,n)=>{let a=i.createRenderbuffer();r.msaaRenderBuffer[n]=a})}else r.framebuffer=a;this._resizeColor(t,r)}_resizeColor(t,r){let n=t.colorTexture.source;if(r.width=n.pixelWidth,r.height=n.pixelHeight,t.colorTextures.forEach((t,r)=>{0!==r&&t.source.resize(n.width,n.height,n._resolution)}),r.msaa){let n=this._renderer,i=n.gl,a=r.framebuffer;i.bindFramebuffer(i.FRAMEBUFFER,a),t.colorTextures.forEach((t,a)=>{let o=t.source;n.texture.bindSource(o,0);let s=n.texture.getGlSource(o).internalFormat,l=r.msaaRenderBuffer[a];i.bindRenderbuffer(i.RENDERBUFFER,l),i.renderbufferStorageMultisample(i.RENDERBUFFER,4,s,o.pixelWidth,o.pixelHeight),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+a,i.RENDERBUFFER,l)})}}_initStencil(t){if(null===t.framebuffer)return;let r=this._renderer.gl,n=r.createRenderbuffer();t.depthStencilRenderBuffer=n,r.bindRenderbuffer(r.RENDERBUFFER,n),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,n),this._resizeStencil(t)}_resizeStencil(t){let r=this._renderer.gl;r.bindRenderbuffer(r.RENDERBUFFER,t.depthStencilRenderBuffer),t.msaa?r.renderbufferStorageMultisample(r.RENDERBUFFER,4,r.DEPTH24_STENCIL8,t.width,t.height):r.renderbufferStorage(r.RENDERBUFFER,2===this._renderer.context.webGLVersion?r.DEPTH24_STENCIL8:r.DEPTH_STENCIL,t.width,t.height)}}}}),init_GlRenderTargetSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetSystem.mjs"(){init_globals(),init_Extensions(),init_RenderTargetSystem(),init_GlRenderTargetAdaptor(),(GlRenderTargetSystem=class extends RenderTargetSystem{constructor(t){super(t),this.adaptor=new GlRenderTargetAdaptor,this.adaptor.init(t,this)}}).extension={type:[ExtensionType.WebGLSystem],name:"renderTarget"}}});function mapWebGLBlendModesToPixi(t){let r={};return r.normal=[t.ONE,t.ONE_MINUS_SRC_ALPHA],r.add=[t.ONE,t.ONE],r.multiply=[t.DST_COLOR,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],r.screen=[t.ONE,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],r.none=[0,0],r["normal-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],r["add-npm"]=[t.SRC_ALPHA,t.ONE,t.ONE,t.ONE],r["screen-npm"]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],r.erase=[t.ZERO,t.ONE_MINUS_SRC_ALPHA],r}var BLEND2,OFFSET2,CULLING2,DEPTH_TEST2,WINDING2,DEPTH_MASK2,_GlStateSystem,GlStateSystem,GlTexture,glUploadBufferImageResource,compressedFormatMap,glUploadCompressedTextureResource,glUploadImageResource,glUploadVideoResource,scaleModeToGlFilter,mipmapScaleModeToGlFilter,wrapModeToGlAddress,compareModeToGlCompare,init_mapWebGLBlendModesToPixi=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/state/mapWebGLBlendModesToPixi.mjs"(){init_globals()}}),init_GlStateSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/state/GlStateSystem.mjs"(){init_globals(),init_Extensions(),init_State(),init_mapWebGLBlendModesToPixi(),BLEND2=0,OFFSET2=1,CULLING2=2,DEPTH_TEST2=3,WINDING2=4,DEPTH_MASK2=5,(_GlStateSystem=class t{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode="none",this._blendEq=!1,this.map=[],this.map[BLEND2]=this.setBlend,this.map[OFFSET2]=this.setOffset,this.map[CULLING2]=this.setCullFace,this.map[DEPTH_TEST2]=this.setDepthTest,this.map[WINDING2]=this.setFrontFace,this.map[DEPTH_MASK2]=this.setDepthMask,this.checks=[],this.defaultState=State.for2d()}contextChange(t){this.gl=t,this.blendModesMap=mapWebGLBlendModesToPixi(t),this.reset()}set(t){if(t=t||this.defaultState,this.stateId!==t.data){let r=this.stateId^t.data,n=0;for(;r;)1&r&&this.map[n].call(this,!!(t.data&1<<n)),r>>=1,n++;this.stateId=t.data}for(let r=0;r<this.checks.length;r++)this.checks[r](this,t)}forceState(t){t=t||this.defaultState;for(let r=0;r<this.map.length;r++)this.map[r].call(this,!!(t.data&1<<r));for(let r=0;r<this.checks.length;r++)this.checks[r](this,t);this.stateId=t.data}setBlend(r){this._updateCheck(t._checkBlendMode,r),this.gl[r?"enable":"disable"](this.gl.BLEND)}setOffset(r){this._updateCheck(t._checkPolygonOffset,r),this.gl[r?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(t){this.gl[t?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask(t){this.gl.depthMask(t)}setCullFace(t){this.gl[t?"enable":"disable"](this.gl.CULL_FACE)}setFrontFace(t){this.gl.frontFace(this.gl[t?"CW":"CCW"])}setBlendMode(t){if(this.blendModesMap[t]||(t="normal"),t===this.blendMode)return;this.blendMode=t;let r=this.blendModesMap[t],n=this.gl;2===r.length?n.blendFunc(r[0],r[1]):n.blendFuncSeparate(r[0],r[1],r[2],r[3]),6===r.length?(this._blendEq=!0,n.blendEquationSeparate(r[4],r[5])):this._blendEq&&(this._blendEq=!1,n.blendEquationSeparate(n.FUNC_ADD,n.FUNC_ADD))}setPolygonOffset(t,r){this.gl.polygonOffset(t,r)}reset(){this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode="",this.setBlendMode("normal")}_updateCheck(t,r){let n=this.checks.indexOf(t);r&&-1===n?this.checks.push(t):r||-1===n||this.checks.splice(n,1)}static _checkBlendMode(t,r){t.setBlendMode(r.blendMode)}static _checkPolygonOffset(t,r){t.setPolygonOffset(1,r.polygonOffset)}destroy(){this.gl=null,this.checks.length=0}}).extension={type:[ExtensionType.WebGLSystem],name:"state"},GlStateSystem=_GlStateSystem}}),init_GlTexture=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTexture.mjs"(){init_globals(),init_const10(),GlTexture=class{constructor(t){this.target=GL_TARGETS.TEXTURE_2D,this.texture=t,this.width=-1,this.height=-1,this.type=GL_TYPES.UNSIGNED_BYTE,this.internalFormat=GL_FORMATS.RGBA,this.format=GL_FORMATS.RGBA,this.samplerType=0}}}}),init_glUploadBufferImageResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadBufferImageResource.mjs"(){init_globals(),glUploadBufferImageResource={id:"image",upload(t,r,n){r.width===t.width||r.height===t.height?n.texSubImage2D(n.TEXTURE_2D,0,0,0,r.format,r.type,t.resource):n.texImage2D(r.target,0,r.internalFormat,t.width,t.height,0,r.format,r.type,t.resource),r.width=t.width,r.height=t.height}}}}),init_glUploadCompressedTextureResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadCompressedTextureResource.mjs"(){init_globals(),compressedFormatMap={"bc1-rgba-unorm":!0,"bc1-rgba-unorm-srgb":!0,"bc2-rgba-unorm":!0,"bc2-rgba-unorm-srgb":!0,"bc3-rgba-unorm":!0,"bc3-rgba-unorm-srgb":!0,"bc4-r-unorm":!0,"bc4-r-snorm":!0,"bc5-rg-unorm":!0,"bc5-rg-snorm":!0,"bc6h-rgb-ufloat":!0,"bc6h-rgb-float":!0,"bc7-rgba-unorm":!0,"bc7-rgba-unorm-srgb":!0,"etc2-rgb8unorm":!0,"etc2-rgb8unorm-srgb":!0,"etc2-rgb8a1unorm":!0,"etc2-rgb8a1unorm-srgb":!0,"etc2-rgba8unorm":!0,"etc2-rgba8unorm-srgb":!0,"eac-r11unorm":!0,"eac-r11snorm":!0,"eac-rg11unorm":!0,"eac-rg11snorm":!0,"astc-4x4-unorm":!0,"astc-4x4-unorm-srgb":!0,"astc-5x4-unorm":!0,"astc-5x4-unorm-srgb":!0,"astc-5x5-unorm":!0,"astc-5x5-unorm-srgb":!0,"astc-6x5-unorm":!0,"astc-6x5-unorm-srgb":!0,"astc-6x6-unorm":!0,"astc-6x6-unorm-srgb":!0,"astc-8x5-unorm":!0,"astc-8x5-unorm-srgb":!0,"astc-8x6-unorm":!0,"astc-8x6-unorm-srgb":!0,"astc-8x8-unorm":!0,"astc-8x8-unorm-srgb":!0,"astc-10x5-unorm":!0,"astc-10x5-unorm-srgb":!0,"astc-10x6-unorm":!0,"astc-10x6-unorm-srgb":!0,"astc-10x8-unorm":!0,"astc-10x8-unorm-srgb":!0,"astc-10x10-unorm":!0,"astc-10x10-unorm-srgb":!0,"astc-12x10-unorm":!0,"astc-12x10-unorm-srgb":!0,"astc-12x12-unorm":!0,"astc-12x12-unorm-srgb":!0},glUploadCompressedTextureResource={id:"compressed",upload(t,r,n){n.pixelStorei(n.UNPACK_ALIGNMENT,4);let i=t.pixelWidth,a=t.pixelHeight,o=!!compressedFormatMap[t.format];for(let s=0;s<t.resource.length;s++){let l=t.resource[s];o?n.compressedTexImage2D(n.TEXTURE_2D,s,r.internalFormat,i,a,0,l):n.texImage2D(n.TEXTURE_2D,s,r.internalFormat,i,a,0,r.format,r.type,l),i=Math.max(i>>1,1),a=Math.max(a>>1,1)}}}}}),init_glUploadImageResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadImageResource.mjs"(){init_globals(),glUploadImageResource={id:"image",upload(t,r,n,i){let a="premultiply-alpha-on-upload"===t.alphaMode;n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a);let o=r.width,s=r.height,l=t.pixelWidth,u=t.pixelHeight,d=t.resourceWidth,c=t.resourceHeight;d<l||c<u?(o===l&&s===u||n.texImage2D(r.target,0,r.internalFormat,l,u,0,r.format,r.type,null),2===i?n.texSubImage2D(n.TEXTURE_2D,0,0,0,d,c,r.format,r.type,t.resource):n.texSubImage2D(n.TEXTURE_2D,0,0,0,r.format,r.type,t.resource)):o===l||s===u?n.texSubImage2D(n.TEXTURE_2D,0,0,0,r.format,r.type,t.resource):2===i?n.texImage2D(r.target,0,r.internalFormat,l,u,0,r.format,r.type,t.resource):n.texImage2D(r.target,0,r.internalFormat,r.format,r.type,t.resource),r.width=l,r.height=u}}}}),init_glUploadVideoResource=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadVideoResource.mjs"(){init_globals(),init_glUploadImageResource(),glUploadVideoResource={id:"video",upload(t,r,n,i){t.isValid?glUploadImageResource.upload(t,r,n,i):n.texImage2D(r.target,0,r.internalFormat,1,1,0,r.format,r.type,null)}}}}),init_pixiToGlMaps=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/pixiToGlMaps.mjs"(){init_globals(),scaleModeToGlFilter={linear:9729,nearest:9728},mipmapScaleModeToGlFilter={linear:{linear:9987,nearest:9985},nearest:{linear:9986,nearest:9984}},wrapModeToGlAddress={"clamp-to-edge":33071,repeat:10497,"mirror-repeat":33648},compareModeToGlCompare={never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519}}});function applyStyleParams(t,r,n,i,a,o,s,l){let u=o;if(!l||"repeat"!==t.addressModeU||"repeat"!==t.addressModeV||"repeat"!==t.addressModeW){let n=wrapModeToGlAddress[s?"clamp-to-edge":t.addressModeU],i=wrapModeToGlAddress[s?"clamp-to-edge":t.addressModeV],o=wrapModeToGlAddress[s?"clamp-to-edge":t.addressModeW];r[a](u,r.TEXTURE_WRAP_S,n),r[a](u,r.TEXTURE_WRAP_T,i),r.TEXTURE_WRAP_R&&r[a](u,r.TEXTURE_WRAP_R,o)}if(l&&"linear"===t.magFilter||r[a](u,r.TEXTURE_MAG_FILTER,scaleModeToGlFilter[t.magFilter]),n){if(!l||"linear"!==t.mipmapFilter){let n=mipmapScaleModeToGlFilter[t.minFilter][t.mipmapFilter];r[a](u,r.TEXTURE_MIN_FILTER,n)}}else r[a](u,r.TEXTURE_MIN_FILTER,scaleModeToGlFilter[t.minFilter]);if(i&&t.maxAnisotropy>1){let n=Math.min(t.maxAnisotropy,r.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT));r[a](u,i.TEXTURE_MAX_ANISOTROPY_EXT,n)}t.compare&&r[a](u,r.TEXTURE_COMPARE_FUNC,compareModeToGlCompare[t.compare])}var init_applyStyleParams=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/applyStyleParams.mjs"(){init_globals(),init_pixiToGlMaps()}});function mapFormatToGlFormat(t){return{r8unorm:t.RED,r8snorm:t.RED,r8uint:t.RED,r8sint:t.RED,r16uint:t.RED,r16sint:t.RED,r16float:t.RED,rg8unorm:t.RG,rg8snorm:t.RG,rg8uint:t.RG,rg8sint:t.RG,r32uint:t.RED,r32sint:t.RED,r32float:t.RED,rg16uint:t.RG,rg16sint:t.RG,rg16float:t.RG,rgba8unorm:t.RGBA,"rgba8unorm-srgb":t.RGBA,rgba8snorm:t.RGBA,rgba8uint:t.RGBA,rgba8sint:t.RGBA,bgra8unorm:t.RGBA,"bgra8unorm-srgb":t.RGBA,rgb9e5ufloat:t.RGB,rgb10a2unorm:t.RGBA,rg11b10ufloat:t.RGB,rg32uint:t.RG,rg32sint:t.RG,rg32float:t.RG,rgba16uint:t.RGBA,rgba16sint:t.RGBA,rgba16float:t.RGBA,rgba32uint:t.RGBA,rgba32sint:t.RGBA,rgba32float:t.RGBA,stencil8:t.STENCIL_INDEX8,depth16unorm:t.DEPTH_COMPONENT,depth24plus:t.DEPTH_COMPONENT,"depth24plus-stencil8":t.DEPTH_STENCIL,depth32float:t.DEPTH_COMPONENT,"depth32float-stencil8":t.DEPTH_STENCIL}}var init_mapFormatToGlFormat=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlFormat.mjs"(){init_globals()}});function mapFormatToGlInternalFormat(t,r){let n={},i=t.RGBA;return t instanceof DOMAdapter.get().getWebGLRenderingContext()?r.srgb&&(n={"rgba8unorm-srgb":r.srgb.SRGB8_ALPHA8_EXT,"bgra8unorm-srgb":r.srgb.SRGB8_ALPHA8_EXT}):(n={"rgba8unorm-srgb":t.SRGB8_ALPHA8,"bgra8unorm-srgb":t.SRGB8_ALPHA8},i=t.RGBA8),{r8unorm:t.R8,r8snorm:t.R8_SNORM,r8uint:t.R8UI,r8sint:t.R8I,r16uint:t.R16UI,r16sint:t.R16I,r16float:t.R16F,rg8unorm:t.RG8,rg8snorm:t.RG8_SNORM,rg8uint:t.RG8UI,rg8sint:t.RG8I,r32uint:t.R32UI,r32sint:t.R32I,r32float:t.R32F,rg16uint:t.RG16UI,rg16sint:t.RG16I,rg16float:t.RG16F,rgba8unorm:t.RGBA,...n,rgba8snorm:t.RGBA8_SNORM,rgba8uint:t.RGBA8UI,rgba8sint:t.RGBA8I,bgra8unorm:i,rgb9e5ufloat:t.RGB9_E5,rgb10a2unorm:t.RGB10_A2,rg11b10ufloat:t.R11F_G11F_B10F,rg32uint:t.RG32UI,rg32sint:t.RG32I,rg32float:t.RG32F,rgba16uint:t.RGBA16UI,rgba16sint:t.RGBA16I,rgba16float:t.RGBA16F,rgba32uint:t.RGBA32UI,rgba32sint:t.RGBA32I,rgba32float:t.RGBA32F,stencil8:t.STENCIL_INDEX8,depth16unorm:t.DEPTH_COMPONENT16,depth24plus:t.DEPTH_COMPONENT24,"depth24plus-stencil8":t.DEPTH24_STENCIL8,depth32float:t.DEPTH_COMPONENT32F,"depth32float-stencil8":t.DEPTH32F_STENCIL8,...r.s3tc?{"bc1-rgba-unorm":r.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,"bc2-rgba-unorm":r.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,"bc3-rgba-unorm":r.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT}:{},...r.s3tc_sRGB?{"bc1-rgba-unorm-srgb":r.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,"bc2-rgba-unorm-srgb":r.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,"bc3-rgba-unorm-srgb":r.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}:{},...r.rgtc?{"bc4-r-unorm":r.rgtc.COMPRESSED_RED_RGTC1_EXT,"bc4-r-snorm":r.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,"bc5-rg-unorm":r.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,"bc5-rg-snorm":r.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}:{},...r.bptc?{"bc6h-rgb-float":r.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,"bc6h-rgb-ufloat":r.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,"bc7-rgba-unorm":r.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,"bc7-rgba-unorm-srgb":r.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT}:{},...r.etc?{"etc2-rgb8unorm":r.etc.COMPRESSED_RGB8_ETC2,"etc2-rgb8unorm-srgb":r.etc.COMPRESSED_SRGB8_ETC2,"etc2-rgb8a1unorm":r.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgb8a1unorm-srgb":r.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,"etc2-rgba8unorm":r.etc.COMPRESSED_RGBA8_ETC2_EAC,"etc2-rgba8unorm-srgb":r.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,"eac-r11unorm":r.etc.COMPRESSED_R11_EAC,"eac-rg11unorm":r.etc.COMPRESSED_SIGNED_RG11_EAC}:{},...r.astc?{"astc-4x4-unorm":r.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,"astc-4x4-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,"astc-5x4-unorm":r.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,"astc-5x4-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,"astc-5x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,"astc-5x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,"astc-6x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,"astc-6x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,"astc-6x6-unorm":r.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,"astc-6x6-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,"astc-8x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,"astc-8x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,"astc-8x6-unorm":r.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,"astc-8x6-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,"astc-8x8-unorm":r.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,"astc-8x8-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,"astc-10x5-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,"astc-10x5-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,"astc-10x6-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,"astc-10x6-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,"astc-10x8-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,"astc-10x8-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,"astc-10x10-unorm":r.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,"astc-10x10-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,"astc-12x10-unorm":r.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,"astc-12x10-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,"astc-12x12-unorm":r.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,"astc-12x12-unorm-srgb":r.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR}:{}}}var init_mapFormatToGlInternalFormat=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlInternalFormat.mjs"(){init_globals(),init_adapter()}});function mapFormatToGlType(t){return{r8unorm:t.UNSIGNED_BYTE,r8snorm:t.BYTE,r8uint:t.UNSIGNED_BYTE,r8sint:t.BYTE,r16uint:t.UNSIGNED_SHORT,r16sint:t.SHORT,r16float:t.HALF_FLOAT,rg8unorm:t.UNSIGNED_BYTE,rg8snorm:t.BYTE,rg8uint:t.UNSIGNED_BYTE,rg8sint:t.BYTE,r32uint:t.UNSIGNED_INT,r32sint:t.INT,r32float:t.FLOAT,rg16uint:t.UNSIGNED_SHORT,rg16sint:t.SHORT,rg16float:t.HALF_FLOAT,rgba8unorm:t.UNSIGNED_BYTE,"rgba8unorm-srgb":t.UNSIGNED_BYTE,rgba8snorm:t.BYTE,rgba8uint:t.UNSIGNED_BYTE,rgba8sint:t.BYTE,bgra8unorm:t.UNSIGNED_BYTE,"bgra8unorm-srgb":t.UNSIGNED_BYTE,rgb9e5ufloat:t.UNSIGNED_INT_5_9_9_9_REV,rgb10a2unorm:t.UNSIGNED_INT_2_10_10_10_REV,rg11b10ufloat:t.UNSIGNED_INT_10F_11F_11F_REV,rg32uint:t.UNSIGNED_INT,rg32sint:t.INT,rg32float:t.FLOAT,rgba16uint:t.UNSIGNED_SHORT,rgba16sint:t.SHORT,rgba16float:t.HALF_FLOAT,rgba32uint:t.UNSIGNED_INT,rgba32sint:t.INT,rgba32float:t.FLOAT,stencil8:t.UNSIGNED_BYTE,depth16unorm:t.UNSIGNED_SHORT,depth24plus:t.UNSIGNED_INT,"depth24plus-stencil8":t.UNSIGNED_INT_24_8,depth32float:t.FLOAT,"depth32float-stencil8":t.FLOAT_32_UNSIGNED_INT_24_8_REV}}var BYTES_PER_PIXEL,GlTextureSystem,DefaultWebGLSystems,DefaultWebGLPipes,DefaultWebGLAdapters,systems2,renderPipes2,renderPipeAdaptors2,WebGLRenderer,init_mapFormatToGlType=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlType.mjs"(){init_globals()}}),init_GlTextureSystem=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTextureSystem.mjs"(){init_globals(),init_adapter(),init_Extensions(),init_Texture(),init_GlTexture(),init_glUploadBufferImageResource(),init_glUploadCompressedTextureResource(),init_glUploadImageResource(),init_glUploadVideoResource(),init_applyStyleParams(),init_mapFormatToGlFormat(),init_mapFormatToGlInternalFormat(),init_mapFormatToGlType(),BYTES_PER_PIXEL=4,(GlTextureSystem=class{constructor(t){this.managedTextures=[],this._glTextures=Object.create(null),this._glSamplers=Object.create(null),this._boundTextures=[],this._activeTextureLocation=-1,this._boundSamplers=Object.create(null),this._uploads={image:glUploadImageResource,buffer:glUploadBufferImageResource,video:glUploadVideoResource,compressed:glUploadCompressedTextureResource},this._useSeparateSamplers=!1,this._renderer=t}contextChange(t){this._gl=t,this._mapFormatToInternalFormat||(this._mapFormatToInternalFormat=mapFormatToGlInternalFormat(t,this._renderer.context.extensions),this._mapFormatToType=mapFormatToGlType(t),this._mapFormatToFormat=mapFormatToGlFormat(t)),this._glTextures=Object.create(null),this._glSamplers=Object.create(null),this._boundSamplers=Object.create(null);for(let t=0;t<16;t++)this.bind(Texture.EMPTY,t)}initSource(t){this.bind(t)}bind(t,r=0){let n=t.source;t?(this.bindSource(n,r),this._useSeparateSamplers&&this._bindSampler(n.style,r)):(this.bindSource(null,r),this._useSeparateSamplers&&this._bindSampler(null,r))}bindSource(t,r=0){let n=this._gl;if(t._touched=this._renderer.textureGC.count,this._boundTextures[r]!==t){this._boundTextures[r]=t,this._activateLocation(r),t=t||Texture.EMPTY.source;let i=this.getGlSource(t);n.bindTexture(i.target,i.texture)}}_bindSampler(t,r=0){let n=this._gl;if(!t)return this._boundSamplers[r]=null,void n.bindSampler(r,null);let i=this._getGlSampler(t);this._boundSamplers[r]!==i&&(this._boundSamplers[r]=i,n.bindSampler(r,i))}unbind(t){let r=t.source,n=this._boundTextures,i=this._gl;for(let t=0;t<n.length;t++)if(n[t]===r){this._activateLocation(t);let a=this.getGlSource(r);i.bindTexture(a.target,null),n[t]=null}}_activateLocation(t){this._activeTextureLocation!==t&&(this._activeTextureLocation=t,this._gl.activeTexture(this._gl.TEXTURE0+t))}_initSource(t){let r=this._gl,n=new GlTexture(r.createTexture());if(n.type=this._mapFormatToType[t.format],n.internalFormat=this._mapFormatToInternalFormat[t.format],n.format=this._mapFormatToFormat[t.format],t.autoGenerateMipmaps&&(this._renderer.context.supports.nonPowOf2mipmaps||t.isPowerOfTwo)){let r=Math.max(t.width,t.height);t.mipLevelCount=Math.floor(Math.log2(r))+1}return this._glTextures[t.uid]=n,this.managedTextures.includes(t)||(t.on("update",this.onSourceUpdate,this),t.on("resize",this.onSourceUpdate,this),t.on("styleChange",this.onStyleChange,this),t.on("destroy",this.onSourceDestroy,this),t.on("unload",this.onSourceUnload,this),t.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(t)),this.onSourceUpdate(t),this.updateStyle(t,!1),n}onStyleChange(t){this.updateStyle(t,!1)}updateStyle(t,r){let n=this._gl,i=this.getGlSource(t);n.bindTexture(n.TEXTURE_2D,i.texture),this._boundTextures[this._activeTextureLocation]=t,applyStyleParams(t.style,n,t.mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"texParameteri",n.TEXTURE_2D,!this._renderer.context.supports.nonPowOf2wrapping&&!t.isPowerOfTwo,r)}onSourceUnload(t){let r=this._glTextures[t.uid];r&&(this.unbind(t),this._glTextures[t.uid]=null,this._gl.deleteTexture(r.texture))}onSourceUpdate(t){let r=this._gl,n=this.getGlSource(t);r.bindTexture(r.TEXTURE_2D,n.texture),this._boundTextures[this._activeTextureLocation]=t,this._uploads[t.uploadMethodId]?this._uploads[t.uploadMethodId].upload(t,n,r,this._renderer.context.webGLVersion):r.texImage2D(r.TEXTURE_2D,0,r.RGBA,t.pixelWidth,t.pixelHeight,0,r.RGBA,r.UNSIGNED_BYTE,null),t.autoGenerateMipmaps&&t.mipLevelCount>1&&this.onUpdateMipmaps(t,!1)}onUpdateMipmaps(t,r=!0){r&&this.bindSource(t,0);let n=this.getGlSource(t);this._gl.generateMipmap(n.target)}onSourceDestroy(t){t.off("destroy",this.onSourceDestroy,this),t.off("update",this.onSourceUpdate,this),t.off("resize",this.onSourceUpdate,this),t.off("unload",this.onSourceUnload,this),t.off("styleChange",this.onStyleChange,this),t.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(t),1),this.onSourceUnload(t)}_initSampler(t){let r=this._gl,n=this._gl.createSampler();return this._glSamplers[t._resourceId]=n,applyStyleParams(t,r,this._boundTextures[this._activeTextureLocation].mipLevelCount>1,this._renderer.context.extensions.anisotropicFiltering,"samplerParameteri",n,!1,!0),this._glSamplers[t._resourceId]}_getGlSampler(t){return this._glSamplers[t._resourceId]||this._initSampler(t)}getGlSource(t){return this._glTextures[t.uid]||this._initSource(t)}generateCanvas(t){let{pixels:r,width:n,height:i}=this.getPixels(t),a=DOMAdapter.get().createCanvas();a.width=n,a.height=i;let o=a.getContext("2d");if(o){let t=o.createImageData(n,i);t.data.set(r),o.putImageData(t,0,0)}return a}getPixels(t){let r=t.source.resolution,n=t.frame,i=Math.max(Math.round(n.width*r),1),a=Math.max(Math.round(n.height*r),1),o=new Uint8Array(BYTES_PER_PIXEL*i*a),s=this._renderer,l=s.renderTarget.getRenderTarget(t),u=s.renderTarget.getGpuRenderTarget(l),d=s.gl;return d.bindFramebuffer(d.FRAMEBUFFER,u.resolveTargetFramebuffer),d.readPixels(Math.round(n.x*r),Math.round(n.y*r),i,a,d.RGBA,d.UNSIGNED_BYTE,o),{pixels:new Uint8ClampedArray(o.buffer),width:i,height:a}}destroy(){this.managedTextures.slice().forEach(t=>this.onSourceDestroy(t)),this.managedTextures=null,this._renderer=null}}).extension={type:[ExtensionType.WebGLSystem],name:"texture"}}}),WebGLRenderer_exports={};__export(WebGLRenderer_exports,{WebGLRenderer:()=>WebGLRenderer});var init_WebGLRenderer=__esm({"../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/WebGLRenderer.mjs"(){init_globals(),init_Extensions(),init_GlGraphicsAdaptor(),init_GlMeshAdaptor(),init_GlBatchAdaptor(),init_AbstractRenderer(),init_SharedSystems(),init_types2(),init_GlBufferSystem(),init_GlContextSystem(),init_GlGeometrySystem(),init_GlBackBufferSystem(),init_GlColorMaskSystem(),init_GlEncoderSystem(),init_GlStencilSystem(),init_GlUboSystem(),init_GlRenderTargetSystem(),init_GlShaderSystem(),init_GlUniformGroupSystem(),init_GlStateSystem(),init_GlTextureSystem(),DefaultWebGLSystems=[...SharedSystems,GlUboSystem,GlBackBufferSystem,GlContextSystem,GlBufferSystem,GlTextureSystem,GlRenderTargetSystem,GlGeometrySystem,GlUniformGroupSystem,GlShaderSystem,GlEncoderSystem,GlStateSystem,GlStencilSystem,GlColorMaskSystem],DefaultWebGLPipes=[...SharedRenderPipes],DefaultWebGLAdapters=[GlBatchAdaptor,GlMeshAdaptor,GlGraphicsAdaptor],systems2=[],renderPipes2=[],renderPipeAdaptors2=[],extensions.handleByNamedList(ExtensionType.WebGLSystem,systems2),extensions.handleByNamedList(ExtensionType.WebGLPipes,renderPipes2),extensions.handleByNamedList(ExtensionType.WebGLPipesAdaptor,renderPipeAdaptors2),extensions.add(...DefaultWebGLSystems,...DefaultWebGLPipes,...DefaultWebGLAdapters),WebGLRenderer=class extends AbstractRenderer{constructor(){super({name:"webgl",type:RendererType.WEBGL,systems:systems2,renderPipes:renderPipes2,renderPipeAdaptors:renderPipeAdaptors2})}}}}),src_exports2={};__export(src_exports2,{Blackboard:()=>Blackboard,ContextPreview:()=>ContextPreview,Describer:()=>Describer,EnvConfig:()=>EnvConfig,GithubStar:()=>GithubStar,Logo:()=>Logo,Player:()=>Player,PlaygroundResultView:()=>PlaygroundResultView,PromptInput:()=>PromptInput,ServiceModeControl:()=>ServiceModeControl,ShinyText:()=>shiny_text_default,actionNameForType:()=>actionNameForType,allScriptsFromDump:()=>allScriptsFromDump,blankResult:()=>blankResult,cancelTask:()=>cancelTask,checkServerStatus:()=>checkServerStatus,colorForName:()=>colorForName,filterBase64Value:()=>filterBase64Value,formatErrorMessage:()=>formatErrorMessage,generateAnimationScripts:()=>generateAnimationScripts,getPlaceholderForType:()=>getPlaceholderForType,getTaskProgress:()=>getTaskProgress,globalThemeConfig:()=>globalThemeConfig,highlightColorForType:()=>highlightColorForType,iconForStatus:()=>iconForStatus,overrideServerConfig:()=>overrideServerConfig,requestPlaygroundServer:()=>requestPlaygroundServer,staticAgentFromContext:()=>staticAgentFromContext,timeCostStrElement:()=>timeCostStrElement,timeStr:()=>timeStr,useEnvConfig:()=>useEnvConfig,useServerValid:()=>useServerValid,useStaticPageAgent:()=>useStaticPageAgent}),module.exports=__toCommonJS(src_exports2),init_globals(),init_globals();var import_react=__webpack_require__(4194);init_globals();var import_constants15=__toESM(require_constants()),import_playground=__toESM(require_playground()),serverBase=`http://localhost:${import_constants15.PLAYGROUND_SERVER_PORT}`,checkServerStatus=async()=>{try{return 200===(await fetch(`${serverBase}/status`)).status}catch(t){return!1}},requestPlaygroundServer=async(t,r,n,{requestId:i,deepThink:a}={})=>{let o={context:t,type:r,prompt:n};return i&&(o.requestId=i),a&&(o.deepThink=a),(await fetch(`${serverBase}/execute`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).json()},overrideServerConfig=async t=>fetch(`${serverBase}/config`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({aiConfig:t})}),cancelTask=async t=>{try{return(await fetch(`${serverBase}/cancel/${t}`)).json()}catch(t){return import_console_browserify.default.error("Failed to cancel task:",t),{error:"Failed to cancel task"}}},getTaskProgress=async t=>{try{let r=await fetch(`${serverBase}/task-progress/${t}`);return await r.json()}catch(t){return import_console_browserify.default.error("Failed to poll task progress:",t),{tip:null}}},actionNameForType=t=>"aiAction"===t?"Action":"aiQuery"===t?"Query":"aiAssert"===t?"Assert":"aiTap"===t?"Tap":t,staticAgentFromContext=t=>{let r=new import_playground.StaticPage(t);return new import_playground.StaticPageAgent(r)},formatErrorMessage=t=>{let r=t?.message||"";return r.includes("of different extension")?"Conflicting extension detected. Please disable the suspicious plugins and refresh the page. Guide: https://midscenejs.com/quick-experience.html#faq":r?.includes(import_playground.ERROR_CODE_NOT_IMPLEMENTED_AS_DESIGNED)?"Unknown error":r},getPlaceholderForType=t=>"aiQuery"===t?"What do you want to query?":"aiAssert"===t?"What do you want to assert?":"What do you want to do?",blankResult={result:null,dump:null,reportHTML:null,error:null},useStaticPageAgent=t=>(0,import_react.useMemo)(()=>t?staticAgentFromContext(t):null,[t]);init_globals(),init_globals();var import_dayjs=__toESM(require_dayjs_min());function timeStr(t){return t?(0,import_dayjs.default)(t).format("YYYY-MM-DD HH:mm:ss"):"-"}function filterBase64Value(t){return t.replace(/data:image\/[^"]+"/g,'data:image..."')}var mousePointer="data:image/png;base64,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",mouseLoading="data:image/png;base64,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",import_ui_utils=__toESM(require_ui_utils()),import_extractor=__toESM(require_extractor()),stillDuration=900,actionSpinningPointerDuration=300,stillAfterInsightDuration=300,locateDuration=800,actionDuration=1e3,clearInsightDuration=200,cameraStateForRect=(t,r,n)=>{let i,a=r/n,o=(i=t.width/t.height>=a?t.width:t.height/n*r)>400?.1:i>50?.2:.3,s=Math.min(r,i+r*o*2),l=n/r*s,u=Math.min(t.left-r*o,r-s);u=Math.max(u,0);let d=Math.min(t.top-n*o,n-l);return{left:Math.round(u),top:Math.round(d=Math.max(d,0)),width:Math.round(s)}},mergeTwoCameraState=(t,r)=>{let n=Math.min(t.left,r.left);return{left:n,top:Math.min(t.top,r.top),width:Math.max(t.left+t.width,r.left+r.width)-n}},allScriptsFromDump=t=>{let r,n,i,a,o;if(t.executions.forEach(t=>{t.sdkVersion&&(i=t.sdkVersion),t.model_name&&(a=t.model_name),t.model_description&&(o=t.model_description),t.tasks.forEach(t=>{let i=t;i.pageContext?.size?.width&&(r=i.pageContext.size.width,n=i.pageContext.size.height)})}),!r||!n)return import_console_browserify.default.warn("width or height is missing in dump file"),{scripts:[],sdkVersion:i,modelName:a,modelDescription:o};let s=[];return t.executions.forEach(t=>{let i=generateAnimationScripts(t,-1,r,n);i&&s.push(...i)}),{scripts:s.filter((t,r)=>r===s.length-1||"Done"!==t.title),width:r,height:n,sdkVersion:i,modelName:a,modelDescription:o}},generateAnimationScripts=(t,r,n,i)=>{if(!t||!t.tasks.length||0===n||0===i)return null;let a=[];if(-1===r)a=t.tasks;else{let n=t.tasks.findIndex(t=>t===r);if(-1===n)return import_console_browserify.default.error("task not found, cannot generate animation scripts"),null;if(n===t.tasks.length-1)return null;for(let r=n;r<t.tasks.length&&!(r>n&&"Planning"===t.tasks[r].type);r++)a.push(t.tasks[r])}if(0===a.length)return null;let o=cameraStateForRect({left:0,top:0,width:n,height:i},n,i),s=(t,r,n)=>({type:"pointer",img:t,duration:0,title:r,subTitle:n}),l=[],u,d=o,c=!1,h=a.length,f="",p=!1;return a.forEach((t,r)=>{if(!p){if(0===r&&(f=(0,import_ui_utils.paramStr)(t)),"Planning"===t.type){let n=t;n.recorder&&n.recorder.length>0&&l.push({type:"img",img:n.recorder?.[0]?.screenshot,camera:0===r?o:void 0,duration:stillDuration,title:(0,import_ui_utils.typeStr)(t),subTitle:(0,import_ui_utils.paramStr)(t)})}else if("Insight"===t.type&&"Locate"===t.subType){let r=t,a=r.output?.element,s=(0,import_ui_utils.typeStr)(t),h=(0,import_ui_utils.paramStr)(t);a?.rect&&(u={...cameraStateForRect(a.rect,n,i),pointerLeft:a.center[0],pointerTop:a.center[1]});let f=r.pageContext;if(f?.screenshotBase64){let t,n=r.log?.dump,i=f.tree?(0,import_extractor.treeToList)(f.tree).length:0;f.screenshotBase64&&l.push({type:"img",img:f.screenshotBase64,duration:stillAfterInsightDuration,title:s,subTitle:h}),t=d===o?void 0:u?mergeTwoCameraState(d,u):void 0,l.push({type:"insight",img:f.screenshotBase64,context:f,camera:t,highlightElement:r.output?.element||void 0,searchArea:n?.taskInfo?.searchArea,duration:i>20?locateDuration:.5*locateDuration,insightCameraDuration:locateDuration,title:s,subTitle:h}),l.push({type:"sleep",duration:stillAfterInsightDuration,title:s,subTitle:h}),c=!0}}else if("Action"===t.type&&"FalsyConditionStatement"!==t.subType){let n=(0,import_ui_utils.typeStr)(t),i=(0,import_ui_utils.paramStr)(t);l.push(s(mousePointer,n,i)),d=u??o,l.push({type:"img",img:t.recorder?.[0]?.screenshot,duration:actionDuration,camera:"Sleep"===t.subType?o:u,title:n,subTitle:i}),c&&(l.push({type:"clear-insight",duration:clearInsightDuration,title:n,subTitle:i}),c=!1);let a=r<h-1?stillDuration:0;t.recorder?.[1]?.screenshot?(l.push({type:"spinning-pointer",duration:actionSpinningPointerDuration,title:n,subTitle:i}),l.push(s(mousePointer,n,i)),l.push({type:"img",img:t.recorder?.[1]?.screenshot,duration:a,title:n,subTitle:i})):l.push({type:"sleep",duration:a,title:n,subTitle:i})}else{let r=(0,import_ui_utils.typeStr)(t),n=(0,import_ui_utils.paramStr)(t),i=t.recorder?.[t.recorder.length-1]?.screenshot;i&&l.push({type:"img",img:i,duration:stillDuration,camera:o,title:r,subTitle:n})}if("finished"===t.status);else{p=!0;let r=(0,import_ui_utils.typeStr)(t),n=t.errorMessage||"unknown error",i=n.indexOf("NOT_IMPLEMENTED_AS_DESIGNED")>0?"Further actions cannot be performed in the current environment":n;l.push({type:"img",img:t.recorder&&t.recorder.length>0?t.recorder[t.recorder.length-1].screenshot:"",camera:o,duration:stillDuration,title:r,subTitle:i})}}}),p||l.push({title:"Done",subTitle:f,type:"img",duration:stillDuration,camera:o}),l};init_globals();var esm_exports={};__export(esm_exports,{create:()=>create,createStore:()=>createStore,default:()=>react,useStore:()=>useStore}),init_globals(),init_globals();var import_meta2={},createStoreImpl=t=>{let r,n=new Set,i=(t,i)=>{let a="function"==typeof t?t(r):t;if(!Object.is(a,r)){let t=r;r=(null!=i?i:"object"!=typeof a||null===a)?a:Object.assign({},r,a),n.forEach(n=>n(r,t))}},a=()=>r,o={setState:i,getState:a,getInitialState:()=>s,subscribe:t=>(n.add(t),()=>n.delete(t)),destroy:()=>{"production"!==(import_meta2.env?import_meta2.env.MODE:void 0)&&import_console_browserify.default.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},s=r=t(i,a,o);return o},createStore=t=>t?createStoreImpl(t):createStoreImpl,import_react2=__toESM(__webpack_require__(4194),1),import_with_selector=__toESM(require_with_selector(),1),import_meta3={},{useDebugValue:useDebugValue}=import_react2.default,{useSyncExternalStoreWithSelector:useSyncExternalStoreWithSelector}=import_with_selector.default,didWarnAboutEqualityFn=!1,identity2=t=>t;function useStore(t,r=identity2,n){"production"!==(import_meta3.env?import_meta3.env.MODE:void 0)&&n&&!didWarnAboutEqualityFn&&(import_console_browserify.default.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),didWarnAboutEqualityFn=!0);let i=useSyncExternalStoreWithSelector(t.subscribe,t.getState,t.getServerState||t.getInitialState,r,n);return useDebugValue(i),i}var createImpl=t=>{"production"!==(import_meta3.env?import_meta3.env.MODE:void 0)&&"function"!=typeof t&&import_console_browserify.default.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");let r="function"==typeof t?createStore(t):t,n=(t,n)=>useStore(r,t,n);return Object.assign(n,r),n},create=t=>t?createImpl(t):createImpl,react=t=>("production"!==(import_meta3.env?import_meta3.env.MODE:void 0)&&import_console_browserify.default.warn("[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`."),create(t)),{create:create2}=esm_exports,useBlackboardPreference=create2(t=>({markerVisible:!0,elementsVisible:!0,setMarkerVisible:r=>{t({markerVisible:r})},setTextsVisible:r=>{t({elementsVisible:r})}})),CONFIG_KEY="midscene-env-config",SERVICE_MODE_KEY="midscene-service-mode",TRACKING_ACTIVE_TAB_KEY="midscene-tracking-active-tab",DEEP_THINK_KEY="midscene-deep-think",getConfigStringFromLocalStorage=()=>localStorage.getItem(CONFIG_KEY)||"",parseConfig=t=>{let r=t.split("\n"),n={};return r.forEach(t=>{let r=t.trim();if(r.startsWith("#"))return;let i=r.replace(/^export\s+/i,"").replace(/;$/,"").trim().match(/^(\w+)=(.*)$/);if(i){let[,t,r]=i,a=r.trim();(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),n[t]=a}}),n},useEnvConfig=create2((t,r)=>{let n=getConfigStringFromLocalStorage(),i=parseConfig(n),a=window.location.href.startsWith("chrome-extension"),o=localStorage.getItem(SERVICE_MODE_KEY);return{serviceMode:a?"In-Browser-Extension":o||"Server",setServiceMode:r=>{if(a)throw Error("serviceMode cannot be set in extension");t({serviceMode:r}),localStorage.setItem(SERVICE_MODE_KEY,r)},config:i,configString:n,setConfig:r=>t({config:r}),loadConfig:r=>{t({config:parseConfig(r),configString:r}),localStorage.setItem(CONFIG_KEY,r)},syncFromStorage:()=>{let r=getConfigStringFromLocalStorage();t({config:parseConfig(r),configString:r})},forceSameTabNavigation:"false"!==localStorage.getItem(TRACKING_ACTIVE_TAB_KEY),setForceSameTabNavigation:r=>{t({forceSameTabNavigation:r}),localStorage.setItem(TRACKING_ACTIVE_TAB_KEY,r.toString())},deepThink:"true"===localStorage.getItem(DEEP_THINK_KEY),setDeepThink:r=>{t({deepThink:r}),localStorage.setItem(DEEP_THINK_KEY,r.toString())},popupTab:"playground",setPopupTab:r=>{t({popupTab:r})}}});init_globals();var elementColor=["#01204E"],highlightColorForSearchArea="#028391",highlightColorForElement="#fd5907";function djb2Hash(t){t||(t="unnamed");let r=5381;for(let n=0;n<t.length;n++)r=(r<<5)+r+t.charCodeAt(n);return r>>>0}function colorForName(t){return elementColor[djb2Hash(t)%elementColor.length]}function highlightColorForType(t){return"searchArea"===t?highlightColorForSearchArea:highlightColorForElement}function globalThemeConfig(){return{token:{colorPrimary:"#2B83FF"},components:{Layout:{headerHeight:60,headerPadding:"0 30px",headerBg:"#FFF",bodyBg:"#FFF"}}}}init_globals();var import_icons=__webpack_require__(8405),import_antd=__webpack_require__(1542),import_react3=__webpack_require__(4194),import_jsx_runtime=__toESM(require_jsx_runtime());function EnvConfig({showTooltipWhenEmpty:t=!0,showModelName:r=!0,tooltipPlacement:n="bottom",mode:i="icon"}){let{config:a,configString:o,loadConfig:s,syncFromStorage:l}=useEnvConfig(),[u,d]=(0,import_react3.useState)(!1),[c,h]=(0,import_react3.useState)(o),f=a.MIDSCENE_MODEL_NAME,p=(0,import_react3.useRef)(null),m=t=>{l(),d(!0),t.preventDefault(),t.stopPropagation()};return(0,import_react3.useEffect)(()=>{u&&h(o)},[u,o]),(0,import_jsx_runtime.jsxs)("div",{style:{display:"flex",justifyContent:"flex-end",gap:"10px",alignItems:"center",height:"100%",minHeight:"32px"},ref:p,children:[r?f:null,(0,import_jsx_runtime.jsx)(import_antd.Tooltip,{title:"Please set up your environment variables before using.",placement:n,align:{offset:[-10,5]},getPopupContainer:()=>p.current,open:!u&&(t?0===Object.keys(a).length:void 0),children:"icon"===i?(0,import_jsx_runtime.jsx)(import_icons.SettingOutlined,{onClick:m}):(0,import_jsx_runtime.jsx)("span",{onClick:m,style:{color:"#006AFF",cursor:"pointer"},children:"set up"})}),(0,import_jsx_runtime.jsxs)(import_antd.Modal,{title:"Model Env Config",open:u,onOk:()=>{d(!1),s(c)},onCancel:()=>{d(!1)},okText:"Save",style:{width:"800px",height:"100%",marginTop:"10%"},destroyOnClose:!0,maskClosable:!0,centered:!0,children:[(0,import_jsx_runtime.jsx)(import_antd.Input.TextArea,{rows:7,placeholder:"OPENAI_API_KEY=sk-...\nMIDSCENE_MODEL_NAME=gpt-4o-2024-08-06\n...",value:c,onChange:t=>h(t.target.value),style:{whiteSpace:"nowrap",wordWrap:"break-word"}}),(0,import_jsx_runtime.jsxs)("div",{children:[(0,import_jsx_runtime.jsx)("p",{children:"The format is KEY=VALUE and separated by new lines."}),(0,import_jsx_runtime.jsxs)("p",{children:["These data will be saved ",(0,import_jsx_runtime.jsx)("strong",{children:"locally in your browser"}),"."]})]})]})]})}init_globals();var import_jsx_runtime2=__toESM(require_jsx_runtime()),Logo=({hideLogo:t=!1})=>t?null:(0,import_jsx_runtime2.jsx)("div",{className:"logo",children:(0,import_jsx_runtime2.jsx)("a",{href:"https://midscenejs.com/",target:"_blank",rel:"noreferrer",children:(0,import_jsx_runtime2.jsx)("img",{alt:"Midscene_logo",src:"https://lf3-static.bytednsdoc.com/obj/eden-cn/vhaeh7vhabf/Midscene.png"})})});init_globals();var import_icons2=__webpack_require__(8405),import_jsx_runtime3=__toESM(require_jsx_runtime());function timeCostStrElement(t){let r;return r="number"!=typeof t?"-":`${(t/1e3).toFixed(2)}s`,(0,import_jsx_runtime3.jsx)("span",{style:{fontVariantNumeric:"tabular-nums",fontFeatureSettings:"tnum"},children:r})}var iconForStatus=t=>{switch(t){case"finished":case"passed":case"success":case"connected":return(0,import_jsx_runtime3.jsx)("span",{style:{color:"#00AD4B"},children:(0,import_jsx_runtime3.jsx)(import_icons2.CheckOutlined,{})});case"finishedWithWarning":return(0,import_jsx_runtime3.jsx)("span",{style:{color:"#f7bb05"},children:(0,import_jsx_runtime3.jsx)(import_icons2.WarningOutlined,{})});case"failed":case"closed":case"timedOut":case"interrupted":return(0,import_jsx_runtime3.jsx)("span",{style:{color:"#FF0A0A"},children:(0,import_jsx_runtime3.jsx)(import_icons2.CloseOutlined,{})});case"pending":return(0,import_jsx_runtime3.jsx)(import_icons2.ClockCircleOutlined,{});case"cancelled":case"skipped":return(0,import_jsx_runtime3.jsx)(import_icons2.LogoutOutlined,{});case"running":return(0,import_jsx_runtime3.jsx)(import_icons2.ArrowRightOutlined,{});default:return(0,import_jsx_runtime3.jsx)(import_icons2.MinusOutlined,{})}};init_globals();var import_react4=__webpack_require__(4194),useServerValid=(t=!0)=>{let[r,n]=(0,import_react4.useState)(!0),{serviceMode:i}=useEnvConfig();return(0,import_react4.useEffect)(()=>{let r=!1;if(t)return Promise.resolve((async()=>{for(;!r;)n(!!await checkServerStatus()),await new Promise(t=>setTimeout(t,1e3))})()),()=>{r=!0}},[i,t]),r};init_globals();var import_icons4=__webpack_require__(8405),import_antd5=__webpack_require__(1542);function generateShaderSyncPolyfill(){return syncShader}function syncShader(t,r,n){let i=t.gl,a=t.shader,o=a._getProgramData(r.glProgram);for(let s in r.groups){let l=r.groups[s];for(let u in l.resources){let d=l.resources[u];if(d instanceof UniformGroup)d.ubo?a.bindUniformBlock(d,r._uniformBindMap[s][u],n.blockIndex++):a.updateUniformGroup(d);else if(d instanceof BufferResource)a.bindUniformBlock(d,r._uniformBindMap[s][u],n.blockIndex++);else if(d instanceof TextureSource){t.texture.bind(d,n.textureCount);let a=r._uniformBindMap[s][u],l=o.uniformData[a];l&&(l.value!==n.textureCount&&i.uniform1i(l.location,n.textureCount),n.textureCount++)}}}}init_globals(),init_globals(),init_GlUboSystem(),init_GlShaderSystem(),init_GlUniformGroupSystem(),init_GpuUboSystem(),init_UboSystem(),init_AbstractRenderer(),init_globals(),init_BufferResource(),init_UniformGroup(),init_TextureSource(),init_TextureStyle(),init_globals(),init_createUboElementsSTD40(),init_createUboElementsWGSL(),init_uniformParsers(),init_globals();var uboParserFunctions=[(t,r,n,i,a)=>{let o=i[t].toArray(!0);r[n]=o[0],r[n+1]=o[1],r[n+2]=o[2],r[n+4]=o[3],r[n+5]=o[4],r[n+6]=o[5],r[n+8]=o[6],r[n+9]=o[7],r[n+10]=o[8]},(t,r,n,i,a)=>{a=i[t],r[n]=a.x,r[n+1]=a.y,r[n+2]=a.width,r[n+3]=a.height},(t,r,n,i,a)=>{a=i[t],r[n]=a.x,r[n+1]=a.y},(t,r,n,i,a)=>{a=i[t],r[n]=a.red,r[n+1]=a.green,r[n+2]=a.blue,r[n+3]=a.alpha},(t,r,n,i,a)=>{a=i[t],r[n]=a.red,r[n+1]=a.green,r[n+2]=a.blue}],uboSingleFunctionsWGSL={f32:(t,r,n,i,a)=>{r[n]=a},i32:(t,r,n,i,a)=>{r[n]=a},"vec2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1]},"vec3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2]},"vec4<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+3]=a[3]},"mat2x2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+3]=a[3]},"mat3x3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+4]=a[3],r[n+5]=a[4],r[n+6]=a[5],r[n+8]=a[6],r[n+9]=a[7],r[n+10]=a[8]},"mat4x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<16;t++)r[n+t]=a[t]},"mat3x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/3|0)+t%3]=a[t]},"mat4x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat4x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat3x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/3|0)+t%3]=a[t]}},uboSingleFunctionsSTD40={f32:(t,r,n,i,a)=>{r[n]=a},i32:(t,r,n,i,a)=>{r[n]=a},"vec2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1]},"vec3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2]},"vec4<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+3]=a[3]},"mat2x2<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+4]=a[2],r[n+5]=a[3]},"mat3x3<f32>":(t,r,n,i,a)=>{r[n]=a[0],r[n+1]=a[1],r[n+2]=a[2],r[n+4]=a[3],r[n+5]=a[4],r[n+6]=a[5],r[n+8]=a[6],r[n+9]=a[7],r[n+10]=a[8]},"mat4x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<16;t++)r[n+t]=a[t]},"mat3x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/3|0)+t%3]=a[t]},"mat4x2<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<6;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat4x3<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/4|0)+t%4]=a[t]},"mat2x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<8;t++)r[n+4*(t/2|0)+t%2]=a[t]},"mat3x4<f32>":(t,r,n,i,a)=>{for(let t=0;t<12;t++)r[n+4*(t/3|0)+t%3]=a[t]}};function generateUboSyncPolyfillSTD40(t){return generateUboSyncPolyfill(t,uboSingleFunctionsSTD40,t=>{let r=Math.max(WGSL_TO_STD40_SIZE[t.data.type]/16,1),n=t.data.value.length/t.data.size,i=(4-n%4)%4;return(a,o,s,l,u)=>{let d=0;for(let a=0;a<t.data.size*r;a++){for(let t=0;t<n;t++)o[s++]=u[d++];s+=i}}})}function generateUboSyncPolyfillWGSL(t){return generateUboSyncPolyfill(t,uboSingleFunctionsWGSL,t=>{let{size:r,align:n}=WGSL_ALIGN_SIZE_DATA[t.data.type],i=(r-n)/4;return(n,a,o,s,l)=>{let u=0;for(let n=0;n<t.data.size*(r/4);n++){for(let t=0;t<r/4;t++)a[o++]=l[u++];o+=i}}})}function generateUboSyncPolyfill(t,r,n){let i={};for(let a in t){let o=t[a],s=o.data,l=!1;i[s.name]={offset:o.offset/4,func:null};for(let t=0;t<uniformParsers.length;t++){let r=uniformParsers[t];if(s.type===r.type&&r.test(s)){i[s.name].func=uboParserFunctions[t],l=!0;break}}l||(1===s.size?i[s.name].func=r[s.type]:i[s.name].func=n(o))}return(t,r,n)=>{for(let a in i)i[a].func(a,r,n+i[a].offset,t,t[a])}}init_globals(),init_uniformParsers(),init_globals();var uniformSingleParserFunctions={f32(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1f(a[t].location,i))},"vec2<f32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2f(a[t].location,i[0],i[1]))},"vec3<f32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3f(a[t].location,i[0],i[1],i[2]))},"vec4<f32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4f(a[t].location,i[0],i[1],i[2],i[3]))},i32(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1i(a[t].location,i))},"vec2<i32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2i(a[t].location,i[0],i[1]))},"vec3<i32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3i(a[t].location,i[0],i[1],i[2]))},"vec4<i32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4i(a[t].location,i[0],i[1],i[2],i[3]))},u32(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1ui(a[t].location,i))},"vec2<u32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2ui(a[t].location,i[0],i[1]))},"vec3<u32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3ui(a[t].location,i[0],i[1],i[2]))},"vec4<u32>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4ui(a[t].location,i[0],i[1],i[2],i[3]))},bool(t,r,n,i,a,o,s){n!==i&&(r.value=i,s.uniform1i(a[t].location,i))},"vec2<bool>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]||(n[0]=i[0],n[1]=i[1],s.uniform2i(a[t].location,i[0],i[1]))},"vec3<bool>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],s.uniform3i(a[t].location,i[0],i[1],i[2]))},"vec4<bool>"(t,r,n,i,a,o,s){n[0]===i[0]&&n[1]===i[1]&&n[2]===i[2]&&n[3]===i[3]||(n[0]=i[0],n[1]=i[1],n[2]=i[2],n[3]=i[3],s.uniform4i(a[t].location,i[0],i[1],i[2],i[3]))},"mat2x2<f32>"(t,r,n,i,a,o,s){s.uniformMatrix2fv(a[t].location,!1,i)},"mat3x3<f32>"(t,r,n,i,a,o,s){s.uniformMatrix3fv(a[t].location,!1,i)},"mat4x4<f32>"(t,r,n,i,a,o,s){s.uniformMatrix4fv(a[t].location,!1,i)}},uniformArrayParserFunctions={f32(t,r,n,i,a,o,s){s.uniform1fv(a[t].location,i)},"vec2<f32>"(t,r,n,i,a,o,s){s.uniform2fv(a[t].location,i)},"vec3<f32>"(t,r,n,i,a,o,s){s.uniform3fv(a[t].location,i)},"vec4<f32>"(t,r,n,i,a,o,s){s.uniform4fv(a[t].location,i)},"mat2x2<f32>"(t,r,n,i,a,o,s){s.uniformMatrix2fv(a[t].location,!1,i)},"mat3x3<f32>"(t,r,n,i,a,o,s){s.uniformMatrix3fv(a[t].location,!1,i)},"mat4x4<f32>"(t,r,n,i,a,o,s){s.uniformMatrix4fv(a[t].location,!1,i)},i32(t,r,n,i,a,o,s){s.uniform1iv(a[t].location,i)},"vec2<i32>"(t,r,n,i,a,o,s){s.uniform2iv(a[t].location,i)},"vec3<i32>"(t,r,n,i,a,o,s){s.uniform3iv(a[t].location,i)},"vec4<i32>"(t,r,n,i,a,o,s){s.uniform4iv(a[t].location,i)},u32(t,r,n,i,a,o,s){s.uniform1iv(a[t].location,i)},"vec2<u32>"(t,r,n,i,a,o,s){s.uniform2iv(a[t].location,i)},"vec3<u32>"(t,r,n,i,a,o,s){s.uniform3iv(a[t].location,i)},"vec4<u32>"(t,r,n,i,a,o,s){s.uniform4iv(a[t].location,i)},bool(t,r,n,i,a,o,s){s.uniform1iv(a[t].location,i)},"vec2<bool>"(t,r,n,i,a,o,s){s.uniform2iv(a[t].location,i)},"vec3<bool>"(t,r,n,i,a,o,s){s.uniform3iv(a[t].location,i)},"vec4<bool>"(t,r,n,i,a,o,s){s.uniform4iv(a[t].location,i)}},uniformParserFunctions=[(t,r,n,i,a,o,s)=>{s.uniformMatrix3fv(a[t].location,!1,o[t].toArray(!0))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.x&&n[1]===i.y&&n[2]===i.width&&n[3]===i.height||(n[0]=i.x,n[1]=i.y,n[2]=i.width,n[3]=i.height,s.uniform4f(a[t].location,i.x,i.y,i.width,i.height))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.x&&n[1]===i.y||(n[0]=i.x,n[1]=i.y,s.uniform2f(a[t].location,i.x,i.y))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.red&&n[1]===i.green&&n[2]===i.blue&&n[3]===i.alpha||(n[0]=i.red,n[1]=i.green,n[2]=i.blue,n[3]=i.alpha,s.uniform4f(a[t].location,i.red,i.green,i.blue,i.alpha))},(t,r,n,i,a,o,s)=>{n=a[t].value,i=o[t],n[0]===i.red&&n[1]===i.green&&n[2]===i.blue||(n[0]=i.red,n[1]=i.green,n[2]=i.blue,s.uniform3f(a[t].location,i.red,i.green,i.blue))}];function generateUniformsSyncPolyfill(t,r){let n={};for(let i in t.uniformStructures){if(!r[i])continue;let a=t.uniformStructures[i],o=!1;for(let t=0;t<uniformParsers.length;t++){let r=uniformParsers[t];if(a.type===r.type&&r.test(a)){n[i]=uniformParserFunctions[t],o=!0;break}}if(!o){let t=1===a.size?uniformSingleParserFunctions:uniformArrayParserFunctions;n[i]=t[a.type]}}return(t,r,i)=>{let a=i.gl;for(let i in n){let o=r[i],s=t[i],l=t[i].value;n[i](i,s,l,o,t,r,a)}}}function selfInstall(){Object.assign(AbstractRenderer.prototype,{_unsafeEvalCheck(){}}),Object.assign(UboSystem.prototype,{_systemCheck(){}}),Object.assign(GlUniformGroupSystem.prototype,{_generateUniformsSync:generateUniformsSyncPolyfill}),Object.assign(GlUboSystem.prototype,{_generateUboSync:generateUboSyncPolyfillSTD40}),Object.assign(GpuUboSystem.prototype,{_generateUboSync:generateUboSyncPolyfillWGSL}),Object.assign(GlShaderSystem.prototype,{_generateShaderSync:generateShaderSyncPolyfill})}selfInstall(),init_globals(),init_globals(),init_Extensions();var browserExt={extension:{type:ExtensionType.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Promise.resolve().then(()=>(init_browserAll(),browserAll_exports))}};init_globals(),init_Extensions();var webworkerExt={extension:{type:ExtensionType.Environment,name:"webworker",priority:0},test:()=>"undefined"!=typeof self&&void 0!==self.WorkerGlobalScope,load:async()=>{await Promise.resolve().then(()=>(init_webworkerAll(),webworkerAll_exports))}};init_Extensions(),init_init5(),init_init4(),init_globals(),init_Extensions(),init_globals(),init_globals(),init_Extensions();var _isWebGLSupported,_isWebGPUSupported,environments=[];async function autoDetectEnvironment(t){if(t)for(let t=0;t<environments.length;t++){let r=environments[t];if(r.value.test())return void await r.value.load()}}function isWebGLSupported(t){return void 0!==_isWebGLSupported?_isWebGLSupported:_isWebGLSupported=(()=>{let r={stencil:!0,failIfMajorPerformanceCaveat:t??AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat};try{if(!DOMAdapter.get().getWebGLRenderingContext())return!1;let t=DOMAdapter.get().createCanvas().getContext("webgl",r),n=!!t?.getContextAttributes()?.stencil;if(t){let r=t.getExtension("WEBGL_lose_context");r&&r.loseContext()}return t=null,n}catch(t){return!1}})()}async function isWebGPUSupported(t={}){return void 0!==_isWebGPUSupported?_isWebGPUSupported:_isWebGPUSupported=await (async()=>{if(!DOMAdapter.get().getNavigator().gpu)return!1;try{let r=await navigator.gpu.requestAdapter(t);return await r.requestDevice(),!0}catch(t){return!1}})()}extensions.handleByNamedList(ExtensionType.Environment,environments),init_globals(),init_adapter(),init_AbstractRenderer(),init_globals(),init_adapter(),init_AbstractRenderer();var renderPriority=["webgl","webgpu","canvas"];async function autoDetectRenderer(t){let r,n=[];t.preference?(n.push(t.preference),renderPriority.forEach(r=>{r!==t.preference&&n.push(r)})):n=renderPriority.slice(),await autoDetectEnvironment(t.manageImports??!0);let i={};for(let a=0;a<n.length;a++){let o=n[a];if("webgpu"===o&&await isWebGPUSupported()){let{WebGPURenderer:n}=await Promise.resolve().then(()=>(init_WebGPURenderer(),WebGPURenderer_exports));r=n,i={...t,...t.webgpu};break}if("webgl"===o&&isWebGLSupported(t.failIfMajorPerformanceCaveat??AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat)){let{WebGLRenderer:n}=await Promise.resolve().then(()=>(init_WebGLRenderer(),WebGLRenderer_exports));r=n,i={...t,...t.webgl};break}if("canvas"===o)throw i={...t},Error("CanvasRenderer is not yet implemented")}if(delete i.webgpu,delete i.webgl,!r)throw Error("No available renderer for the current environment");let a=new r;return await a.init(i),a}init_Container(),init_deprecation();var _Application=class e{constructor(...t){this.stage=new Container,void 0!==t[0]&&deprecation(v8_0_0,"Application constructor options are deprecated, please use Application.init() instead.")}async init(t){t={...t},this.renderer=await autoDetectRenderer(t),e._plugins.forEach(r=>{r.init.call(this,t)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return deprecation(v8_0_0,"Application.view is deprecated, please use Application.canvas instead."),this.renderer.canvas}get screen(){return this.renderer.screen}destroy(t=!1,r=!1){let n=e._plugins.slice(0);n.reverse(),n.forEach(t=>{t.destroy.call(this)}),this.stage.destroy(r),this.stage=null,this.renderer.destroy(t),this.renderer=null}};_Application._plugins=[];var Application=_Application;extensions.handleByList(ExtensionType.Application,Application._plugins),init_globals(),init_Extensions(),init_warn2(),init_globals();var BackgroundLoader=class{constructor(t,r=!1){this._loader=t,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=r}add(t){t.forEach(t=>{this._assetList.push(t)}),this.verbose&&import_console_browserify.default.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;let t=[],r=Math.min(this._assetList.length,this._maxConcurrent);for(let n=0;n<r;n++)t.push(this._assetList.pop());await this._loader.load(t),this._isLoading=!1,this._next()}}get active(){return this._isActive}set active(t){this._isActive!==t&&(this._isActive=t,t&&!this._isLoading&&this._next())}};init_Cache(),init_globals(),init_Extensions(),init_Texture();var cacheTextureArray={extension:ExtensionType.CacheParser,test:t=>Array.isArray(t)&&t.every(t=>t instanceof Texture),getCacheableAssets:(t,r)=>{let n={};return t.forEach(t=>{r.forEach((r,i)=>{n[t+(0===i?"":i+1)]=r})}),n}};async function testImageFormat(t){if("Image"in globalThis)return new Promise(r=>{let n=new Image;n.onload=()=>{r(!0)},n.onerror=()=>{r(!1)},n.src=t});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{let r=await (await fetch(t)).blob();await createImageBitmap(r)}catch(t){return!1}return!0}return!1}init_globals(),init_Extensions(),init_globals();var detectAvif={extension:{type:ExtensionType.DetectionParser,priority:1},test:async()=>testImageFormat("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async t=>[...t,"avif"],remove:async t=>t.filter(t=>"avif"!==t)};init_globals(),init_Extensions();var imageFormats=["png","jpg","jpeg"],detectDefaults={extension:{type:ExtensionType.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async t=>[...t,...imageFormats],remove:async t=>t.filter(t=>!imageFormats.includes(t))};init_globals(),init_Extensions(),init_globals();var inWorker="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function testVideoFormat(t){return!inWorker&&""!==document.createElement("video").canPlayType(t)}var detectMp4={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testVideoFormat("video/mp4"),add:async t=>[...t,"mp4","m4v"],remove:async t=>t.filter(t=>"mp4"!==t&&"m4v"!==t)};init_globals(),init_Extensions();var detectOgv={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testVideoFormat("video/ogg"),add:async t=>[...t,"ogv"],remove:async t=>t.filter(t=>"ogv"!==t)};init_globals(),init_Extensions();var detectWebm={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testVideoFormat("video/webm"),add:async t=>[...t,"webm"],remove:async t=>t.filter(t=>"webm"!==t)};init_globals(),init_Extensions();var detectWebp={extension:{type:ExtensionType.DetectionParser,priority:0},test:async()=>testImageFormat("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async t=>[...t,"webp"],remove:async t=>t.filter(t=>"webp"!==t)};init_globals(),init_warn2(),init_path(),init_convertToList(),init_isSingleItem();var Loader=class{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(t,r,n)=>(this._parsersValidated=!1,t[r]=n,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(t,r){let n={promise:null,parser:null};return n.promise=(async()=>{let i=null,a=null;if(r.loadParser&&((a=this._parserHash[r.loadParser])||warn(`[Assets] specified load parser "${r.loadParser}" not found while loading ${t}`)),!a){for(let n=0;n<this.parsers.length;n++){let i=this.parsers[n];if(i.load&&i.test?.(t,r,this)){a=i;break}}if(!a)return warn(`[Assets] ${t} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`),null}i=await a.load(t,r,this),n.parser=a;for(let t=0;t<this.parsers.length;t++){let a=this.parsers[t];a.parse&&a.parse&&await a.testParse?.(i,r,this)&&(i=await a.parse(i,r,this)||i,n.parser=a)}return i})(),n}async load(t,r){this._parsersValidated||this._validateParsers();let n=0,i={},a=isSingleItem(t),o=convertToList(t,t=>({alias:[t],src:t})),s=o.length,l=o.map(async t=>{let a=path.toAbsolute(t.src);if(!i[t.src])try{this.promiseCache[a]||(this.promiseCache[a]=this._getLoadPromiseAndParser(a,t)),i[t.src]=await this.promiseCache[a].promise,r&&r(++n/s)}catch(r){throw delete this.promiseCache[a],delete i[t.src],Error(`[Loader.load] Failed to load ${a}.
|
|
906
906
|
${r}`)}});return await Promise.all(l),a?i[o[0].src]:i}async unload(t){let r=convertToList(t,t=>({alias:[t],src:t})).map(async t=>{let r=path.toAbsolute(t.src),n=this.promiseCache[r];if(n){let i=await n.promise;delete this.promiseCache[r],await n.parser?.unload?.(i,t,this)}});await Promise.all(r)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(t=>t.name).reduce((t,r)=>(r.name?t[r.name]&&warn(`[Assets] loadParser name conflict "${r.name}"`):warn("[Assets] loadParser should have a name"),{...t,[r.name]:r}),{})}};function checkDataUrl(t,r){if(Array.isArray(r)){for(let n of r)if(t.startsWith(`data:${n}`))return!0;return!1}return t.startsWith(`data:${r}`)}function checkExtension(t,r){let n=t.split("?")[0],i=path.extname(n).toLowerCase();return Array.isArray(r)?r.includes(i):i===r}init_globals(),init_adapter(),init_Extensions(),init_globals(),init_globals(),init_path(),init_LoaderParser();var validJSONExtension=".json",validJSONMIME="application/json",loadJson={extension:{type:ExtensionType.LoadParser,priority:LoaderParserPriority.Low},name:"loadJson",test:t=>checkDataUrl(t,validJSONMIME)||checkExtension(t,validJSONExtension),async load(t){let r=await DOMAdapter.get().fetch(t);return await r.json()}};init_globals(),init_adapter(),init_Extensions(),init_LoaderParser();var validTXTExtension=".txt",validTXTMIME="text/plain",loadTxt={name:"loadTxt",extension:{type:ExtensionType.LoadParser,priority:LoaderParserPriority.Low},test:t=>checkDataUrl(t,validTXTMIME)||checkExtension(t,validTXTExtension),async load(t){let r=await DOMAdapter.get().fetch(t);return await r.text()}};init_globals(),init_adapter(),init_Extensions(),init_warn2(),init_path(),init_Cache(),init_LoaderParser();var validWeights=["normal","bold","100","200","300","400","500","600","700","800","900"],validFontExtensions=[".ttf",".otf",".woff",".woff2"],validFontMIMEs=["font/ttf","font/otf","font/woff","font/woff2"],CSS_IDENT_TOKEN_REGEX=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function getFontFamilyName(t){let r=path.extname(t),n=path.basename(t,r).replace(/(-|_)/g," ").toLowerCase().split(" ").map(t=>t.charAt(0).toUpperCase()+t.slice(1)),i=n.length>0;for(let t of n)if(!t.match(CSS_IDENT_TOKEN_REGEX)){i=!1;break}let a=n.join(" ");return i||(a=`"${a.replace(/[\\"]/g,"\\$&")}"`),a}var validURICharactersRegex=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function encodeURIWhenNeeded(t){return validURICharactersRegex.test(t)?t:encodeURI(t)}var loadWebFont={extension:{type:ExtensionType.LoadParser,priority:LoaderParserPriority.Low},name:"loadWebFont",test:t=>checkDataUrl(t,validFontMIMEs)||checkExtension(t,validFontExtensions),async load(t,r){let n=DOMAdapter.get().getFontFaceSet();if(n){let i=[],a=r.data?.family??getFontFamilyName(t),o=r.data?.weights?.filter(t=>validWeights.includes(t))??["normal"],s=r.data??{};for(let r=0;r<o.length;r++){let l=o[r],u=new FontFace(a,`url(${encodeURIWhenNeeded(t)})`,{...s,weight:l});await u.load(),n.add(u),i.push(u)}return Cache.set(`${a}-and-url`,{url:t,fontFaces:i}),1===i.length?i[0]:i}return warn("[loadWebFont] FontFace API is not supported. Skipping loading font"),null},unload(t){(Array.isArray(t)?t:[t]).forEach(t=>{Cache.remove(t.family),DOMAdapter.get().getFontFaceSet().delete(t)})}};function getResolutionOfUrl(t,r=1){let n=Resolver.RETINA_PREFIX?.exec(t);return n?parseFloat(n[1]):r}function createTexture(t,r,n){t.label=n,t._sourceOrigin=n;let i=new Texture({source:t,label:n}),a=()=>{delete r.promiseCache[n],Cache.has(n)&&Cache.remove(n)};return i.source.once("destroy",()=>{r.promiseCache[n]&&(warn("[Assets] A TextureSource managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the TextureSource."),a())}),i.once("destroy",()=>{t.destroyed||(warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),a())}),i}init_globals(),init_adapter(),init_Extensions(),init_ImageSource(),init_GraphicsContext(),init_globals(),init_Resolver(),init_LoaderParser(),init_globals(),init_Texture(),init_warn2(),init_Cache();var validSVGExtension=".svg",validSVGMIME="image/svg+xml",loadSvg={extension:{type:ExtensionType.LoadParser,priority:LoaderParserPriority.Low},name:"loadSVG",config:{crossOrigin:"anonymous",parseAsGraphicsContext:!1},test:t=>checkDataUrl(t,validSVGMIME)||checkExtension(t,validSVGExtension),async load(t,r,n){return r.data.parseAsGraphicsContext??this.config.parseAsGraphicsContext?loadAsGraphics(t):loadAsTexture(t,r,n,this.config.crossOrigin)},unload(t){t.destroy(!0)}};async function loadAsTexture(t,r,n,i){let a=await DOMAdapter.get().fetch(t),o=await a.blob(),s=URL.createObjectURL(o),l=new Image;l.src=s,l.crossOrigin=i,await l.decode(),URL.revokeObjectURL(s);let u=document.createElement("canvas"),d=u.getContext("2d"),c=r.data?.resolution||getResolutionOfUrl(t),h=r.data?.width??l.width,f=r.data?.height??l.height;u.width=h*c,u.height=f*c,d.drawImage(l,0,0,h*c,f*c);let{parseAsGraphicsContext:p,...m}=r.data;return createTexture(new ImageSource({resource:u,alphaMode:"premultiply-alpha-on-upload",resolution:c,...m}),n,t)}async function loadAsGraphics(t){let r=await DOMAdapter.get().fetch(t),n=await r.text(),i=new GraphicsContext;return i.svg(n),i}init_globals(),init_adapter(),init_Extensions(),init_ImageSource(),init_globals(),init_globals();var WORKER_CODE='(function () {\n \'use strict\';\n\n const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=";\n async function checkImageBitmap() {\n try {\n if (typeof createImageBitmap !== "function")\n return false;\n const response = await fetch(WHITE_PNG);\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n return imageBitmap.width === 1 && imageBitmap.height === 1;\n } catch (e) {\n return false;\n }\n }\n void checkImageBitmap().then((result) => {\n self.postMessage(result);\n });\n\n})();\n',WORKER_URL=null,WorkerInstance=class{constructor(){WORKER_URL||(WORKER_URL=URL.createObjectURL(new Blob([WORKER_CODE],{type:"application/javascript"}))),this.worker=new Worker(WORKER_URL)}};WorkerInstance.revokeObjectURL=function(){WORKER_URL&&(URL.revokeObjectURL(WORKER_URL),WORKER_URL=null)},init_globals();var WORKER_CODE2="(function () {\n 'use strict';\n\n async function loadImageBitmap(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`[WorkerManager.loadImageBitmap] Failed to fetch ${url}: ${response.status} ${response.statusText}`);\n }\n const imageBlob = await response.blob();\n const imageBitmap = await createImageBitmap(imageBlob);\n return imageBitmap;\n }\n self.onmessage = async (event) => {\n try {\n const imageBitmap = await loadImageBitmap(event.data.data[0]);\n self.postMessage({\n data: imageBitmap,\n uuid: event.data.uuid,\n id: event.data.id\n }, [imageBitmap]);\n } catch (e) {\n self.postMessage({\n error: e,\n uuid: event.data.uuid,\n id: event.data.id\n });\n }\n };\n\n})();\n",WORKER_URL2=null,WorkerInstance2=class{constructor(){WORKER_URL2||(WORKER_URL2=URL.createObjectURL(new Blob([WORKER_CODE2],{type:"application/javascript"}))),this.worker=new Worker(WORKER_URL2)}};WorkerInstance2.revokeObjectURL=function(){WORKER_URL2&&(URL.revokeObjectURL(WORKER_URL2),WORKER_URL2=null)};var MAX_WORKERS,UUID=0,WorkerManagerClass=class{constructor(){this._initialized=!1,this._createdWorkers=0,this._workerPool=[],this._queue=[],this._resolveHash={}}isImageBitmapSupported(){return void 0!==this._isImageBitmapSupported||(this._isImageBitmapSupported=new Promise(t=>{let{worker:r}=new WorkerInstance;r.addEventListener("message",n=>{r.terminate(),WorkerInstance.revokeObjectURL(),t(n.data)})})),this._isImageBitmapSupported}loadImageBitmap(t){return this._run("loadImageBitmap",[t])}async _initWorkers(){this._initialized||(this._initialized=!0)}_getWorker(){void 0===MAX_WORKERS&&(MAX_WORKERS=navigator.hardwareConcurrency||4);let t=this._workerPool.pop();return!t&&this._createdWorkers<MAX_WORKERS&&(this._createdWorkers++,(t=(new WorkerInstance2).worker).addEventListener("message",t=>{this._complete(t.data),this._returnWorker(t.target),this._next()})),t}_returnWorker(t){this._workerPool.push(t)}_complete(t){void 0!==t.error?this._resolveHash[t.uuid].reject(t.error):this._resolveHash[t.uuid].resolve(t.data),this._resolveHash[t.uuid]=null}async _run(t,r){await this._initWorkers();let n=new Promise((n,i)=>{this._queue.push({id:t,arguments:r,resolve:n,reject:i})});return this._next(),n}_next(){if(!this._queue.length)return;let t=this._getWorker();if(!t)return;let r=this._queue.pop(),n=r.id;this._resolveHash[UUID]={resolve:r.resolve,reject:r.reject},t.postMessage({data:r.arguments,uuid:UUID++,id:n})}},WorkerManager=new WorkerManagerClass;init_LoaderParser();var validImageExtensions=[".jpeg",".jpg",".png",".webp",".avif"],validImageMIMEs=["image/jpeg","image/png","image/webp","image/avif"];async function loadImageBitmap(t){let r=await DOMAdapter.get().fetch(t);if(!r.ok)throw Error(`[loadImageBitmap] Failed to fetch ${t}: ${r.status} ${r.statusText}`);let n=await r.blob();return await createImageBitmap(n)}var loadTextures={name:"loadTextures",extension:{type:ExtensionType.LoadParser,priority:LoaderParserPriority.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test:t=>checkDataUrl(t,validImageMIMEs)||checkExtension(t,validImageExtensions),async load(t,r,n){let i=null;return i=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await WorkerManager.isImageBitmapSupported()?await WorkerManager.loadImageBitmap(t):await loadImageBitmap(t):await new Promise(r=>{(i=new Image).crossOrigin=this.config.crossOrigin,i.src=t,i.complete?r(i):i.onload=()=>{r(i)}}),createTexture(new ImageSource({resource:i,alphaMode:"premultiply-alpha-on-upload",resolution:r.data?.resolution||getResolutionOfUrl(t),...r.data}),n,t)},unload(t){t.destroy(!0)}};init_globals(),init_Extensions(),init_VideoSource(),init_detectVideoAlphaMode();var validVideoExtensions=[".mp4",".m4v",".webm",".ogg",".ogv",".h264",".avi",".mov"],validVideoMIMEs=validVideoExtensions.map(t=>`video/${t.substring(1)}`);function crossOrigin(t,r,n){void 0!==n||r.startsWith("data:")?!1!==n&&(t.crossOrigin="string"==typeof n?n:"anonymous"):t.crossOrigin=determineCrossOrigin(r)}function preloadVideo(t){return new Promise((r,n)=>{function i(){o(),r()}function a(t){o(),n(t)}function o(){t.removeEventListener("canplaythrough",i),t.removeEventListener("error",a)}t.addEventListener("canplaythrough",i),t.addEventListener("error",a),t.load()})}function determineCrossOrigin(t,r=globalThis.location){if(t.startsWith("data:"))return"";r=r||globalThis.location;let n=new URL(t,document.baseURI);return n.hostname!==r.hostname||n.port!==r.port||n.protocol!==r.protocol?"anonymous":""}var loadVideoTextures={name:"loadVideo",extension:{type:ExtensionType.LoadParser},config:null,test(t){let r=checkDataUrl(t,validVideoMIMEs),n=checkExtension(t,validVideoExtensions);return r||n},async load(t,r,n){let i,a={...VideoSource.defaultOptions,resolution:r.data?.resolution||getResolutionOfUrl(t),alphaMode:r.data?.alphaMode||await detectVideoAlphaMode(),...r.data},o=document.createElement("video"),s={preload:!1!==a.autoLoad?"auto":void 0,"webkit-playsinline":!1!==a.playsinline?"":void 0,playsinline:!1!==a.playsinline?"":void 0,muted:!0===a.muted?"":void 0,loop:!0===a.loop?"":void 0,autoplay:!1!==a.autoPlay?"":void 0};Object.keys(s).forEach(t=>{let r=s[t];void 0!==r&&o.setAttribute(t,r)}),!0===a.muted&&(o.muted=!0),crossOrigin(o,t,a.crossorigin);let l=document.createElement("source");if(t.startsWith("data:"))i=t.slice(5,t.indexOf(";"));else if(!t.startsWith("blob:")){let r=t.split("?")[0].slice(t.lastIndexOf(".")+1).toLowerCase();i=VideoSource.MIME_TYPES[r]||`video/${r}`}return l.src=t,i&&(l.type=i),new Promise(i=>{let s=async()=>{let l=new VideoSource({...a,resource:o});o.removeEventListener("canplay",s),r.data.preload&&await preloadVideo(o),i(createTexture(l,n,t))};o.addEventListener("canplay",s),o.appendChild(l)})},unload(t){t.destroy(!0)}};init_globals(),init_Extensions(),init_Resolver(),init_globals(),init_Extensions(),init_Resolver();var resolveTextureUrl={extension:ExtensionType.ResolveParser,test:loadTextures.test,parse:t=>({resolution:parseFloat(Resolver.RETINA_PREFIX.exec(t)?.[1]??"1"),format:t.split(".").pop(),src:t})},resolveJsonUrl={extension:ExtensionType.ResolveParser,test:t=>Resolver.RETINA_PREFIX.test(t)&&t.endsWith(".json"),parse:resolveTextureUrl.parse};init_Resolver(),init_convertToList(),init_isSingleItem();var AssetsClass=class{constructor(){this._detections=[],this._initialized=!1,this.resolver=new Resolver,this.loader=new Loader,this.cache=Cache,this._backgroundLoader=new BackgroundLoader(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(t={}){if(this._initialized)return void warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");if(this._initialized=!0,t.defaultSearchParams&&this.resolver.setDefaultSearchParams(t.defaultSearchParams),t.basePath&&(this.resolver.basePath=t.basePath),t.bundleIdentifier&&this.resolver.setBundleIdentifier(t.bundleIdentifier),t.manifest){let r=t.manifest;"string"==typeof r&&(r=await this.load(r)),this.resolver.addManifest(r)}let r=t.texturePreference?.resolution??1,n="number"==typeof r?[r]:r,i=await this._detectFormats({preferredFormats:t.texturePreference?.format,skipDetections:t.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:i,resolution:n}}),t.preferences&&this.setPreferences(t.preferences)}add(t){this.resolver.add(t)}async load(t,r){this._initialized||await this.init();let n=isSingleItem(t),i=convertToList(t).map(t=>{if("string"!=typeof t){let r=this.resolver.getAlias(t);return r.some(t=>!this.resolver.hasKey(t))&&this.add(t),Array.isArray(r)?r[0]:r}return this.resolver.hasKey(t)||this.add({alias:t,src:t}),t}),a=this.resolver.resolve(i),o=await this._mapLoadToResolve(a,r);return n?o[i[0]]:o}addBundle(t,r){this.resolver.addBundle(t,r)}async loadBundle(t,r){this._initialized||await this.init();let n=!1;"string"==typeof t&&(n=!0,t=[t]);let i=this.resolver.resolveBundle(t),a={},o=Object.keys(i),s=0,l=0,u=()=>{r?.(++s/l)},d=o.map(t=>{let r=i[t];return l+=Object.keys(r).length,this._mapLoadToResolve(r,u).then(r=>{a[t]=r})});return await Promise.all(d),n?a[t[0]]:a}async backgroundLoad(t){this._initialized||await this.init(),"string"==typeof t&&(t=[t]);let r=this.resolver.resolve(t);this._backgroundLoader.add(Object.values(r))}async backgroundLoadBundle(t){this._initialized||await this.init(),"string"==typeof t&&(t=[t]),Object.values(this.resolver.resolveBundle(t)).forEach(t=>{this._backgroundLoader.add(Object.values(t))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(t){if("string"==typeof t)return Cache.get(t);let r={};for(let n=0;n<t.length;n++)r[n]=Cache.get(t[n]);return r}async _mapLoadToResolve(t,r){let n=[...new Set(Object.values(t))];this._backgroundLoader.active=!1;let i=await this.loader.load(n,r);this._backgroundLoader.active=!0;let a={};return n.forEach(t=>{let r=i[t.src],n=[t.src];t.alias&&n.push(...t.alias),n.forEach(t=>{a[t]=r}),Cache.set(n,r)}),a}async unload(t){this._initialized||await this.init();let r=convertToList(t).map(t=>"string"!=typeof t?t.src:t),n=this.resolver.resolve(r);await this._unloadFromResolved(n)}async unloadBundle(t){this._initialized||await this.init(),t=convertToList(t);let r=this.resolver.resolveBundle(t),n=Object.keys(r).map(t=>this._unloadFromResolved(r[t]));await Promise.all(n)}async _unloadFromResolved(t){let r=Object.values(t);r.forEach(t=>{Cache.remove(t.src)}),await this.loader.unload(r)}async _detectFormats(t){let r=[];for(let n of(t.preferredFormats&&(r=Array.isArray(t.preferredFormats)?t.preferredFormats:[t.preferredFormats]),t.detections))t.skipDetections||await n.test()?r=await n.add(r):t.skipDetections||(r=await n.remove(r));return r=r.filter((t,n)=>r.indexOf(t)===n)}get detections(){return this._detections}setPreferences(t){this.loader.parsers.forEach(r=>{r.config&&Object.keys(r.config).filter(r=>r in t).forEach(n=>{r.config[n]=t[n]})})}},Assets=new AssetsClass;extensions.handleByList(ExtensionType.LoadParser,Assets.loader.parsers).handleByList(ExtensionType.ResolveParser,Assets.resolver.parsers).handleByList(ExtensionType.CacheParser,Assets.cache.parsers).handleByList(ExtensionType.DetectionParser,Assets.detections),extensions.add(cacheTextureArray,detectDefaults,detectAvif,detectWebp,detectMp4,detectOgv,detectWebm,loadJson,loadTxt,loadWebFont,loadSvg,loadTextures,loadVideoTextures,resolveTextureUrl,resolveJsonUrl);var assetKeyMap={loader:ExtensionType.LoadParser,resolver:ExtensionType.ResolveParser,cache:ExtensionType.CacheParser,detection:ExtensionType.DetectionParser};extensions.handle(ExtensionType.Asset,t=>{let r=t.ref;Object.entries(assetKeyMap).filter(([t])=>!!r[t]).forEach(([t,n])=>extensions.add(Object.assign(r[t],{extension:r[t].extension??n})))},t=>{let r=t.ref;Object.keys(assetKeyMap).filter(t=>!!r[t]).forEach(t=>extensions.remove(r[t]))}),init_globals(),init_GlProgram(),init_GpuProgram(),init_UniformGroup(),init_Filter(),init_globals();var vertex2="in vec2 aPosition;\nout vec2 vTextureCoord;\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n";init_globals();var fragment2="\nin vec2 vTextureCoord;\n\nout vec4 finalColor;\n\nuniform float uAlpha;\nuniform sampler2D uTexture;\n\nvoid main()\n{\n finalColor = texture(uTexture, vTextureCoord) * uAlpha;\n}\n";init_globals();var source2="struct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct AlphaUniforms {\n uAlpha:f32,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n\n@group(1) @binding(0) var<uniform> alphaUniforms : AlphaUniforms;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition)\n );\n}\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n \n var sample = textureSample(uTexture, uSampler, uv);\n \n return sample * alphaUniforms.uAlpha;\n}",_AlphaFilter=class e extends Filter{constructor(t){t={...e.defaultOptions,...t};let r=GpuProgram.from({vertex:{source:source2,entryPoint:"mainVertex"},fragment:{source:source2,entryPoint:"mainFragment"}}),n=GlProgram.from({vertex:vertex2,fragment:fragment2,name:"alpha-filter"}),{alpha:i,...a}=t;super({...a,gpuProgram:r,glProgram:n,resources:{alphaUniforms:new UniformGroup({uAlpha:{value:i,type:"f32"}})}})}get alpha(){return this.resources.alphaUniforms.uniforms.uAlpha}set alpha(t){this.resources.alphaUniforms.uniforms.uAlpha=t}};_AlphaFilter.defaultOptions={alpha:1};var AlphaFilter=_AlphaFilter;init_globals(),init_TexturePool(),init_types2(),init_Filter(),init_globals(),init_GlProgram(),init_globals(),init_globals();var GAUSSIAN_VALUES={5:[.153388,.221461,.250301],7:[.071303,.131514,.189879,.214607],9:[.028532,.067234,.124009,.179044,.20236],11:[.0093,.028002,.065984,.121703,.175713,.198596],13:[.002406,.009255,.027867,.065666,.121117,.174868,.197641],15:[489e-6,.002403,.009246,.02784,.065602,.120999,.174697,.197448]},fragTemplate="in vec2 vBlurTexCoords[%size%];\nuniform sampler2D uTexture;\nout vec4 finalColor;\nvoid main(void)\n{\n finalColor = vec4(0.0);\n %blur%\n}";function generateBlurFragSource(t){let r,n=GAUSSIAN_VALUES[t],i=n.length,a=fragTemplate,o="";for(let a=0;a<t;a++){let s="finalColor += texture(uTexture, vBlurTexCoords[%index%]) * %value%;".replace("%index%",a.toString());r=a,a>=i&&(r=t-a-1),o+=s=s.replace("%value%",n[r].toString()),o+="\n"}return(a=a.replace("%blur%",o)).replace("%size%",t.toString())}init_globals();var vertTemplate="\n in vec2 aPosition;\n\n uniform float uStrength;\n\n out vec2 vBlurTexCoords[%size%];\n\n uniform vec4 uInputSize;\n uniform vec4 uOutputFrame;\n uniform vec4 uOutputTexture;\n\n vec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\n vec2 filterTextureCoord( void )\n {\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n }\n\n void main(void)\n {\n gl_Position = filterVertexPosition();\n\n float pixelStrength = uInputSize.%dimension% * uStrength;\n\n vec2 textureCoord = filterTextureCoord();\n %blur%\n }";function generateBlurVertSource(t,r){let n=Math.ceil(t/2),i,a=vertTemplate,o="";i=r?"vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * pixelStrength, 0.0);":"vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * pixelStrength);";for(let r=0;r<t;r++){let t=i.replace("%index%",r.toString());o+=t=t.replace("%sampleIndex%",r-(n-1)+".0"),o+="\n"}return(a=(a=a.replace("%blur%",o)).replace("%size%",t.toString())).replace("%dimension%",r?"z":"w")}function generateBlurGlProgram(t,r){let n=generateBlurVertSource(r,t),i=generateBlurFragSource(r);return GlProgram.from({vertex:n,fragment:i,name:`blur-${t?"horizontal":"vertical"}-pass-filter`})}init_globals(),init_GpuProgram(),init_globals();var source3="\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\nstruct BlurUniforms {\n uStrength:f32,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n@group(0) @binding(1) var uTexture: texture_2d<f32>;\n@group(0) @binding(2) var uSampler : sampler;\n\n@group(1) @binding(0) var<uniform> blurUniforms : BlurUniforms;\n\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n %blur-struct%\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n\n\n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n\n let filteredCord = filterTextureCoord(aPosition);\n\n let strength = gfu.uInputSize.w * blurUniforms.uStrength;\n\n return VSOutput(\n filterVertexPosition(aPosition),\n %blur-vertex-out%\n );\n}\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n %blur-fragment-in%\n) -> @location(0) vec4<f32> {\n\n var finalColor = vec4(0.0);\n\n %blur-sampling%\n\n return finalColor;\n}";function generateBlurProgram(t,r){let n=GAUSSIAN_VALUES[r],i=n.length,a=[],o=[],s=[];for(let l=0;l<r;l++){a[l]=`@location(${l}) offset${l}: vec2<f32>,`,o[l]=t?`filteredCord + vec2(${l-i+1} * strength, 0.0),`:`filteredCord + vec2(0.0, ${l-i+1} * strength),`;let u=n[l<i?l:r-l-1].toString();s[l]=`finalColor += textureSample(uTexture, uSampler, offset${l}) * ${u};`}let l=a.join("\n"),u=o.join("\n"),d=s.join("\n"),c=source3.replace("%blur-struct%",l).replace("%blur-vertex-out%",u).replace("%blur-fragment-in%",l).replace("%blur-sampling%",d);return GpuProgram.from({vertex:{source:c,entryPoint:"mainVertex"},fragment:{source:c,entryPoint:"mainFragment"}})}var _BlurFilterPass=class e extends Filter{constructor(t){super({glProgram:generateBlurGlProgram((t={...e.defaultOptions,...t}).horizontal,t.kernelSize),gpuProgram:generateBlurProgram(t.horizontal,t.kernelSize),resources:{blurUniforms:{uStrength:{value:0,type:"f32"}}},...t}),this.horizontal=t.horizontal,this._quality=0,this.quality=t.quality,this.blur=t.strength,this._uniforms=this.resources.blurUniforms.uniforms}apply(t,r,n,i){if(this._uniforms.uStrength=this.strength/this.passes,1===this.passes)t.applyFilter(this,r,n,i);else{let a=TexturePool.getSameSizeTexture(r),o=r,s=a;this._state.blend=!1;for(let r=0;r<this.passes-1;r++){t.applyFilter(this,o,s,t.renderer.type===RendererType.WEBGPU);let r=s;s=o,o=r}this._state.blend=!0,t.applyFilter(this,o,n,i),TexturePool.returnTexture(a)}}get blur(){return this.strength}set blur(t){this.padding=1+2*Math.abs(t),this.strength=t}get quality(){return this._quality}set quality(t){this._quality=t,this.passes=t}};_BlurFilterPass.defaultOptions={strength:8,quality:4,kernelSize:5};var BlurFilterPass=_BlurFilterPass;init_globals(),init_globals(),init_ObservablePoint(),init_deprecation(),init_Bounds(),init_Container();var AbstractText=class extends Container{constructor(t,r){let{text:n,resolution:i,style:a,anchor:o,width:s,height:l,roundPixels:u,...d}=t;super({...d}),this.batched=!0,this.resolution=null,this._didTextUpdate=!0,this._roundPixels=0,this._bounds=new Bounds,this._boundsDirty=!0,this._styleClass=r,this.text=n??"",this.style=a,this.resolution=i??null,this.allowChildren=!1,this._anchor=new ObservablePoint({_onUpdate:()=>{this.onViewUpdate()}}),o&&(this.anchor=o),this.roundPixels=u??!1,s&&(this.width=s),l&&(this.height=l)}get anchor(){return this._anchor}set anchor(t){"number"==typeof t?this._anchor.set(t):this._anchor.copyFrom(t)}get roundPixels(){return!!this._roundPixels}set roundPixels(t){this._roundPixels=+!!t}set text(t){t=t.toString(),this._text!==t&&(this._text=t,this.onViewUpdate())}get text(){return this._text}get style(){return this._style}set style(t){t=t||{},this._style?.off("update",this.onViewUpdate,this),t instanceof this._styleClass?this._style=t:this._style=new this._styleClass(t),this._style.on("update",this.onViewUpdate,this),this.onViewUpdate()}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}get width(){return Math.abs(this.scale.x)*this.bounds.width}set width(t){this._setWidth(t,this.bounds.width)}get height(){return Math.abs(this.scale.y)*this.bounds.height}set height(t){this._setHeight(t,this.bounds.height)}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this.bounds.width,t.height=Math.abs(this.scale.y)*this.bounds.height,t}setSize(t,r){let n,i;"object"!=typeof t?(n=t,i=r??t):(n=t.width,i=t.height??t.width),void 0!==n&&this._setWidth(n,this.bounds.width),void 0!==i&&this._setHeight(i,this.bounds.height)}addBounds(t){let r=this.bounds;t.addFrame(r.minX,r.minY,r.maxX,r.maxY)}containsPoint(t){let r=this.bounds.maxX,n=this.bounds.maxY,i=-r*this.anchor.x,a=0;return t.x>=i&&t.x<=i+r&&(a=-n*this.anchor.y,t.y>=a&&t.y<=a+n)}onViewUpdate(){this._didChangeId+=4096,this._boundsDirty=!0,this.didViewUpdate||(this.didViewUpdate=!0,this._didTextUpdate=!0,this.renderGroup&&this.renderGroup.onChildViewUpdate(this))}_getKey(){return`${this.text}:${this._style.styleKey}`}destroy(t=!1){super.destroy(t),this.owner=null,this._bounds=null,this._anchor=null,("boolean"==typeof t?t:t?.style)&&this._style.destroy(t),this._style=null,this._text=null}};function ensureOptions(t,r){let n=t[0]??{};return("string"==typeof n||t[1])&&(deprecation(v8_0_0,`use new ${r}({ text: "hi!", style }) instead`),n={text:n,style:t[1]}),n}init_CanvasTextMetrics(),init_TextStyle();var Text2=class extends AbstractText{constructor(...t){super(ensureOptions(t,"Text"),TextStyle),this.renderPipeId="text"}_updateBounds(){let t=this._bounds,r=this._style.padding,n=this._anchor,{width:i,height:a}=CanvasTextMetrics.measureText(this._text,this._style);t.minX=-n._x*i-r,t.maxX=t.minX+i,t.minY=-n._y*a-r,t.maxY=t.minY+a}};init_Color(),init_Filter(),init_const2(),init_ObservablePoint(),init_Rectangle(),init_GlProgram(),init_GpuProgram(),init_ImageSource(),init_TextureSource(),init_Texture(),init_TexturePool(),init_textureFrom(),init_ViewSystem(),init_Container(),init_Graphics(),init_Sprite(),init_eventemitter3(),init_deprecation();var import_earcut2=__toESM(require_earcut(),1);extensions.add(browserExt,webworkerExt);var import_react6=__webpack_require__(4194),import_icons3=__webpack_require__(8405),import_extractor3=__toESM(require_extractor()),import_antd3=__webpack_require__(1542);init_globals();var import_antd2=__webpack_require__(1542),import_react5=__webpack_require__(4194),import_extractor2=__toESM(require_extractor());init_globals(),init_globals(),init_globals();var vertex3="in vec2 aPosition;\nout vec2 vTextureCoord;\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n";init_globals();var wgslVertex="struct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n };\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n return VSOutput(\n filterVertexPosition(aPosition),\n filterTextureCoord(aPosition)\n );\n}";init_globals();var fragment3="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uGamma;\nuniform float uContrast;\nuniform float uSaturation;\nuniform float uBrightness;\nuniform vec4 uColor;\n\nvoid main()\n{\n vec4 c = texture(uTexture, vTextureCoord);\n\n if (c.a > 0.0) {\n c.rgb /= c.a;\n\n vec3 rgb = pow(c.rgb, vec3(1. / uGamma));\n rgb = mix(vec3(.5), mix(vec3(dot(vec3(.2125, .7154, .0721), rgb)), rgb, uSaturation), uContrast);\n rgb.r *= uColor.r;\n rgb.g *= uColor.g;\n rgb.b *= uColor.b;\n c.rgb = rgb * uBrightness;\n\n c.rgb *= c.a;\n }\n\n finalColor = c * uColor.a;\n}\n";init_globals();var source4="struct AdjustmentUniforms {\n uGamma: f32,\n uContrast: f32,\n uSaturation: f32,\n uBrightness: f32,\n uColor: vec4<f32>,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> adjustmentUniforms : AdjustmentUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n var sample = textureSample(uTexture, uSampler, uv);\n let color = adjustmentUniforms.uColor;\n\n if (sample.a > 0.0) \n {\n sample = vec4<f32>(sample.rgb / sample.a, sample.a);\n var rgb: vec3<f32> = pow(sample.rgb, vec3<f32>(1. / adjustmentUniforms.uGamma));\n rgb = mix(vec3<f32>(.5), mix(vec3<f32>(dot(vec3<f32>(.2125, .7154, .0721), rgb)), rgb, adjustmentUniforms.uSaturation), adjustmentUniforms.uContrast);\n rgb.r *= color.r;\n rgb.g *= color.g;\n rgb.b *= color.b;\n sample = vec4<f32>(rgb.rgb * adjustmentUniforms.uBrightness, sample.a);\n sample = vec4<f32>(sample.rgb * sample.a, sample.a);\n }\n\n return sample * color.a;\n}",__defProp2=Object.defineProperty,__defNormalProp2=(t,r,n)=>r in t?__defProp2(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField2=(t,r,n)=>(__defNormalProp2(t,"symbol"!=typeof r?r+"":r,n),n),_AdjustmentFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source4,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment3,name:"adjustment-filter"}),resources:{adjustmentUniforms:{uGamma:{value:t.gamma,type:"f32"},uContrast:{value:t.contrast,type:"f32"},uSaturation:{value:t.saturation,type:"f32"},uBrightness:{value:t.brightness,type:"f32"},uColor:{value:[t.red,t.green,t.blue,t.alpha],type:"vec4<f32>"}}}}),__publicField2(this,"uniforms"),this.uniforms=this.resources.adjustmentUniforms.uniforms}get gamma(){return this.uniforms.uGamma}set gamma(t){this.uniforms.uGamma=t}get contrast(){return this.uniforms.uContrast}set contrast(t){this.uniforms.uContrast=t}get saturation(){return this.uniforms.uSaturation}set saturation(t){this.uniforms.uSaturation=t}get brightness(){return this.uniforms.uBrightness}set brightness(t){this.uniforms.uBrightness=t}get red(){return this.uniforms.uColor[0]}set red(t){this.uniforms.uColor[0]=t}get green(){return this.uniforms.uColor[1]}set green(t){this.uniforms.uColor[1]=t}get blue(){return this.uniforms.uColor[2]}set blue(t){this.uniforms.uColor[2]=t}get alpha(){return this.uniforms.uColor[3]}set alpha(t){this.uniforms.uColor[3]=t}};__publicField2(_AdjustmentFilter,"DEFAULT_OPTIONS",{gamma:1,contrast:1,saturation:1,brightness:1,red:1,green:1,blue:1,alpha:1}),init_globals(),init_globals(),init_globals();var fragment4="\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uOffset;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture(uTexture, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample top right pixel\n color += texture(uTexture, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y));\n\n // Sample bottom right pixel\n color += texture(uTexture, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Sample bottom left pixel\n color += texture(uTexture, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y));\n\n // Average\n color *= 0.25;\n\n finalColor = color;\n}";init_globals();var source5="struct KawaseBlurUniforms {\n uOffset:vec2<f32>,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> kawaseBlurUniforms : KawaseBlurUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uOffset = kawaseBlurUniforms.uOffset;\n var color: vec4<f32> = vec4<f32>(0.0);\n\n // Sample top left pixel\n color += textureSample(uTexture, uSampler, vec2<f32>(uv.x - uOffset.x, uv.y + uOffset.y));\n // Sample top right pixel\n color += textureSample(uTexture, uSampler, vec2<f32>(uv.x + uOffset.x, uv.y + uOffset.y));\n // Sample bottom right pixel\n color += textureSample(uTexture, uSampler, vec2<f32>(uv.x + uOffset.x, uv.y - uOffset.y));\n // Sample bottom left pixel\n color += textureSample(uTexture, uSampler, vec2<f32>(uv.x - uOffset.x, uv.y - uOffset.y));\n // Average\n color *= 0.25;\n\n return color;\n}";init_globals();var fragmentClamp="\nprecision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uOffset;\n\nuniform vec4 uInputClamp;\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n\n // Sample top left pixel\n color += texture(uTexture, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y), uInputClamp.xy, uInputClamp.zw));\n\n // Sample top right pixel\n color += texture(uTexture, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y), uInputClamp.xy, uInputClamp.zw));\n\n // Sample bottom right pixel\n color += texture(uTexture, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));\n\n // Sample bottom left pixel\n color += texture(uTexture, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));\n\n // Average\n color *= 0.25;\n\n finalColor = color;\n}\n";init_globals();var sourceClamp="struct KawaseBlurUniforms {\n uOffset:vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> kawaseBlurUniforms : KawaseBlurUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uOffset = kawaseBlurUniforms.uOffset;\n var color: vec4<f32> = vec4(0.0);\n\n // Sample top left pixel\n color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x - uOffset.x, uv.y + uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n // Sample top right pixel\n color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x + uOffset.x, uv.y + uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n // Sample bottom right pixel\n color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x + uOffset.x, uv.y - uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n // Sample bottom left pixel\n color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x - uOffset.x, uv.y - uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n // Average\n color *= 0.25;\n \n return color;\n}",__defProp3=Object.defineProperty,__defNormalProp3=(t,r,n)=>r in t?__defProp3(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField3=(t,r,n)=>(__defNormalProp3(t,"symbol"!=typeof r?r+"":r,n),n),_KawaseBlurFilter=class e extends Filter{constructor(...t){let r=t[0]??{};("number"==typeof r||Array.isArray(r))&&(deprecation("6.0.0","KawaseBlurFilter constructor params are now options object. See params: { strength, quality, clamp, pixelSize }"),r={strength:r},void 0!==t[1]&&(r.quality=t[1]),void 0!==t[2]&&(r.clamp=t[2])),r={...e.DEFAULT_OPTIONS,...r},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:r?.clamp?sourceClamp:source5,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:r?.clamp?fragmentClamp:fragment4,name:"kawase-blur-filter"}),resources:{kawaseBlurUniforms:{uOffset:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField3(this,"uniforms"),__publicField3(this,"_pixelSize",{x:0,y:0}),__publicField3(this,"_clamp"),__publicField3(this,"_kernels",[]),__publicField3(this,"_blur"),__publicField3(this,"_quality"),this.uniforms=this.resources.kawaseBlurUniforms.uniforms,this.pixelSize=r.pixelSize??{x:1,y:1},Array.isArray(r.strength)?this.kernels=r.strength:"number"==typeof r.strength&&(this._blur=r.strength,this.quality=r.quality??3),this._clamp=!!r.clamp}apply(t,r,n,i){let a,o=this.pixelSizeX/r.source.width,s=this.pixelSizeY/r.source.height;if(1===this._quality||0===this._blur)a=this._kernels[0]+.5,this.uniforms.uOffset[0]=a*o,this.uniforms.uOffset[1]=a*s,t.applyFilter(this,r,n,i);else{let l=TexturePool.getSameSizeTexture(r),u,d=r,c=l,h=this._quality-1;for(let r=0;r<h;r++)a=this._kernels[r]+.5,this.uniforms.uOffset[0]=a*o,this.uniforms.uOffset[1]=a*s,t.applyFilter(this,d,c,!0),u=d,d=c,c=u;a=this._kernels[h]+.5,this.uniforms.uOffset[0]=a*o,this.uniforms.uOffset[1]=a*s,t.applyFilter(this,d,n,i),TexturePool.returnTexture(l)}}get strength(){return this._blur}set strength(t){this._blur=t,this._generateKernels()}get quality(){return this._quality}set quality(t){this._quality=Math.max(1,Math.round(t)),this._generateKernels()}get kernels(){return this._kernels}set kernels(t){Array.isArray(t)&&t.length>0?(this._kernels=t,this._quality=t.length,this._blur=Math.max(...t)):(this._kernels=[0],this._quality=1)}get pixelSize(){return this._pixelSize}set pixelSize(t){if("number"!=typeof t)return Array.isArray(t)?(this.pixelSizeX=t[0],void(this.pixelSizeY=t[1])):void(this._pixelSize=t);this.pixelSizeX=this.pixelSizeY=t}get pixelSizeX(){return this.pixelSize.x}set pixelSizeX(t){this.pixelSize.x=t}get pixelSizeY(){return this.pixelSize.y}set pixelSizeY(t){this.pixelSize.y=t}get clamp(){return this._clamp}_updatePadding(){this.padding=Math.ceil(this._kernels.reduce((t,r)=>t+r+.5,0))}_generateKernels(){let t=this._blur,r=this._quality,n=[t];if(t>0){let i=t,a=t/r;for(let t=1;t<r;t++)i-=a,n.push(i)}this._kernels=n,this._updatePadding()}};__publicField3(_KawaseBlurFilter,"DEFAULT_OPTIONS",{strength:4,quality:3,clamp:!1,pixelSize:{x:1,y:1}});var KawaseBlurFilter=_KawaseBlurFilter;init_globals();var fragment5="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform sampler2D uMapTexture;\nuniform float uBloomScale;\nuniform float uBrightness;\n\nvoid main() {\n vec4 color = texture(uTexture, vTextureCoord);\n color.rgb *= uBrightness;\n vec4 bloomColor = vec4(texture(uMapTexture, vTextureCoord).rgb, 0.0);\n bloomColor.rgb *= uBloomScale;\n finalColor = color + bloomColor;\n}\n";init_globals();var source6="struct AdvancedBloomUniforms {\n uBloomScale: f32,\n uBrightness: f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> advancedBloomUniforms : AdvancedBloomUniforms;\n@group(1) @binding(1) var uMapTexture: texture_2d<f32>;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n var color = textureSample(uTexture, uSampler, uv);\n color = vec4<f32>(color.rgb * advancedBloomUniforms.uBrightness, color.a);\n\n var bloomColor = vec4<f32>(textureSample(uMapTexture, uSampler, uv).rgb, 0.0);\n bloomColor = vec4<f32>(bloomColor.rgb * advancedBloomUniforms.uBloomScale, bloomColor.a);\n \n return color + bloomColor;\n}\n";init_globals(),init_globals();var fragment6="\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uThreshold;\n\nvoid main() {\n vec4 color = texture(uTexture, vTextureCoord);\n\n // A simple & fast algorithm for getting brightness.\n // It's inaccuracy , but good enought for this feature.\n float _max = max(max(color.r, color.g), color.b);\n float _min = min(min(color.r, color.g), color.b);\n float brightness = (_max + _min) * 0.5;\n\n if(brightness > uThreshold) {\n finalColor = color;\n } else {\n finalColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n}\n";init_globals();var source7="struct ExtractBrightnessUniforms {\n uThreshold: f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> extractBrightnessUniforms : ExtractBrightnessUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n // A simple & fast algorithm for getting brightness.\n // It's inaccurate, but good enough for this feature.\n let max: f32 = max(max(color.r, color.g), color.b);\n let min: f32 = min(min(color.r, color.g), color.b);\n let brightness: f32 = (max + min) * 0.5;\n\n return select(vec4<f32>(0.), color, brightness > extractBrightnessUniforms.uThreshold);\n}\n",__defProp4=Object.defineProperty,__defNormalProp4=(t,r,n)=>r in t?__defProp4(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField4=(t,r,n)=>(__defNormalProp4(t,"symbol"!=typeof r?r+"":r,n),n),_ExtractBrightnessFilter=class e extends Filter{constructor(t){super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source7,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment6,name:"extract-brightness-filter"}),resources:{extractBrightnessUniforms:{uThreshold:{value:(t={...e.DEFAULT_OPTIONS,...t}).threshold,type:"f32"}}}}),__publicField4(this,"uniforms"),this.uniforms=this.resources.extractBrightnessUniforms.uniforms}get threshold(){return this.uniforms.uThreshold}set threshold(t){this.uniforms.uThreshold=t}};__publicField4(_ExtractBrightnessFilter,"DEFAULT_OPTIONS",{threshold:.5});var ExtractBrightnessFilter=_ExtractBrightnessFilter,__defProp5=Object.defineProperty,__defNormalProp5=(t,r,n)=>r in t?__defProp5(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField5=(t,r,n)=>(__defNormalProp5(t,"symbol"!=typeof r?r+"":r,n),n),_AdvancedBloomFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source6,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment5,name:"advanced-bloom-filter"}),resources:{advancedBloomUniforms:{uBloomScale:{value:t.bloomScale,type:"f32"},uBrightness:{value:t.brightness,type:"f32"}},uMapTexture:Texture.WHITE}}),__publicField5(this,"uniforms"),__publicField5(this,"bloomScale",1),__publicField5(this,"brightness",1),__publicField5(this,"_extractFilter"),__publicField5(this,"_blurFilter"),this.uniforms=this.resources.advancedBloomUniforms.uniforms,this._extractFilter=new ExtractBrightnessFilter({threshold:t.threshold}),this._blurFilter=new KawaseBlurFilter({strength:t.kernels??t.blur,quality:t.kernels?void 0:t.quality}),Object.assign(this,t)}apply(t,r,n,i){let a=TexturePool.getSameSizeTexture(r);this._extractFilter.apply(t,r,a,!0);let o=TexturePool.getSameSizeTexture(r);this._blurFilter.apply(t,a,o,!0),this.uniforms.uBloomScale=this.bloomScale,this.uniforms.uBrightness=this.brightness,this.resources.uMapTexture=o.source,t.applyFilter(this,r,n,i),TexturePool.returnTexture(o),TexturePool.returnTexture(a)}get threshold(){return this._extractFilter.threshold}set threshold(t){this._extractFilter.threshold=t}get kernels(){return this._blurFilter.kernels}set kernels(t){this._blurFilter.kernels=t}get blur(){return this._blurFilter.strength}set blur(t){this._blurFilter.strength=t}get quality(){return this._blurFilter.quality}set quality(t){this._blurFilter.quality=t}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(t){"number"==typeof t&&(t={x:t,y:t}),Array.isArray(t)&&(t={x:t[0],y:t[1]}),this._blurFilter.pixelSize=t}get pixelSizeX(){return this._blurFilter.pixelSizeX}set pixelSizeX(t){this._blurFilter.pixelSizeX=t}get pixelSizeY(){return this._blurFilter.pixelSizeY}set pixelSizeY(t){this._blurFilter.pixelSizeY=t}};__publicField5(_AdvancedBloomFilter,"DEFAULT_OPTIONS",{threshold:.5,bloomScale:1,brightness:1,blur:8,quality:4,pixelSize:{x:1,y:1}}),init_globals(),init_globals();var fragment7="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uSize;\nuniform vec3 uColor;\nuniform float uReplaceColor;\n\nuniform vec4 uInputSize;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= uInputSize.xy;\n coord += uInputSize.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= uInputSize.zw;\n coord /= uInputSize.xy;\n\n return coord;\n}\n\nvec2 pixelate(vec2 coord, vec2 size)\n{\n return floor(coord / size) * size;\n}\n\nvec2 getMod(vec2 coord, vec2 size)\n{\n return mod(coord, size) / size;\n}\n\nfloat character(float n, vec2 p)\n{\n p = floor(p*vec2(4.0, 4.0) + 2.5);\n\n if (clamp(p.x, 0.0, 4.0) == p.x)\n {\n if (clamp(p.y, 0.0, 4.0) == p.y)\n {\n if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;\n }\n }\n return 0.0;\n}\n\nvoid main()\n{\n vec2 coord = mapCoord(vTextureCoord);\n\n // get the grid position\n vec2 pixCoord = pixelate(coord, vec2(uSize));\n pixCoord = unmapCoord(pixCoord);\n\n // sample the color at grid position\n vec4 color = texture(uTexture, pixCoord);\n\n // brightness of the color as it's perceived by the human eye\n float gray = 0.3 * color.r + 0.59 * color.g + 0.11 * color.b;\n\n // determine the character to use\n float n = 65536.0; // .\n if (gray > 0.2) n = 65600.0; // :\n if (gray > 0.3) n = 332772.0; // *\n if (gray > 0.4) n = 15255086.0; // o\n if (gray > 0.5) n = 23385164.0; // &\n if (gray > 0.6) n = 15252014.0; // 8\n if (gray > 0.7) n = 13199452.0; // @\n if (gray > 0.8) n = 11512810.0; // #\n\n // get the mod..\n vec2 modd = getMod(coord, vec2(uSize));\n\n finalColor = (uReplaceColor > 0.5 ? vec4(uColor, 1.) : color) * character( n, vec2(-1.0) + modd * 2.0);\n}\n";init_globals();var source8="struct AsciiUniforms {\n uSize: f32,\n uColor: vec3<f32>,\n uReplaceColor: f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> asciiUniforms : AsciiUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n let pixelSize: f32 = asciiUniforms.uSize;\n let coord: vec2<f32> = mapCoord(uv);\n\n // get the rounded color..\n var pixCoord: vec2<f32> = pixelate(coord, vec2<f32>(pixelSize));\n pixCoord = unmapCoord(pixCoord);\n\n var color = textureSample(uTexture, uSampler, pixCoord);\n\n // determine the character to use\n let gray: f32 = 0.3 * color.r + 0.59 * color.g + 0.11 * color.b;\n \n var n: f32 = 65536.0; // .\n if (gray > 0.2) {\n n = 65600.0; // :\n }\n if (gray > 0.3) {\n n = 332772.0; // *\n }\n if (gray > 0.4) {\n n = 15255086.0; // o\n }\n if (gray > 0.5) {\n n = 23385164.0; // &\n }\n if (gray > 0.6) {\n n = 15252014.0; // 8\n }\n if (gray > 0.7) {\n n = 13199452.0; // @\n }\n if (gray > 0.8) {\n n = 11512810.0; // #\n }\n\n // get the mod..\n let modd: vec2<f32> = getMod(coord, vec2<f32>(pixelSize));\n return select(color, vec4<f32>(asciiUniforms.uColor, 1.), asciiUniforms.uReplaceColor > 0.5) * character(n, vec2<f32>(-1.0) + modd * 2.0);\n}\n\nfn pixelate(coord: vec2<f32>, size: vec2<f32>) -> vec2<f32>\n{\n return floor( coord / size ) * size;\n}\n\nfn getMod(coord: vec2<f32>, size: vec2<f32>) -> vec2<f32>\n{\n return moduloVec2( coord , size) / size;\n}\n\nfn character(n: f32, p: vec2<f32>) -> f32\n{\n var q: vec2<f32> = floor(p*vec2<f32>(4.0, 4.0) + 2.5);\n\n if (clamp(q.x, 0.0, 4.0) == q.x)\n {\n if (clamp(q.y, 0.0, 4.0) == q.y)\n {\n if (i32(modulo(n/exp2(q.x + 5.0*q.y), 2.0)) == 1)\n {\n return 1.0;\n }\n }\n }\n\n return 0.0;\n}\n\nfn modulo(x: f32, y: f32) -> f32\n{\n return x - y * floor(x/y);\n}\n\nfn moduloVec2(x: vec2<f32>, y: vec2<f32>) -> vec2<f32>\n{\n return x - y * floor(x/y);\n}\n\nfn mapCoord(coord: vec2<f32> ) -> vec2<f32>\n{\n var mappedCoord: vec2<f32> = coord;\n mappedCoord *= gfu.uInputSize.xy;\n mappedCoord += gfu.uOutputFrame.xy;\n return mappedCoord;\n}\n\nfn unmapCoord(coord: vec2<f32> ) -> vec2<f32>\n{\n var mappedCoord: vec2<f32> = coord;\n mappedCoord -= gfu.uOutputFrame.xy;\n mappedCoord /= gfu.uInputSize.xy;\n return mappedCoord;\n}",__defProp6=Object.defineProperty,__defNormalProp6=(t,r,n)=>r in t?__defProp6(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField6=(t,r,n)=>(__defNormalProp6(t,"symbol"!=typeof r?r+"":r,n),n),_AsciiFilter=class e extends Filter{constructor(...t){let r=t[0]??{};"number"==typeof r&&(deprecation("6.0.0","AsciiFilter constructor params are now options object. See params: { size, color, replaceColor }"),r={size:r}),super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source8,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment7,name:"ascii-filter"}),resources:{asciiUniforms:{uSize:{value:(r={...e.DEFAULT_OPTIONS,...r}).size,type:"f32"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uReplaceColor:{value:Number(r?.color&&!1!==r.replaceColor),type:"f32"}}}}),__publicField6(this,"uniforms"),__publicField6(this,"_color"),this.uniforms=this.resources.asciiUniforms.uniforms,this._color=new Color,this.color=r.color??0xffffff}get size(){return this.uniforms.uSize}set size(t){this.uniforms.uSize=t}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get replaceColor(){return this.uniforms.uReplaceColor>.5}set replaceColor(t){this.uniforms.uReplaceColor=+!!t}};__publicField6(_AsciiFilter,"DEFAULT_OPTIONS",{size:8,color:0xffffff,replaceColor:!1}),init_globals(),init_globals(),init_globals(),init_globals(),init_globals();var fragment9="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uTransform;\nuniform vec3 uLightColor;\nuniform float uLightAlpha;\nuniform vec3 uShadowColor;\nuniform float uShadowAlpha;\n\nuniform vec4 uInputSize;\n\nvoid main(void) {\n vec2 transform = vec2(1.0 / uInputSize) * vec2(uTransform.x, uTransform.y);\n vec4 color = texture(uTexture, vTextureCoord);\n float light = texture(uTexture, vTextureCoord - transform).a;\n float shadow = texture(uTexture, vTextureCoord + transform).a;\n\n color.rgb = mix(color.rgb, uLightColor, clamp((color.a - light) * uLightAlpha, 0.0, 1.0));\n color.rgb = mix(color.rgb, uShadowColor, clamp((color.a - shadow) * uShadowAlpha, 0.0, 1.0));\n finalColor = vec4(color.rgb * color.a, color.a);\n}\n";init_globals();var source9="struct BevelUniforms {\n uLightColor: vec3<f32>,\n uLightAlpha: f32,\n uShadowColor: vec3<f32>,\n uShadowAlpha: f32,\n uTransform: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> bevelUniforms : BevelUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let transform = vec2<f32>(1.0 / gfu.uInputSize.xy) * vec2<f32>(bevelUniforms.uTransform.x, bevelUniforms.uTransform.y);\n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let lightSample: f32 = textureSample(uTexture, uSampler, uv - transform).a;\n let shadowSample: f32 = textureSample(uTexture, uSampler, uv + transform).a;\n\n let light = vec4<f32>(bevelUniforms.uLightColor, bevelUniforms.uLightAlpha);\n let shadow = vec4<f32>(bevelUniforms.uShadowColor, bevelUniforms.uShadowAlpha);\n\n color = vec4<f32>(mix(color.rgb, light.rgb, clamp((color.a - lightSample) * light.a, 0.0, 1.0)), color.a);\n color = vec4<f32>(mix(color.rgb, shadow.rgb, clamp((color.a - shadowSample) * shadow.a, 0.0, 1.0)), color.a);\n \n return vec4<f32>(color.rgb * color.a, color.a);\n}",__defProp7=Object.defineProperty,__defNormalProp7=(t,r,n)=>r in t?__defProp7(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField7=(t,r,n)=>(__defNormalProp7(t,"symbol"!=typeof r?r+"":r,n),n),_BevelFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source9,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment9,name:"bevel-filter"}),resources:{bevelUniforms:{uLightColor:{value:new Float32Array(3),type:"vec3<f32>"},uLightAlpha:{value:t.lightAlpha,type:"f32"},uShadowColor:{value:new Float32Array(3),type:"vec3<f32>"},uShadowAlpha:{value:t.shadowAlpha,type:"f32"},uTransform:{value:new Float32Array(2),type:"vec2<f32>"}}},padding:1}),__publicField7(this,"uniforms"),__publicField7(this,"_thickness"),__publicField7(this,"_rotation"),__publicField7(this,"_lightColor"),__publicField7(this,"_shadowColor"),this.uniforms=this.resources.bevelUniforms.uniforms,this._lightColor=new Color,this._shadowColor=new Color,this.lightColor=t.lightColor??0xffffff,this.shadowColor=t.shadowColor??0,Object.assign(this,t)}get rotation(){return this._rotation/DEG_TO_RAD}set rotation(t){this._rotation=t*DEG_TO_RAD,this._updateTransform()}get thickness(){return this._thickness}set thickness(t){this._thickness=t,this._updateTransform()}get lightColor(){return this._lightColor.value}set lightColor(t){this._lightColor.setValue(t);let[r,n,i]=this._lightColor.toArray();this.uniforms.uLightColor[0]=r,this.uniforms.uLightColor[1]=n,this.uniforms.uLightColor[2]=i}get lightAlpha(){return this.uniforms.uLightAlpha}set lightAlpha(t){this.uniforms.uLightAlpha=t}get shadowColor(){return this._shadowColor.value}set shadowColor(t){this._shadowColor.setValue(t);let[r,n,i]=this._shadowColor.toArray();this.uniforms.uShadowColor[0]=r,this.uniforms.uShadowColor[1]=n,this.uniforms.uShadowColor[2]=i}get shadowAlpha(){return this.uniforms.uShadowAlpha}set shadowAlpha(t){this.uniforms.uShadowAlpha=t}_updateTransform(){this.uniforms.uTransform[0]=this.thickness*Math.cos(this._rotation),this.uniforms.uTransform[1]=this.thickness*Math.sin(this._rotation)}};__publicField7(_BevelFilter,"DEFAULT_OPTIONS",{rotation:45,thickness:2,lightColor:0xffffff,lightAlpha:.7,shadowColor:0,shadowAlpha:.7}),init_globals();var __defProp8=Object.defineProperty,__defNormalProp8=(t,r,n)=>r in t?__defProp8(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField8=(t,r,n)=>(__defNormalProp8(t,"symbol"!=typeof r?r+"":r,n),n),_BloomFilter=class e extends AlphaFilter{constructor(...t){let r=t[0]??{};if("number"==typeof r||Array.isArray(r)||"x"in r&&"y"in r){deprecation("6.0.0","BloomFilter constructor params are now options object. See params: { strength, quality, resolution, kernelSize }");let n=r;Array.isArray(n)&&(n={x:n[0],y:n[1]}),r={strength:n},void 0!==t[1]&&(r.quality=t[1]),void 0!==t[2]&&(r.resolution=t[2]),void 0!==t[3]&&(r.kernelSize=t[3])}r={...e.DEFAULT_OPTIONS,...r},super(),__publicField8(this,"_blurXFilter"),__publicField8(this,"_blurYFilter"),__publicField8(this,"_strength"),this._strength={x:2,y:2},r.strength&&("number"==typeof r.strength?(this._strength.x=r.strength,this._strength.y=r.strength):(this._strength.x=r.strength.x,this._strength.y=r.strength.y)),this._blurXFilter=new BlurFilterPass({...r,horizontal:!0,strength:this.strengthX}),this._blurYFilter=new BlurFilterPass({...r,horizontal:!1,strength:this.strengthY}),this._blurYFilter.blendMode="screen",Object.assign(this,r)}apply(t,r,n,i){let a=TexturePool.getSameSizeTexture(r);t.applyFilter(this,r,n,i),this._blurXFilter.apply(t,r,a,!0),this._blurYFilter.apply(t,a,n,!1),TexturePool.returnTexture(a)}get strength(){return this._strength}set strength(t){this._strength="number"==typeof t?{x:t,y:t}:t,this._updateStrength()}get strengthX(){return this.strength.x}set strengthX(t){this.strength.x=t,this._updateStrength()}get strengthY(){return this.strength.y}set strengthY(t){this.strength.y=t,this._updateStrength()}_updateStrength(){this._blurXFilter.blur=this.strengthX,this._blurYFilter.blur=this.strengthY}get blur(){return deprecation("6.0.0","BloomFilter.blur is deprecated, please use BloomFilter.strength instead"),this.strengthX}set blur(t){deprecation("6.0.0","BloomFilter.blur is deprecated, please use BloomFilter.strength instead"),this.strength=t}get blurX(){return deprecation("6.0.0","BloomFilter.blurX is deprecated, please use BloomFilter.strengthX instead"),this.strengthX}set blurX(t){deprecation("6.0.0","BloomFilter.blurX is deprecated, please use BloomFilter.strengthX instead"),this.strengthX=t}get blurY(){return deprecation("6.0.0","BloomFilter.blurY is deprecated, please use BloomFilter.strengthY instead"),this.strengthY}set blurY(t){deprecation("6.0.0","BloomFilter.blurY is deprecated, please use BloomFilter.strengthY instead"),this.strengthY=t}};__publicField8(_BloomFilter,"DEFAULT_OPTIONS",{strength:{x:2,y:2},quality:4,resolution:1,kernelSize:5}),init_globals(),init_globals();var fragment10="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uDimensions;\nuniform vec2 uCenter;\nuniform float uRadius;\nuniform float uStrength;\n\nuniform vec4 uInputSize;\nuniform vec4 uInputClamp;\n\nvoid main()\n{\n vec2 coord = vTextureCoord * uInputSize.xy;\n coord -= uCenter * uDimensions.xy;\n float distance = length(coord);\n\n if (distance < uRadius) {\n float percent = distance / uRadius;\n if (uStrength > 0.0) {\n coord *= mix(1.0, smoothstep(0.0, uRadius / distance, percent), uStrength * 0.75);\n } else {\n coord *= mix(1.0, pow(percent, 1.0 + uStrength * 0.75) * uRadius / distance, 1.0 - percent);\n }\n }\n\n coord += uCenter * uDimensions.xy;\n coord /= uInputSize.xy;\n vec2 clampedCoord = clamp(coord, uInputClamp.xy, uInputClamp.zw);\n vec4 color = texture(uTexture, clampedCoord);\n\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n finalColor = color;\n}\n";init_globals();var source10="struct BulgePinchUniforms {\n uDimensions: vec2<f32>,\n uCenter: vec2<f32>,\n uRadius: f32,\n uStrength: f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> bulgePinchUniforms : BulgePinchUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let dimensions: vec2<f32> = bulgePinchUniforms.uDimensions;\n let center: vec2<f32> = bulgePinchUniforms.uCenter;\n let radius: f32 = bulgePinchUniforms.uRadius;\n let strength: f32 = bulgePinchUniforms.uStrength;\n var coord: vec2<f32> = (uv * gfu.uInputSize.xy) - center * dimensions.xy;\n\n let distance: f32 = length(coord);\n\n if (distance < radius) {\n let percent: f32 = distance / radius;\n if (strength > 0.0) {\n coord *= mix(1.0, smoothstep(0.0, radius / distance, percent), strength * 0.75);\n } else {\n coord *= mix(1.0, pow(percent, 1.0 + strength * 0.75) * radius / distance, 1.0 - percent);\n }\n }\n coord += (center * dimensions.xy);\n coord /= gfu.uInputSize.xy;\n\n let clampedCoord: vec2<f32> = clamp(coord, gfu.uInputClamp.xy, gfu.uInputClamp.zw);\n var color: vec4<f32> = textureSample(uTexture, uSampler, clampedCoord);\n if (coord.x != clampedCoord.x && coord.y != clampedCoord.y) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n return color;\n}\n\nfn compareVec2(x: vec2<f32>, y: vec2<f32>) -> bool\n{\n if (x.x == y.x && x.y == y.y)\n {\n return true;\n }\n\n return false;\n}",__defProp9=Object.defineProperty,__defNormalProp9=(t,r,n)=>r in t?__defProp9(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField9=(t,r,n)=>(__defNormalProp9(t,"symbol"!=typeof r?r+"":r,n),n),_BulgePinchFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source10,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment10,name:"bulge-pinch-filter"}),resources:{bulgePinchUniforms:{uDimensions:{value:[0,0],type:"vec2<f32>"},uCenter:{value:t.center,type:"vec2<f32>"},uRadius:{value:t.radius,type:"f32"},uStrength:{value:t.strength,type:"f32"}}}}),__publicField9(this,"uniforms"),this.uniforms=this.resources.bulgePinchUniforms.uniforms,Object.assign(this,t)}apply(t,r,n,i){this.uniforms.uDimensions[0]=r.frame.width,this.uniforms.uDimensions[1]=r.frame.height,t.applyFilter(this,r,n,i)}get center(){return this.uniforms.uCenter}set center(t){"number"==typeof t&&(t={x:t,y:t}),Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.uniforms.uCenter.x}set centerX(t){this.uniforms.uCenter.x=t}get centerY(){return this.uniforms.uCenter.y}set centerY(t){this.uniforms.uCenter.y=t}get radius(){return this.uniforms.uRadius}set radius(t){this.uniforms.uRadius=t}get strength(){return this.uniforms.uStrength}set strength(t){this.uniforms.uStrength=t}};__publicField9(_BulgePinchFilter,"DEFAULT_OPTIONS",{center:{x:.5,y:.5},radius:100,strength:1}),init_globals(),init_globals();var fragment11="precision highp float;\nin vec2 vTextureCoord;\nin vec2 vFilterCoord;\nout vec4 finalColor;\n\nconst int TYPE_LINEAR = 0;\nconst int TYPE_RADIAL = 1;\nconst int TYPE_CONIC = 2;\nconst int MAX_STOPS = 32;\n\nuniform sampler2D uTexture;\nuniform vec4 uOptions;\nuniform vec2 uCounts;\nuniform vec3 uColors[MAX_STOPS];\nuniform vec4 uStops[MAX_STOPS];\n\nconst float PI = 3.1415926538;\nconst float PI_2 = PI*2.;\n\nstruct ColorStop {\n float offset;\n vec3 color;\n float alpha;\n};\n\nmat2 rotate2d(float angle){\n return mat2(cos(angle), -sin(angle),\n sin(angle), cos(angle));\n}\n\nfloat projectLinearPosition(vec2 pos, float angle){\n vec2 center = vec2(0.5);\n vec2 result = pos - center;\n result = rotate2d(angle) * result;\n result = result + center;\n return clamp(result.x, 0., 1.);\n}\n\nfloat projectRadialPosition(vec2 pos) {\n float r = distance(pos, vec2(0.5));\n return clamp(2.*r, 0., 1.);\n}\n\nfloat projectAnglePosition(vec2 pos, float angle) {\n vec2 center = pos - vec2(0.5);\n float polarAngle=atan(-center.y, center.x);\n return mod(polarAngle + angle, PI_2) / PI_2;\n}\n\nfloat projectPosition(vec2 pos, int type, float angle) {\n if (type == TYPE_LINEAR) {\n return projectLinearPosition(pos, angle);\n } else if (type == TYPE_RADIAL) {\n return projectRadialPosition(pos);\n } else if (type == TYPE_CONIC) {\n return projectAnglePosition(pos, angle);\n }\n\n return pos.y;\n}\n\nvoid main(void) {\n int uType = int(uOptions[0]);\n float uAngle = uOptions[1];\n float uAlpha = uOptions[2];\n float uReplace = uOptions[3];\n\n int uNumStops = int(uCounts[0]);\n float uMaxColors = uCounts[1];\n\n // current/original color\n vec4 currentColor = texture(uTexture, vTextureCoord);\n\n // skip calculations if gradient alpha is 0\n if (0.0 == uAlpha) {\n finalColor = currentColor;\n return;\n }\n\n // project position\n float y = projectPosition(vFilterCoord, int(uType), radians(uAngle));\n\n // check gradient bounds\n float offsetMin = uStops[0][0];\n float offsetMax = 0.0;\n\n int numStops = int(uNumStops);\n\n for (int i = 0; i < MAX_STOPS; i++) {\n if (i == numStops-1){ // last index\n offsetMax = uStops[i][0];\n }\n }\n\n if (y < offsetMin || y > offsetMax) {\n finalColor = currentColor;\n return;\n }\n\n // limit colors\n if (uMaxColors > 0.) {\n float stepSize = 1./uMaxColors;\n float stepNumber = float(floor(y/stepSize));\n y = stepSize * (stepNumber + 0.5);// offset by 0.5 to use color from middle of segment\n }\n\n // find color stops\n ColorStop from;\n ColorStop to;\n\n for (int i = 0; i < MAX_STOPS; i++) {\n if (y >= uStops[i][0]) {\n from = ColorStop(uStops[i][0], uColors[i], uStops[i][1]);\n to = ColorStop(uStops[i+1][0], uColors[i+1], uStops[i+1][1]);\n }\n\n if (i == numStops-1){ // last index\n break;\n }\n }\n\n // mix colors from stops\n vec4 colorFrom = vec4(from.color * from.alpha, from.alpha);\n vec4 colorTo = vec4(to.color * to.alpha, to.alpha);\n\n float segmentHeight = to.offset - from.offset;\n float relativePos = y - from.offset;// position from 0 to [segmentHeight]\n float relativePercent = relativePos / segmentHeight;// position in percent between [from.offset] and [to.offset].\n\n float gradientAlpha = uAlpha * currentColor.a;\n vec4 gradientColor = mix(colorFrom, colorTo, relativePercent) * gradientAlpha;\n\n if (uReplace < 0.5) {\n // mix resulting color with current color\n finalColor = gradientColor + currentColor*(1.-gradientColor.a);\n } else {\n // replace with gradient color\n finalColor = gradientColor;\n }\n}\n";init_globals();var vertex4="in vec2 aPosition;\nout vec2 vTextureCoord;\nout vec2 vFilterCoord;\n\nuniform vec4 uInputSize;\nuniform vec4 uOutputFrame;\nuniform vec4 uOutputTexture;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n \n position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aPosition * (uOutputFrame.zw * uInputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n vFilterCoord = vTextureCoord * uInputSize.xy / uOutputFrame.zw;\n}\n";init_globals();var source11="struct BaseUniforms {\n uOptions: vec4<f32>,\n uCounts: vec2<f32>,\n};\n\nstruct StopsUniforms {\n uColors: array<vec3<f32>, MAX_STOPS>,\n uStops: array<vec4<f32>, MAX_STOPS>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> baseUniforms : BaseUniforms;\n@group(1) @binding(1) var<uniform> stopsUniforms : StopsUniforms;\n\nstruct VSOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n @location(1) coord : vec2<f32>\n};\n\nfn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>\n{\n var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;\n\n position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;\n position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;\n\n return vec4(position, 0.0, 1.0);\n}\n\nfn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);\n}\n\nfn filterCoord( vTextureCoord:vec2<f32> ) -> vec2<f32>\n{\n return vTextureCoord * gfu.uInputSize.xy / gfu.uOutputFrame.zw;\n}\n\nfn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>\n{\n return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw); \n}\n\nfn getSize() -> vec2<f32>\n{\n return gfu.uGlobalFrame.zw;\n}\n \n@vertex\nfn mainVertex(\n @location(0) aPosition : vec2<f32>, \n) -> VSOutput {\n let vTextureCoord: vec2<f32> = filterTextureCoord(aPosition);\n return VSOutput(\n filterVertexPosition(aPosition),\n vTextureCoord,\n filterCoord(vTextureCoord),\n );\n}\n\nstruct ColorStop {\n offset: f32,\n color: vec3<f32>,\n alpha: f32,\n};\n\nfn rotate2d(angle: f32) -> mat2x2<f32>{\n return mat2x2(cos(angle), -sin(angle),\n sin(angle), cos(angle));\n}\n\nfn projectLinearPosition(pos: vec2<f32>, angle: f32) -> f32 {\n var center: vec2<f32> = vec2<f32>(0.5);\n var result: vec2<f32> = pos - center;\n result = rotate2d(angle) * result;\n result = result + center;\n return clamp(result.x, 0.0, 1.0);\n}\n\nfn projectRadialPosition(pos: vec2<f32>) -> f32 {\n var r: f32 = distance(pos, vec2<f32>(0.5));\n return clamp(2.0 * r, 0.0, 1.0);\n}\n\nfn projectAnglePosition(pos: vec2<f32>, angle: f32) -> f32 {\n var center: vec2<f32> = pos - vec2<f32>(0.5, 0.5);\n var polarAngle: f32 = atan2(-center.y, center.x);\n return ((polarAngle + angle) % PI_2) / PI_2;\n}\n\nfn projectPosition(pos: vec2<f32>, gradientType: i32, angle: f32) -> f32 {\n if (gradientType == TYPE_LINEAR) {\n return projectLinearPosition(pos, angle);\n } else if (gradientType == TYPE_RADIAL) {\n return projectRadialPosition(pos);\n } else if (gradientType == TYPE_CONIC) {\n return projectAnglePosition(pos, angle);\n }\n\n return pos.y;\n}\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n @location(1) coord : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uType: i32 = i32(baseUniforms.uOptions[0]);\n let uAngle: f32 = baseUniforms.uOptions[1];\n let uAlpha: f32 = baseUniforms.uOptions[2];\n let uReplace: f32 = baseUniforms.uOptions[3];\n\n let uNumStops: i32 = i32(baseUniforms.uCounts[0]);\n let uMaxColors: f32 = baseUniforms.uCounts[1];\n\n // current/original color\n var currentColor: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n // skip calculations if gradient alpha is 0\n if (uAlpha == 0.0) { return currentColor; }\n\n // project position\n var y: f32 = projectPosition(coord, uType, radians(uAngle));\n\n // check gradient bounds\n var offsetMin: f32 = stopsUniforms.uStops[0][0];\n var offsetMax: f32 = 0.0;\n\n let numStops: i32 = uNumStops;\n\n for (var i: i32 = 0; i < MAX_STOPS; i = i + 1) {\n if (i == numStops - 1) { // last index\n offsetMax = stopsUniforms.uStops[i][0];\n }\n }\n\n if (y < offsetMin || y > offsetMax) { return currentColor; }\n\n // limit colors\n if (uMaxColors > 0.0) {\n var stepSize: f32 = 1.0 / uMaxColors;\n var stepNumber: f32 = floor(y / stepSize);\n y = stepSize * (stepNumber + 0.5); // offset by 0.5 to use color from middle of segment\n }\n\n // find color stops\n var stopFrom: ColorStop;\n var stopTo: ColorStop;\n\n for (var i: i32 = 0; i < MAX_STOPS; i = i + 1) {\n if (y >= stopsUniforms.uStops[i][0]) {\n stopFrom = ColorStop(stopsUniforms.uStops[i][0], stopsUniforms.uColors[i], stopsUniforms.uStops[i][1]);\n stopTo = ColorStop(stopsUniforms.uStops[i + 1][0], stopsUniforms.uColors[i + 1], stopsUniforms.uStops[i + 1][1]);\n }\n\n if (i == numStops - 1) { // last index\n break;\n }\n }\n\n // mix colors from stops\n var colorFrom: vec4<f32> = vec4<f32>(stopFrom.color * stopFrom.alpha, stopFrom.alpha);\n var colorTo: vec4<f32> = vec4<f32>(stopTo.color * stopTo.alpha, stopTo.alpha);\n\n var segmentHeight: f32 = stopTo.offset - stopFrom.offset;\n var relativePos: f32 = y - stopFrom.offset; // position from 0 to [segmentHeight]\n var relativePercent: f32 = relativePos / segmentHeight; // position in percent between [from.offset] and [to.offset].\n\n var gradientAlpha: f32 = uAlpha * currentColor.a;\n var gradientColor: vec4<f32> = mix(colorFrom, colorTo, relativePercent) * gradientAlpha;\n\n if (uReplace < 0.5) {\n // mix resulting color with current color\n return gradientColor + currentColor * (1.0 - gradientColor.a);\n } else {\n // replace with gradient color\n return gradientColor;\n }\n}\n\nconst PI: f32 = 3.14159265358979323846264;\nconst PI_2: f32 = PI * 2.0;\n\nconst TYPE_LINEAR: i32 = 0;\nconst TYPE_RADIAL: i32 = 1;\nconst TYPE_CONIC: i32 = 2;\nconst MAX_STOPS: i32 = 32;";init_globals(),init_globals();var visitor,GradientParser=GradientParser||{};GradientParser.stringify=(visitor={"visit_linear-gradient":function(t){return visitor.visit_gradient(t)},"visit_repeating-linear-gradient":function(t){return visitor.visit_gradient(t)},"visit_radial-gradient":function(t){return visitor.visit_gradient(t)},"visit_repeating-radial-gradient":function(t){return visitor.visit_gradient(t)},visit_gradient:function(t){var r=visitor.visit(t.orientation);return r&&(r+=", "),t.type+"("+r+visitor.visit(t.colorStops)+")"},visit_shape:function(t){var r=t.value,n=visitor.visit(t.at),i=visitor.visit(t.style);return i&&(r+=" "+i),n&&(r+=" at "+n),r},"visit_default-radial":function(t){var r="",n=visitor.visit(t.at);return n&&(r+=n),r},"visit_extent-keyword":function(t){var r=t.value,n=visitor.visit(t.at);return n&&(r+=" at "+n),r},"visit_position-keyword":function(t){return t.value},visit_position:function(t){return visitor.visit(t.value.x)+" "+visitor.visit(t.value.y)},"visit_%":function(t){return t.value+"%"},visit_em:function(t){return t.value+"em"},visit_px:function(t){return t.value+"px"},visit_literal:function(t){return visitor.visit_color(t.value,t)},visit_hex:function(t){return visitor.visit_color("#"+t.value,t)},visit_rgb:function(t){return visitor.visit_color("rgb("+t.value.join(", ")+")",t)},visit_rgba:function(t){return visitor.visit_color("rgba("+t.value.join(", ")+")",t)},visit_color:function(t,r){var n=t,i=visitor.visit(r.length);return i&&(n+=" "+i),n},visit_angular:function(t){return t.value+"deg"},visit_directional:function(t){return"to "+t.value},visit_array:function(t){var r="",n=t.length;return t.forEach(function(t,i){r+=visitor.visit(t),i<n-1&&(r+=", ")}),r},visit:function(t){if(!t)return"";if(t instanceof Array)return visitor.visit_array(t,"");if(t.type){var r=visitor["visit_"+t.type];if(r)return r(t);throw Error("Missing visitor visit_"+t.type)}throw Error("Invalid node.")}},function(t){return visitor.visit(t)});var GradientParser=GradientParser||{};GradientParser.parse=function(){var t=/^(\-(webkit|o|ms|moz)\-)?(linear\-gradient)/i,r=/^(\-(webkit|o|ms|moz)\-)?(repeating\-linear\-gradient)/i,n=/^(\-(webkit|o|ms|moz)\-)?(radial\-gradient)/i,i=/^(\-(webkit|o|ms|moz)\-)?(repeating\-radial\-gradient)/i,a=/^to (left (top|bottom)|right (top|bottom)|left|right|top|bottom)/i,o=/^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,s=/^(left|center|right|top|bottom)/i,l=/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,u=/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))\%/,d=/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))em/,c=/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))deg/,h=/^\(/,f=/^\)/,p=/^,/,m=/^\#([0-9a-fA-F]+)/,g=/^([a-zA-Z]+)/,b=/^rgb/i,y=/^rgba/i,_=/^(([0-9]*\.[0-9]+)|([0-9]+\.?))/,v="";function A(t){var r=Error(v+": "+t);throw r.source=v,r}function w(){var t=O(x);return v.length>0&&A("Invalid input not EOF"),t}function x(){return E("linear-gradient",t,C)||E("repeating-linear-gradient",r,C)||E("radial-gradient",n,I)||E("repeating-radial-gradient",i,I)}function E(t,r,n){return S(r,function(r){var i=n();return i&&(D(p)||A("Missing comma before color stops")),{type:t,orientation:i,colorStops:O(M)}})}function S(t,r){var n=D(t);if(n){D(h)||A("Missing (");var i=r(n);return D(f)||A("Missing )"),i}}function C(){return L("directional",a,1)||L("angular",c,1)}function I(){var t,r,n=T();return n&&((t=[]).push(n),r=v,D(p)&&((n=T())?t.push(n):v=r)),t}function T(){var t=function(){var t=L("shape",/^(circle)/i,0);return t&&(t.style=B()||k()),t}()||function(){var t=L("shape",/^(ellipse)/i,0);return t&&(t.style=N()||k()),t}();if(t)t.at=P();else{var r=k();if(r){t=r;var n=P();n&&(t.at=n)}else{var i=R();i&&(t={type:"default-radial",at:i})}}return t}function k(){return L("extent-keyword",o,1)}function P(){if(L("position",/^at/,0)){var t=R();return t||A("Missing positioning value"),t}}function R(){var t={x:N(),y:N()};if(t.x||t.y)return{type:"position",value:t}}function O(t){var r=t(),n=[];if(r)for(n.push(r);D(p);)(r=t())?n.push(r):A("One extra comma");return n}function M(){var t=L("hex",m,1)||S(y,function(){return{type:"rgba",value:O(j)}})||S(b,function(){return{type:"rgb",value:O(j)}})||L("literal",g,0);return t||A("Expected color definition"),t.length=N(),t}function j(){return D(_)[1]}function N(){return L("%",u,1)||L("position-keyword",s,1)||B()}function B(){return L("px",l,1)||L("em",d,1)}function L(t,r,n){var i=D(r);if(i)return{type:t,value:i[n]}}function D(t){var r,n;return(n=/^[\n\r\t\s]+/.exec(v))&&U(n[0].length),(r=t.exec(v))&&U(r[0].length),r}function U(t){v=v.substr(t)}return function(t){return v=t.toString(),w()}}();var parse5=GradientParser.parse;function parseCssGradient(t){let r=parse5(trimCssGradient(t));if(0===r.length)throw Error("Invalid CSS gradient.");if(1!==r.length)throw Error("Unsupported CSS gradient (multiple gradients is not supported).");let n=r[0];return{type:typeFromCssType(n.type),stops:stopsFromCssStops(n.colorStops),angle:angleFromCssOrientation(n.orientation)}}function typeFromCssType(t){let r={"linear-gradient":0,"radial-gradient":1};if(!(t in r))throw Error(`Unsupported gradient type "${t}"`);return r[t]}function stopsFromCssStops(t){let r=offsetsFromCssColorStops(t),n=[],i=new Color;for(let a=0;a<t.length;a++){let o=colorAsStringFromCssStop(t[a]),s=i.setValue(o).toArray();n.push({offset:r[a],color:s.slice(0,3),alpha:s[3]})}return n}function colorAsStringFromCssStop(t){switch(t.type){case"hex":return`#${t.value}`;case"literal":return t.value;default:return`${t.type}(${t.value.join(",")})`}}function offsetsFromCssColorStops(t){let r=[];for(let n=0;n<t.length;n++){let i=t[n],a=-1;"literal"===i.type&&i.length&&"type"in i.length&&"%"===i.length.type&&"value"in i.length&&(a=parseFloat(i.length.value)/100),r.push(a)}let n=t=>{for(let n=t;n<r.length;n++)if(-1!==r[n])return{indexDelta:n-t,offset:r[n]};return{indexDelta:r.length-1-t,offset:1}},i=0;for(let t=0;t<r.length;t++){let a=r[t];if(-1!==a)i=a;else if(0===t)r[t]=0;else if(t+1===r.length)r[t]=1;else{let a=n(t),o=(a.offset-i)/(1+a.indexDelta);for(let n=0;n<=a.indexDelta;n++)r[t+n]=i+(n+1)*o;t+=a.indexDelta,i=r[t]}}return r.map(fixFloatRounding)}function fixFloatRounding(t){return t.toString().length>6?parseFloat(t.toString().substring(0,6)):t}function angleFromCssOrientation(t){if(void 0===t)return 0;if("type"in t&&"value"in t)switch(t.type){case"angular":return parseFloat(t.value);case"directional":return angleFromDirectionalValue(t.value)}return 0}function angleFromDirectionalValue(t){let r={left:270,top:0,bottom:180,right:90,"left top":315,"top left":315,"left bottom":225,"bottom left":225,"right top":45,"top right":45,"right bottom":135,"bottom right":135};if(!(t in r))throw Error(`Unsupported directional value "${t}"`);return r[t]}function trimCssGradient(t){let r=t.replace(/\s{2,}/gu," ");return(r=(r=(r=(r=r.replace(/;/g,"")).replace(/ ,/g,",")).replace(/\( /g,"(")).replace(/ \)/g,")")).trim()}GradientParser.stringify;var __defProp10=Object.defineProperty,__defNormalProp10=(t,r,n)=>r in t?__defProp10(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField10=(t,r,n)=>(__defNormalProp10(t,"symbol"!=typeof r?r+"":r,n),n),ANGLE_OFFSET=90;function sortColorStops(t){return[...t].sort((t,r)=>t.offset-r.offset)}var _ColorGradientFilter=class e extends Filter{constructor(t){if(!(t=t&&"css"in t?{...parseCssGradient(t.css||""),alpha:t.alpha??e.defaults.alpha,maxColors:t.maxColors??e.defaults.maxColors}:{...e.defaults,...t}).stops||t.stops.length<2)throw Error("ColorGradientFilter requires at least 2 color stops.");super({gpuProgram:GpuProgram.from({vertex:{source:source11,entryPoint:"mainVertex"},fragment:{source:source11,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex4,fragment:fragment11,name:"color-gradient-filter"}),resources:{baseUniforms:{uOptions:{value:[t.type,t.angle??ANGLE_OFFSET,t.alpha,+!!t.replace],type:"vec4<f32>"},uCounts:{value:[t.stops.length,t.maxColors],type:"vec2<f32>"}},stopsUniforms:{uColors:{value:new Float32Array(96),type:"vec3<f32>",size:32},uStops:{value:new Float32Array(128),type:"vec4<f32>",size:32}}}}),__publicField10(this,"baseUniforms"),__publicField10(this,"stopsUniforms"),__publicField10(this,"_stops",[]),this.baseUniforms=this.resources.baseUniforms.uniforms,this.stopsUniforms=this.resources.stopsUniforms.uniforms,Object.assign(this,t)}get stops(){return this._stops}set stops(t){let r,n,i,a=sortColorStops(t),o=new Color;for(let t=0;t<a.length;t++){o.setValue(a[t].color);let s=3*t;[r,n,i]=o.toArray(),this.stopsUniforms.uColors[s]=r,this.stopsUniforms.uColors[s+1]=n,this.stopsUniforms.uColors[s+2]=i,this.stopsUniforms.uStops[4*t]=a[t].offset,this.stopsUniforms.uStops[4*t+1]=a[t].alpha}this.baseUniforms.uCounts[0]=a.length,this._stops=a}get type(){return this.baseUniforms.uOptions[0]}set type(t){this.baseUniforms.uOptions[0]=t}get angle(){return this.baseUniforms.uOptions[1]+ANGLE_OFFSET}set angle(t){this.baseUniforms.uOptions[1]=t-ANGLE_OFFSET}get alpha(){return this.baseUniforms.uOptions[2]}set alpha(t){this.baseUniforms.uOptions[2]=t}get maxColors(){return this.baseUniforms.uCounts[1]}set maxColors(t){this.baseUniforms.uCounts[1]=t}get replace(){return this.baseUniforms.uOptions[3]>.5}set replace(t){this.baseUniforms.uOptions[3]=+!!t}};__publicField10(_ColorGradientFilter,"LINEAR",0),__publicField10(_ColorGradientFilter,"RADIAL",1),__publicField10(_ColorGradientFilter,"CONIC",2),__publicField10(_ColorGradientFilter,"defaults",{type:_ColorGradientFilter.LINEAR,stops:[{offset:0,color:0xff0000,alpha:1},{offset:1,color:255,alpha:1}],alpha:1,angle:90,maxColors:0,replace:!1}),init_globals(),init_globals();var fragment12="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform sampler2D uMapTexture;\nuniform float uMix;\nuniform float uSize;\nuniform float uSliceSize;\nuniform float uSlicePixelSize;\nuniform float uSliceInnerSize;\n\nvoid main() {\n vec4 color = texture(uTexture, vTextureCoord.xy);\n vec4 adjusted;\n\n if (color.a > 0.0) {\n color.rgb /= color.a;\n float innerWidth = uSize - 1.0;\n float zSlice0 = min(floor(color.b * innerWidth), innerWidth);\n float zSlice1 = min(zSlice0 + 1.0, innerWidth);\n float xOffset = uSlicePixelSize * 0.5 + color.r * uSliceInnerSize;\n float s0 = xOffset + (zSlice0 * uSliceSize);\n float s1 = xOffset + (zSlice1 * uSliceSize);\n float yOffset = uSliceSize * 0.5 + color.g * (1.0 - uSliceSize);\n vec4 slice0Color = texture(uMapTexture, vec2(s0,yOffset));\n vec4 slice1Color = texture(uMapTexture, vec2(s1,yOffset));\n float zOffset = fract(color.b * innerWidth);\n adjusted = mix(slice0Color, slice1Color, zOffset);\n\n color.rgb *= color.a;\n }\n\n finalColor = vec4(mix(color, adjusted, uMix).rgb, color.a);\n\n}";init_globals();var source12="struct ColorMapUniforms {\n uMix: f32,\n uSize: f32,\n uSliceSize: f32,\n uSlicePixelSize: f32,\n uSliceInnerSize: f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> colorMapUniforms : ColorMapUniforms;\n@group(1) @binding(1) var uMapTexture: texture_2d<f32>;\n@group(1) @binding(2) var uMapSampler: sampler;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n var color:vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n var adjusted: vec4<f32>;\n\n var altColor: vec4<f32> = vec4<f32>(color.rgb / color.a, color.a);\n let innerWidth: f32 = colorMapUniforms.uSize - 1.0;\n let zSlice0: f32 = min(floor(color.b * innerWidth), innerWidth);\n let zSlice1: f32 = min(zSlice0 + 1.0, innerWidth);\n let xOffset: f32 = colorMapUniforms.uSlicePixelSize * 0.5 + color.r * colorMapUniforms.uSliceInnerSize;\n let s0: f32 = xOffset + (zSlice0 * colorMapUniforms.uSliceSize);\n let s1: f32 = xOffset + (zSlice1 * colorMapUniforms.uSliceSize);\n let yOffset: f32 = colorMapUniforms.uSliceSize * 0.5 + color.g * (1.0 - colorMapUniforms.uSliceSize);\n let slice0Color: vec4<f32> = textureSample(uMapTexture, uMapSampler, vec2(s0,yOffset));\n let slice1Color: vec4<f32> = textureSample(uMapTexture, uMapSampler, vec2(s1,yOffset));\n let zOffset: f32 = fract(color.b * innerWidth);\n adjusted = mix(slice0Color, slice1Color, zOffset);\n altColor = vec4<f32>(color.rgb * color.a, color.a);\n\n let realColor: vec4<f32> = select(color, altColor, color.a > 0.0);\n\n return vec4<f32>(mix(realColor, adjusted, colorMapUniforms.uMix).rgb, realColor.a);\n}",__defProp11=Object.defineProperty,__defNormalProp11=(t,r,n)=>r in t?__defProp11(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField11=(t,r,n)=>(__defNormalProp11(t,"symbol"!=typeof r?r+"":r,n),n),_ColorMapFilter=class e extends Filter{constructor(...t){let r=t[0]??{};if((r instanceof Texture||r instanceof TextureSource)&&(deprecation("6.0.0","ColorMapFilter constructor params are now options object. See params: { colorMap, nearest, mix }"),r={colorMap:r},void 0!==t[1]&&(r.nearest=t[1]),void 0!==t[2]&&(r.mix=t[2])),!(r={...e.DEFAULT_OPTIONS,...r}).colorMap)throw Error("No color map texture source was provided to ColorMapFilter");super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source12,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment12,name:"color-map-filter"}),resources:{colorMapUniforms:{uMix:{value:r.mix,type:"f32"},uSize:{value:0,type:"f32"},uSliceSize:{value:0,type:"f32"},uSlicePixelSize:{value:0,type:"f32"},uSliceInnerSize:{value:0,type:"f32"}},uMapTexture:r.colorMap.source,uMapSampler:r.colorMap.source.style}}),__publicField11(this,"uniforms"),__publicField11(this,"_size",0),__publicField11(this,"_sliceSize",0),__publicField11(this,"_slicePixelSize",0),__publicField11(this,"_sliceInnerSize",0),__publicField11(this,"_nearest",!1),__publicField11(this,"_scaleMode","linear"),__publicField11(this,"_colorMap"),this.uniforms=this.resources.colorMapUniforms.uniforms,Object.assign(this,r)}get mix(){return this.uniforms.uMix}set mix(t){this.uniforms.uMix=t}get colorSize(){return this._size}get colorMap(){return this._colorMap}set colorMap(t){if(!t||t===this.colorMap)return;let r=t instanceof Texture?t.source:t;r.style.scaleMode=this._scaleMode,r.autoGenerateMipmaps=!1,this._size=r.height,this._sliceSize=1/this._size,this._slicePixelSize=this._sliceSize/this._size,this._sliceInnerSize=this._slicePixelSize*(this._size-1),this.uniforms.uSize=this._size,this.uniforms.uSliceSize=this._sliceSize,this.uniforms.uSlicePixelSize=this._slicePixelSize,this.uniforms.uSliceInnerSize=this._sliceInnerSize,this.resources.uMapTexture=r,this._colorMap=t}get nearest(){return this._nearest}set nearest(t){this._nearest=t,this._scaleMode=t?"nearest":"linear";let r=this._colorMap;r&&r.source&&(r.source.scaleMode=this._scaleMode,r.source.autoGenerateMipmaps=!1,r.source.style.update(),r.source.update())}updateColorMap(){let t=this._colorMap;t?.source&&(t.source.update(),this.colorMap=t)}destroy(){this._colorMap?.destroy(),super.destroy()}};__publicField11(_ColorMapFilter,"DEFAULT_OPTIONS",{colorMap:Texture.WHITE,nearest:!1,mix:1}),init_globals(),init_globals();var fragment13="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec3 uColor;\nuniform float uAlpha;\n\nvoid main(void) {\n vec4 c = texture(uTexture, vTextureCoord);\n finalColor = vec4(mix(c.rgb, uColor.rgb, c.a * uAlpha), c.a);\n}\n";init_globals();var source13="struct ColorOverlayUniforms {\n uColor: vec3<f32>,\n uAlpha: f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> colorOverlayUniforms : ColorOverlayUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let c = textureSample(uTexture, uSampler, uv);\n return vec4<f32>(mix(c.rgb, colorOverlayUniforms.uColor.rgb, c.a * colorOverlayUniforms.uAlpha), c.a);\n}\n",__defProp12=Object.defineProperty,__defNormalProp12=(t,r,n)=>r in t?__defProp12(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField12=(t,r,n)=>(__defNormalProp12(t,"symbol"!=typeof r?r+"":r,n),n),_ColorOverlayFilter=class e extends Filter{constructor(...t){let r=t[0]??{};("number"==typeof r||Array.isArray(r)||r instanceof Float32Array)&&(deprecation("6.0.0","ColorOverlayFilter constructor params are now options object. See params: { color, alpha }"),r={color:r},void 0!==t[1]&&(r.alpha=t[1])),super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source13,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment13,name:"color-overlay-filter"}),resources:{colorOverlayUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:(r={...e.DEFAULT_OPTIONS,...r}).alpha,type:"f32"}}}}),__publicField12(this,"uniforms"),__publicField12(this,"_color"),this.uniforms=this.resources.colorOverlayUniforms.uniforms,this._color=new Color,this.color=r.color??0}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}};__publicField12(_ColorOverlayFilter,"DEFAULT_OPTIONS",{color:0,alpha:1}),init_globals(),init_globals();var fragment14="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec3 uOriginalColor;\nuniform vec3 uTargetColor;\nuniform float uTolerance;\n\nvoid main(void) {\n vec4 c = texture(uTexture, vTextureCoord);\n vec3 colorDiff = uOriginalColor - (c.rgb / max(c.a, 0.0000000001));\n float colorDistance = length(colorDiff);\n float doReplace = step(colorDistance, uTolerance);\n finalColor = vec4(mix(c.rgb, (uTargetColor + colorDiff) * c.a, doReplace), c.a);\n}\n";init_globals();var source14="struct ColorReplaceUniforms {\n uOriginalColor: vec3<f32>,\n uTargetColor: vec3<f32>,\n uTolerance: f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> colorReplaceUniforms : ColorReplaceUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let sample: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n let colorDiff: vec3<f32> = colorReplaceUniforms.uOriginalColor - (sample.rgb / max(sample.a, 0.0000000001));\n let colorDistance: f32 = length(colorDiff);\n let doReplace: f32 = step(colorDistance, colorReplaceUniforms.uTolerance);\n\n return vec4<f32>(mix(sample.rgb, (colorReplaceUniforms.uTargetColor + colorDiff) * sample.a, doReplace), sample.a);\n}",__defProp13=Object.defineProperty,__defNormalProp13=(t,r,n)=>r in t?__defProp13(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField13=(t,r,n)=>(__defNormalProp13(t,"symbol"!=typeof r?r+"":r,n),n),_ColorReplaceFilter=class e extends Filter{constructor(...t){let r=t[0]??{};("number"==typeof r||Array.isArray(r)||r instanceof Float32Array)&&(deprecation("6.0.0","ColorReplaceFilter constructor params are now options object. See params: { originalColor, targetColor, tolerance }"),r={originalColor:r},void 0!==t[1]&&(r.targetColor=t[1]),void 0!==t[2]&&(r.tolerance=t[2])),super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source14,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment14,name:"color-replace-filter"}),resources:{colorReplaceUniforms:{uOriginalColor:{value:new Float32Array(3),type:"vec3<f32>"},uTargetColor:{value:new Float32Array(3),type:"vec3<f32>"},uTolerance:{value:(r={...e.DEFAULT_OPTIONS,...r}).tolerance,type:"f32"}}}}),__publicField13(this,"uniforms"),__publicField13(this,"_originalColor"),__publicField13(this,"_targetColor"),this.uniforms=this.resources.colorReplaceUniforms.uniforms,this._originalColor=new Color,this._targetColor=new Color,this.originalColor=r.originalColor??0xff0000,this.targetColor=r.targetColor??0,Object.assign(this,r)}get originalColor(){return this._originalColor.value}set originalColor(t){this._originalColor.setValue(t);let[r,n,i]=this._originalColor.toArray();this.uniforms.uOriginalColor[0]=r,this.uniforms.uOriginalColor[1]=n,this.uniforms.uOriginalColor[2]=i}get targetColor(){return this._targetColor.value}set targetColor(t){this._targetColor.setValue(t);let[r,n,i]=this._targetColor.toArray();this.uniforms.uTargetColor[0]=r,this.uniforms.uTargetColor[1]=n,this.uniforms.uTargetColor[2]=i}get tolerance(){return this.uniforms.uTolerance}set tolerance(t){this.uniforms.uTolerance=t}set newColor(t){deprecation("6.0.0","ColorReplaceFilter.newColor is deprecated, please use ColorReplaceFilter.targetColor instead"),this.targetColor=t}get newColor(){return deprecation("6.0.0","ColorReplaceFilter.newColor is deprecated, please use ColorReplaceFilter.targetColor instead"),this.targetColor}set epsilon(t){deprecation("6.0.0","ColorReplaceFilter.epsilon is deprecated, please use ColorReplaceFilter.tolerance instead"),this.tolerance=t}get epsilon(){return deprecation("6.0.0","ColorReplaceFilter.epsilon is deprecated, please use ColorReplaceFilter.tolerance instead"),this.tolerance}};__publicField13(_ColorReplaceFilter,"DEFAULT_OPTIONS",{originalColor:0xff0000,targetColor:0,tolerance:.4}),init_globals(),init_globals();var fragment15="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uTexelSize;\nuniform mat3 uMatrix;\n\nvoid main(void)\n{\n vec4 c11 = texture(uTexture, vTextureCoord - uTexelSize); // top left\n vec4 c12 = texture(uTexture, vec2(vTextureCoord.x, vTextureCoord.y - uTexelSize.y)); // top center\n vec4 c13 = texture(uTexture, vec2(vTextureCoord.x + uTexelSize.x, vTextureCoord.y - uTexelSize.y)); // top right\n\n vec4 c21 = texture(uTexture, vec2(vTextureCoord.x - uTexelSize.x, vTextureCoord.y)); // mid left\n vec4 c22 = texture(uTexture, vTextureCoord); // mid center\n vec4 c23 = texture(uTexture, vec2(vTextureCoord.x + uTexelSize.x, vTextureCoord.y)); // mid right\n\n vec4 c31 = texture(uTexture, vec2(vTextureCoord.x - uTexelSize.x, vTextureCoord.y + uTexelSize.y)); // bottom left\n vec4 c32 = texture(uTexture, vec2(vTextureCoord.x, vTextureCoord.y + uTexelSize.y)); // bottom center\n vec4 c33 = texture(uTexture, vTextureCoord + uTexelSize); // bottom right\n\n finalColor =\n c11 * uMatrix[0][0] + c12 * uMatrix[0][1] + c13 * uMatrix[0][2] +\n c21 * uMatrix[1][0] + c22 * uMatrix[1][1] + c23 * uMatrix[1][2] +\n c31 * uMatrix[2][0] + c32 * uMatrix[2][1] + c33 * uMatrix[2][2];\n\n finalColor.a = c22.a;\n}";init_globals();var source15="struct ConvolutionUniforms {\n uMatrix: mat3x3<f32>,\n uTexelSize: vec2<f32>,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> convolutionUniforms : ConvolutionUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n let texelSize = convolutionUniforms.uTexelSize;\n let matrix = convolutionUniforms.uMatrix;\n\n let c11: vec4<f32> = textureSample(uTexture, uSampler, uv - texelSize); // top left\n let c12: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x, uv.y - texelSize.y)); // top center\n let c13: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x + texelSize.x, uv.y - texelSize.y)); // top right\n\n let c21: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x - texelSize.x, uv.y)); // mid left\n let c22: vec4<f32> = textureSample(uTexture, uSampler, uv); // mid center\n let c23: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x + texelSize.x, uv.y)); // mid right\n\n let c31: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x - texelSize.x, uv.y + texelSize.y)); // bottom left\n let c32: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x, uv.y + texelSize.y)); // bottom center\n let c33: vec4<f32> = textureSample(uTexture, uSampler, uv + texelSize); // bottom right\n\n var finalColor: vec4<f32> = vec4<f32>(\n c11 * matrix[0][0] + c12 * matrix[0][1] + c13 * matrix[0][2] +\n c21 * matrix[1][0] + c22 * matrix[1][1] + c23 * matrix[1][2] +\n c31 * matrix[2][0] + c32 * matrix[2][1] + c33 * matrix[2][2]\n );\n\n finalColor.a = c22.a;\n\n return finalColor;\n}",__defProp14=Object.defineProperty,__defNormalProp14=(t,r,n)=>r in t?__defProp14(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField14=(t,r,n)=>(__defNormalProp14(t,"symbol"!=typeof r?r+"":r,n),n),_ConvolutionFilter=class e extends Filter{constructor(...t){let r=t[0]??{};Array.isArray(r)&&(deprecation("6.0.0","ConvolutionFilter constructor params are now options object. See params: { matrix, width, height }"),r={matrix:r},void 0!==t[1]&&(r.width=t[1]),void 0!==t[2]&&(r.height=t[2]));let n=(r={...e.DEFAULT_OPTIONS,...r}).width??200,i=r.height??200;super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source15,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment15,name:"convolution-filter"}),resources:{convolutionUniforms:{uMatrix:{value:r.matrix,type:"mat3x3<f32>"},uTexelSize:{value:{x:1/n,y:1/i},type:"vec2<f32>"}}}}),__publicField14(this,"uniforms"),this.uniforms=this.resources.convolutionUniforms.uniforms,this.width=n,this.height=i}get matrix(){return this.uniforms.uMatrix}set matrix(t){t.forEach((t,r)=>{this.uniforms.uMatrix[r]=t})}get width(){return 1/this.uniforms.uTexelSize.x}set width(t){this.uniforms.uTexelSize.x=1/t}get height(){return 1/this.uniforms.uTexelSize.y}set height(t){this.uniforms.uTexelSize.y=1/t}};__publicField14(_ConvolutionFilter,"DEFAULT_OPTIONS",{matrix:new Float32Array(9),width:200,height:200}),init_globals(),init_globals(),init_globals(),init_globals(),init_globals();var fragment17="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec4 uLine;\nuniform vec2 uNoise;\nuniform vec3 uVignette;\nuniform float uSeed;\nuniform float uTime;\nuniform vec2 uDimensions;\n\nuniform vec4 uInputSize;\n\nconst float SQRT_2 = 1.414213;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nfloat vignette(vec3 co, vec2 coord)\n{\n float outter = SQRT_2 - uVignette[0] * SQRT_2;\n vec2 dir = vec2(0.5) - coord;\n dir.y *= uDimensions.y / uDimensions.x;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + uVignette[2] * SQRT_2), 0.0, 1.0);\n return darker + (1.0 - darker) * (1.0 - uVignette[1]);\n}\n\nfloat noise(vec2 coord)\n{\n vec2 pixelCoord = coord * uInputSize.xy;\n pixelCoord.x = floor(pixelCoord.x / uNoise[1]);\n pixelCoord.y = floor(pixelCoord.y / uNoise[1]);\n return (rand(pixelCoord * uNoise[1] * uSeed) - 0.5) * uNoise[0];\n}\n\nvec3 interlaceLines(vec3 co, vec2 coord)\n{\n vec3 color = co;\n\n float curvature = uLine[0];\n float lineWidth = uLine[1];\n float lineContrast = uLine[2];\n float verticalLine = uLine[3];\n\n vec2 dir = vec2(coord * uInputSize.xy / uDimensions - 0.5);\n\n float _c = curvature > 0. ? curvature : 1.;\n float k = curvature > 0. ? (length(dir * dir) * 0.25 * _c * _c + 0.935 * _c) : 1.;\n vec2 uv = dir * k;\n float v = verticalLine > 0.5 ? uv.x * uDimensions.x : uv.y * uDimensions.y;\n v *= min(1.0, 2.0 / lineWidth ) / _c;\n float j = 1. + cos(v * 1.2 - uTime) * 0.5 * lineContrast;\n color *= j;\n\n float segment = verticalLine > 0.5 ? mod((dir.x + .5) * uDimensions.x, 4.) : mod((dir.y + .5) * uDimensions.y, 4.);\n color *= 0.99 + ceil(segment) * 0.015;\n\n return color;\n}\n\nvoid main(void)\n{\n finalColor = texture(uTexture, vTextureCoord);\n vec2 coord = vTextureCoord * uInputSize.xy / uDimensions;\n\n if (uNoise[0] > 0.0 && uNoise[1] > 0.0)\n {\n float n = noise(vTextureCoord);\n finalColor += vec4(n, n, n, finalColor.a);\n }\n\n if (uVignette[0] > 0.)\n {\n float v = vignette(finalColor.rgb, coord);\n finalColor *= vec4(v, v, v, finalColor.a);\n }\n\n if (uLine[1] > 0.0)\n {\n finalColor = vec4(interlaceLines(finalColor.rgb, vTextureCoord), finalColor.a); \n }\n}\n";init_globals();var source17="struct CRTUniforms {\n uLine: vec4<f32>,\n uNoise: vec2<f32>,\n uVignette: vec3<f32>,\n uSeed: f32,\n uTime: f32,\n uDimensions: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> crtUniforms : CRTUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n \n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let coord: vec2<f32> = uv * gfu.uInputSize.xy / crtUniforms.uDimensions;\n\n let uNoise = crtUniforms.uNoise;\n\n if (uNoise[0] > 0.0 && uNoise[1] > 0.0)\n {\n color += vec4<f32>(vec3<f32>(noise(uv)), color.a);\n }\n\n if (crtUniforms.uVignette[0] > 0.)\n {\n color *= vec4<f32>(vec3<f32>(vignette(color.rgb, coord)), color.a);\n }\n\n if (crtUniforms.uLine[1] > 0.0)\n {\n color = vec4<f32>(vec3<f32>(interlaceLines(color.rgb, uv)), color.a); \n }\n\n return color;\n}\n\nconst SQRT_2: f32 = 1.414213;\n\nfn modulo(x: f32, y: f32) -> f32\n{\n return x - y * floor(x/y);\n}\n\nfn rand(co: vec2<f32>) -> f32\n{\n return fract(sin(dot(co, vec2<f32>(12.9898, 78.233))) * 43758.5453);\n}\n\nfn vignette(co: vec3<f32>, coord: vec2<f32>) -> f32\n{\n let uVignette = crtUniforms.uVignette;\n let uDimensions = crtUniforms.uDimensions;\n \n let outter: f32 = SQRT_2 - uVignette[0] * SQRT_2;\n var dir: vec2<f32> = vec2<f32>(0.5) - coord;\n dir.y *= uDimensions.y / uDimensions.x;\n let darker: f32 = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + uVignette[2] * SQRT_2), 0.0, 1.0);\n return darker + (1.0 - darker) * (1.0 - uVignette[1]);\n}\n\nfn noise(coord: vec2<f32>) -> f32\n{\n let uNoise = crtUniforms.uNoise;\n let uSeed = crtUniforms.uSeed;\n\n var pixelCoord: vec2<f32> = coord * gfu.uInputSize.xy;\n pixelCoord.x = floor(pixelCoord.x / uNoise[1]);\n pixelCoord.y = floor(pixelCoord.y / uNoise[1]);\n return (rand(pixelCoord * uNoise[1] * uSeed) - 0.5) * uNoise[0];\n}\n\nfn interlaceLines(co: vec3<f32>, coord: vec2<f32>) -> vec3<f32>\n{\n var color = co;\n\n let uDimensions = crtUniforms.uDimensions;\n\n let curvature: f32 = crtUniforms.uLine[0];\n let lineWidth: f32 = crtUniforms.uLine[1];\n let lineContrast: f32 = crtUniforms.uLine[2];\n let verticalLine: f32 = crtUniforms.uLine[3];\n\n let dir: vec2<f32> = vec2<f32>(coord * gfu.uInputSize.xy / uDimensions - 0.5);\n\n let _c: f32 = select(1., curvature, curvature > 0.);\n let k: f32 = select(1., (length(dir * dir) * 0.25 * _c * _c + 0.935 * _c), curvature > 0.);\n let uv: vec2<f32> = dir * k;\n let v: f32 = select(uv.y * uDimensions.y, uv.x * uDimensions.x, verticalLine > 0.5) * min(1.0, 2.0 / lineWidth ) / _c;\n let j: f32 = 1. + cos(v * 1.2 - crtUniforms.uTime) * 0.5 * lineContrast;\n color *= j;\n\n let segment: f32 = select(modulo((dir.y + .5) * uDimensions.y, 4.), modulo((dir.x + .5) * uDimensions.x, 4.), verticalLine > 0.5);\n color *= 0.99 + ceil(segment) * 0.015;\n\n return color;\n}",__defProp15=Object.defineProperty,__defNormalProp15=(t,r,n)=>r in t?__defProp15(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField15=(t,r,n)=>(__defNormalProp15(t,"symbol"!=typeof r?r+"":r,n),n),_CRTFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source17,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment17,name:"crt-filter"}),resources:{crtUniforms:{uLine:{value:new Float32Array(4),type:"vec4<f32>"},uNoise:{value:new Float32Array(2),type:"vec2<f32>"},uVignette:{value:new Float32Array(3),type:"vec3<f32>"},uSeed:{value:t.seed,type:"f32"},uTime:{value:t.time,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField15(this,"uniforms"),__publicField15(this,"seed"),__publicField15(this,"time"),this.uniforms=this.resources.crtUniforms.uniforms,Object.assign(this,t)}apply(t,r,n,i){this.uniforms.uDimensions[0]=r.frame.width,this.uniforms.uDimensions[1]=r.frame.height,this.uniforms.uSeed=this.seed,this.uniforms.uTime=this.time,t.applyFilter(this,r,n,i)}get curvature(){return this.uniforms.uLine[0]}set curvature(t){this.uniforms.uLine[0]=t}get lineWidth(){return this.uniforms.uLine[1]}set lineWidth(t){this.uniforms.uLine[1]=t}get lineContrast(){return this.uniforms.uLine[2]}set lineContrast(t){this.uniforms.uLine[2]=t}get verticalLine(){return this.uniforms.uLine[3]>.5}set verticalLine(t){this.uniforms.uLine[3]=+!!t}get noise(){return this.uniforms.uNoise[0]}set noise(t){this.uniforms.uNoise[0]=t}get noiseSize(){return this.uniforms.uNoise[1]}set noiseSize(t){this.uniforms.uNoise[1]=t}get vignetting(){return this.uniforms.uVignette[0]}set vignetting(t){this.uniforms.uVignette[0]=t}get vignettingAlpha(){return this.uniforms.uVignette[1]}set vignettingAlpha(t){this.uniforms.uVignette[1]=t}get vignettingBlur(){return this.uniforms.uVignette[2]}set vignettingBlur(t){this.uniforms.uVignette[2]=t}};__publicField15(_CRTFilter,"DEFAULT_OPTIONS",{curvature:1,lineWidth:1,lineContrast:.25,verticalLine:!1,noise:0,noiseSize:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,time:0,seed:0}),init_globals(),init_globals();var fragment18="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uAngle;\nuniform float uScale;\nuniform bool uGrayScale;\n\nuniform vec4 uInputSize;\n\nfloat pattern()\n{\n float s = sin(uAngle), c = cos(uAngle);\n vec2 tex = vTextureCoord * uInputSize.xy;\n vec2 point = vec2(\n c * tex.x - s * tex.y,\n s * tex.x + c * tex.y\n ) * uScale;\n return (sin(point.x) * sin(point.y)) * 4.0;\n }\n\n void main()\n {\n vec4 color = texture(uTexture, vTextureCoord);\n vec3 colorRGB = vec3(color);\n\n if (uGrayScale)\n {\n colorRGB = vec3(color.r + color.g + color.b) / 3.0;\n }\n\n finalColor = vec4(colorRGB * 10.0 - 5.0 + pattern(), color.a);\n}\n";init_globals();var source18="struct DotUniforms {\n uScale:f32,\n uAngle:f32,\n uGrayScale:f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> dotUniforms : DotUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n let color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let gray: vec3<f32> = vec3<f32>(dot(color.rgb, vec3<f32>(0.299, 0.587, 0.114)));\n // dotUniforms.uGrayScale == 1 doesn't ever pass so it is converted to a float and compared to 0.5 instead \n let finalColor: vec3<f32> = select(color.rgb, gray, f32(dotUniforms.uGrayScale) >= 0.5);\n\n return vec4<f32>(finalColor * 10.0 - 5.0 + pattern(uv), color.a);\n}\n\nfn pattern(uv: vec2<f32>) -> f32\n{\n let s: f32 = sin(dotUniforms.uAngle);\n let c: f32 = cos(dotUniforms.uAngle);\n \n let tex: vec2<f32> = uv * gfu.uInputSize.xy;\n \n let p: vec2<f32> = vec2<f32>(\n c * tex.x - s * tex.y,\n s * tex.x + c * tex.y\n ) * dotUniforms.uScale;\n\n return (sin(p.x) * sin(p.y)) * 4.0;\n}",__defProp16=Object.defineProperty,__defNormalProp16=(t,r,n)=>r in t?__defProp16(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField16=(t,r,n)=>(__defNormalProp16(t,"symbol"!=typeof r?r+"":r,n),n),_DotFilter=class e extends Filter{constructor(...t){let r=t[0]??{};"number"==typeof r&&(deprecation("6.0.0","DotFilter constructor params are now options object. See params: { scale, angle, grayscale }"),r={scale:r},void 0!==t[1]&&(r.angle=t[1]),void 0!==t[2]&&(r.grayscale=t[2])),super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source18,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment18,name:"dot-filter"}),resources:{dotUniforms:{uScale:{value:(r={...e.DEFAULT_OPTIONS,...r}).scale,type:"f32"},uAngle:{value:r.angle,type:"f32"},uGrayScale:{value:+!!r.grayscale,type:"f32"}}}})}get scale(){return this.resources.dotUniforms.uniforms.uScale}set scale(t){this.resources.dotUniforms.uniforms.uScale=t}get angle(){return this.resources.dotUniforms.uniforms.uAngle}set angle(t){this.resources.dotUniforms.uniforms.uAngle=t}get grayscale(){return 1===this.resources.dotUniforms.uniforms.uGrayScale}set grayscale(t){this.resources.dotUniforms.uniforms.uGrayScale=+!!t}};__publicField16(_DotFilter,"DEFAULT_OPTIONS",{scale:1,angle:5,grayscale:!0}),init_globals(),init_globals();var fragment19="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uAlpha;\nuniform vec3 uColor;\nuniform vec2 uOffset;\n\nuniform vec4 uInputSize;\n\nvoid main(void){\n vec4 sample = texture(uTexture, vTextureCoord - uOffset * uInputSize.zw);\n\n // Premultiply alpha\n sample.rgb = uColor.rgb * sample.a;\n\n // alpha user alpha\n sample *= uAlpha;\n\n finalColor = sample;\n}";init_globals();var source19="struct DropShadowUniforms {\n uAlpha: f32,\n uColor: vec3<f32>,\n uOffset: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> dropShadowUniforms : DropShadowUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n var color: vec4<f32> = textureSample(uTexture, uSampler, uv - dropShadowUniforms.uOffset * gfu.uInputSize.zw);\n\n // Premultiply alpha\n color = vec4<f32>(vec3<f32>(dropShadowUniforms.uColor.rgb * color.a), color.a);\n // alpha user alpha\n color *= dropShadowUniforms.uAlpha;\n\n return color;\n}",__defProp17=Object.defineProperty,__defNormalProp17=(t,r,n)=>r in t?__defProp17(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField17=(t,r,n)=>(__defNormalProp17(t,"symbol"!=typeof r?r+"":r,n),n),_DropShadowFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source19,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment19,name:"drop-shadow-filter"}),resources:{dropShadowUniforms:{uAlpha:{value:t.alpha,type:"f32"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uOffset:{value:t.offset,type:"vec2<f32>"}}},resolution:t.resolution}),__publicField17(this,"uniforms"),__publicField17(this,"shadowOnly",!1),__publicField17(this,"_color"),__publicField17(this,"_blurFilter"),__publicField17(this,"_basePass"),this.uniforms=this.resources.dropShadowUniforms.uniforms,this._color=new Color,this.color=t.color??0,this._blurFilter=new KawaseBlurFilter({strength:t.kernels??t.blur,quality:t.kernels?void 0:t.quality}),this._basePass=new Filter({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:"\n @group(0) @binding(1) var uTexture: texture_2d<f32>; \n @group(0) @binding(2) var uSampler: sampler;\n @fragment\n fn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n ) -> @location(0) vec4<f32> {\n return textureSample(uTexture, uSampler, uv);\n }\n ",entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:"\n in vec2 vTextureCoord;\n out vec4 finalColor;\n uniform sampler2D uTexture;\n\n void main(void){\n finalColor = texture(uTexture, vTextureCoord);\n }\n ",name:"drop-shadow-filter"}),resources:{}}),Object.assign(this,t)}apply(t,r,n,i){let a=TexturePool.getSameSizeTexture(r);t.applyFilter(this,r,a,!0),this._blurFilter.apply(t,a,n,i),this.shadowOnly||t.applyFilter(this._basePass,r,n,!1),TexturePool.returnTexture(a)}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t,this._updatePadding()}get offsetX(){return this.offset.x}set offsetX(t){this.offset.x=t,this._updatePadding()}get offsetY(){return this.offset.y}set offsetY(t){this.offset.y=t,this._updatePadding()}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}get blur(){return this._blurFilter.strength}set blur(t){this._blurFilter.strength=t,this._updatePadding()}get quality(){return this._blurFilter.quality}set quality(t){this._blurFilter.quality=t,this._updatePadding()}get kernels(){return this._blurFilter.kernels}set kernels(t){this._blurFilter.kernels=t}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(t){"number"==typeof t&&(t={x:t,y:t}),Array.isArray(t)&&(t={x:t[0],y:t[1]}),this._blurFilter.pixelSize=t}get pixelSizeX(){return this._blurFilter.pixelSizeX}set pixelSizeX(t){this._blurFilter.pixelSizeX=t}get pixelSizeY(){return this._blurFilter.pixelSizeY}set pixelSizeY(t){this._blurFilter.pixelSizeY=t}_updatePadding(){let t=Math.max(Math.abs(this.offsetX),Math.abs(this.offsetY));this.padding=t+2*this.blur+4*this.quality}};__publicField17(_DropShadowFilter,"DEFAULT_OPTIONS",{offset:{x:4,y:4},color:0,alpha:.5,shadowOnly:!1,kernels:void 0,blur:2,quality:3,pixelSize:{x:1,y:1},resolution:1});var DropShadowFilter=_DropShadowFilter;init_globals(),init_globals(),init_globals(),init_globals(),init_globals();var fragment21="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform sampler2D uDisplacementMap;\nuniform float uSeed;\nuniform vec2 uDimensions;\nuniform float uAspect;\nuniform float uFillMode;\nuniform float uOffset;\nuniform float uDirection;\nuniform vec2 uRed;\nuniform vec2 uGreen;\nuniform vec2 uBlue;\n\nuniform vec4 uInputSize;\nuniform vec4 uInputClamp;\n\nconst int TRANSPARENT = 0;\nconst int ORIGINAL = 1;\nconst int LOOP = 2;\nconst int CLAMP = 3;\nconst int MIRROR = 4;\n\nvoid main(void)\n{\n vec2 coord = (vTextureCoord * uInputSize.xy) / uDimensions;\n\n if (coord.x > 1.0 || coord.y > 1.0) {\n return;\n }\n\n float sinDir = sin(uDirection);\n float cosDir = cos(uDirection);\n\n float cx = coord.x - 0.5;\n float cy = (coord.y - 0.5) * uAspect;\n float ny = (-sinDir * cx + cosDir * cy) / uAspect + 0.5;\n\n // displacementMap: repeat\n // ny = ny > 1.0 ? ny - 1.0 : (ny < 0.0 ? 1.0 + ny : ny);\n\n // displacementMap: mirror\n ny = ny > 1.0 ? 2.0 - ny : (ny < 0.0 ? -ny : ny);\n\n vec4 dc = texture(uDisplacementMap, vec2(0.5, ny));\n\n float displacement = (dc.r - dc.g) * (uOffset / uInputSize.x);\n\n coord = vTextureCoord + vec2(cosDir * displacement, sinDir * displacement * uAspect);\n\n int fillMode = int(uFillMode);\n\n if (fillMode == CLAMP) {\n coord = clamp(coord, uInputClamp.xy, uInputClamp.zw);\n } else {\n if( coord.x > uInputClamp.z ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x -= uInputClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = uInputClamp.z * 2.0 - coord.x;\n }\n } else if( coord.x < uInputClamp.x ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.x += uInputClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x *= -uInputClamp.z;\n }\n }\n\n if( coord.y > uInputClamp.w ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y -= uInputClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = uInputClamp.w * 2.0 - coord.y;\n }\n } else if( coord.y < uInputClamp.y ) {\n if (fillMode == TRANSPARENT) {\n discard;\n } else if (fillMode == LOOP) {\n coord.y += uInputClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y *= -uInputClamp.w;\n }\n }\n }\n\n finalColor.r = texture(uTexture, coord + uRed * (1.0 - uSeed * 0.4) / uInputSize.xy).r;\n finalColor.g = texture(uTexture, coord + uGreen * (1.0 - uSeed * 0.3) / uInputSize.xy).g;\n finalColor.b = texture(uTexture, coord + uBlue * (1.0 - uSeed * 0.2) / uInputSize.xy).b;\n finalColor.a = texture(uTexture, coord).a;\n}\n";init_globals();var source21="struct GlitchUniforms {\n uSeed: f32,\n uDimensions: vec2<f32>,\n uAspect: f32,\n uFillMode: f32,\n uOffset: f32,\n uDirection: f32,\n uRed: vec2<f32>,\n uGreen: vec2<f32>,\n uBlue: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> glitchUniforms : GlitchUniforms;\n@group(1) @binding(1) var uDisplacementMap: texture_2d<f32>; \n@group(1) @binding(2) var uDisplacementSampler: sampler; \n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uSeed: f32 = glitchUniforms.uSeed;\n let uDimensions: vec2<f32> = glitchUniforms.uDimensions;\n let uAspect: f32 = glitchUniforms.uAspect;\n let uOffset: f32 = glitchUniforms.uOffset;\n let uDirection: f32 = glitchUniforms.uDirection;\n let uRed: vec2<f32> = glitchUniforms.uRed;\n let uGreen: vec2<f32> = glitchUniforms.uGreen;\n let uBlue: vec2<f32> = glitchUniforms.uBlue;\n\n let uInputSize: vec4<f32> = gfu.uInputSize;\n let uInputClamp: vec4<f32> = gfu.uInputClamp;\n\n var discarded: bool = false;\n var coord: vec2<f32> = (uv * uInputSize.xy) / uDimensions;\n\n if (coord.x > 1.0 || coord.y > 1.0) {\n discarded = true;\n }\n\n let sinDir: f32 = sin(uDirection);\n let cosDir: f32 = cos(uDirection);\n\n let cx: f32 = coord.x - 0.5;\n let cy: f32 = (coord.y - 0.5) * uAspect;\n var ny: f32 = (-sinDir * cx + cosDir * cy) / uAspect + 0.5;\n\n ny = select(select(ny, -ny, ny < 0.0), 2.0 - ny, ny > 1.0);\n\n let dc: vec4<f32> = textureSample(uDisplacementMap, uDisplacementSampler, vec2<f32>(0.5, ny));\n\n let displacement: f32 = (dc.r - dc.g) * (uOffset / uInputSize.x);\n\n coord = uv + vec2<f32>(cosDir * displacement, sinDir * displacement * uAspect);\n\n let fillMode: i32 = i32(glitchUniforms.uFillMode);\n\n if (fillMode == CLAMP) {\n coord = clamp(coord, uInputClamp.xy, uInputClamp.zw);\n } else {\n if (coord.x > uInputClamp.z) {\n if (fillMode == TRANSPARENT) {\n discarded = true;\n } else if (fillMode == LOOP) {\n coord.x = coord.x - uInputClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = uInputClamp.z * 2.0 - coord.x;\n }\n } else if (coord.x < uInputClamp.x) {\n if (fillMode == TRANSPARENT) {\n discarded = true;\n } else if (fillMode == LOOP) {\n coord.x = coord.x + uInputClamp.z;\n } else if (fillMode == MIRROR) {\n coord.x = coord.x * -uInputClamp.z;\n }\n }\n\n if (coord.y > uInputClamp.w) {\n if (fillMode == TRANSPARENT) {\n discarded = true;\n } else if (fillMode == LOOP) {\n coord.y = coord.y - uInputClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = uInputClamp.w * 2.0 - coord.y;\n }\n } else if (coord.y < uInputClamp.y) {\n if (fillMode == TRANSPARENT) {\n discarded = true;\n } else if (fillMode == LOOP) {\n coord.y = coord.y + uInputClamp.w;\n } else if (fillMode == MIRROR) {\n coord.y = coord.y * -uInputClamp.w;\n }\n }\n }\n\n let seedR: f32 = 1.0 - uSeed * 0.4;\n let seedG: f32 = 1.0 - uSeed * 0.3;\n let seedB: f32 = 1.0 - uSeed * 0.2;\n\n let offsetR: vec2<f32> = vec2(uRed.x * seedR / uInputSize.x, uRed.y * seedR / uInputSize.y);\n let offsetG: vec2<f32> = vec2(uGreen.x * seedG / uInputSize.x, uGreen.y * seedG / uInputSize.y);\n let offsetB: vec2<f32> = vec2(uBlue.x * seedB / uInputSize.x, uBlue.y * seedB / uInputSize.y);\n\n let r = textureSample(uTexture, uSampler, coord + offsetR).r;\n let g = textureSample(uTexture, uSampler, coord + offsetG).g;\n let b = textureSample(uTexture, uSampler, coord + offsetB).b;\n let a = textureSample(uTexture, uSampler, coord).a;\n\n return select(vec4<f32>(r, g, b, a), vec4<f32>(0.0,0.0,0.0,0.0), discarded);\n}\n\nconst TRANSPARENT: i32 = 0;\nconst ORIGINAL: i32 = 1;\nconst LOOP: i32 = 2;\nconst CLAMP: i32 = 3;\nconst MIRROR: i32 = 4;",__defProp18=Object.defineProperty,__defNormalProp18=(t,r,n)=>r in t?__defProp18(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField18=(t,r,n)=>(__defNormalProp18(t,"symbol"!=typeof r?r+"":r,n),n),_GlitchFilter=class e extends Filter{constructor(t){t={...e.defaults,...t};let r=GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source21,entryPoint:"mainFragment"}}),n=GlProgram.from({vertex:vertex3,fragment:fragment21,name:"glitch-filter"}),i=document.createElement("canvas");i.width=4,i.height=t.sampleSize??512;let a=new Texture({source:new ImageSource({resource:i})});super({gpuProgram:r,glProgram:n,resources:{glitchUniforms:{uSeed:{value:t?.seed??0,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"},uAspect:{value:1,type:"f32"},uFillMode:{value:t?.fillMode??0,type:"f32"},uOffset:{value:t?.offset??100,type:"f32"},uDirection:{value:t?.direction??0,type:"f32"},uRed:{value:t.red,type:"vec2<f32>"},uGreen:{value:t.green,type:"vec2<f32>"},uBlue:{value:t.blue,type:"vec2<f32>"}},uDisplacementMap:a.source,uDisplacementSampler:a.source.style}}),__publicField18(this,"uniforms"),__publicField18(this,"average",!1),__publicField18(this,"minSize",8),__publicField18(this,"sampleSize",512),__publicField18(this,"_canvas"),__publicField18(this,"texture"),__publicField18(this,"_slices",0),__publicField18(this,"_sizes",new Float32Array(1)),__publicField18(this,"_offsets",new Float32Array(1)),this.uniforms=this.resources.glitchUniforms.uniforms,this._canvas=i,this.texture=a,Object.assign(this,t)}apply(t,r,n,i){let{width:a,height:o}=r.frame;this.uniforms.uDimensions[0]=a,this.uniforms.uDimensions[1]=o,this.uniforms.uAspect=o/a,t.applyFilter(this,r,n,i)}_randomizeSizes(){let t=this._sizes,r=this._slices-1,n=this.sampleSize,i=Math.min(this.minSize/n,.9/this._slices);if(this.average){let n=this._slices,a=1;for(let o=0;o<r;o++){let r=Math.max(a/(n-o)*(1-.6*Math.random()),i);t[o]=r,a-=r}t[r]=a}else{let n=1,a=Math.sqrt(1/this._slices);for(let o=0;o<r;o++){let r=Math.max(a*n*Math.random(),i);t[o]=r,n-=r}t[r]=n}this.shuffle()}shuffle(){let t=this._sizes;for(let r=this._slices-1;r>0;r--){let n=Math.random()*r|0,i=t[r];t[r]=t[n],t[n]=i}}_randomizeOffsets(){for(let t=0;t<this._slices;t++)this._offsets[t]=Math.random()*(.5>Math.random()?-1:1)}refresh(){this._randomizeSizes(),this._randomizeOffsets(),this.redraw()}redraw(){let t,r=this.sampleSize,n=this.texture,i=this._canvas.getContext("2d");i.clearRect(0,0,8,r);let a=0;for(let n=0;n<this._slices;n++){t=Math.floor(256*this._offsets[n]);let o=this._sizes[n]*r,s=t>0?t:0,l=t<0?-t:0;i.fillStyle=`rgba(${s}, ${l}, 0, 1)`,i.fillRect(0,0|a,r,o+1|0),a+=o}n.source.update()}set sizes(t){let r=Math.min(this._slices,t.length);for(let n=0;n<r;n++)this._sizes[n]=t[n]}get sizes(){return this._sizes}set offsets(t){let r=Math.min(this._slices,t.length);for(let n=0;n<r;n++)this._offsets[n]=t[n]}get offsets(){return this._offsets}get slices(){return this._slices}set slices(t){this._slices!==t&&(this._slices=t,this._sizes=new Float32Array(t),this._offsets=new Float32Array(t),this.refresh())}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t}get seed(){return this.uniforms.uSeed}set seed(t){this.uniforms.uSeed=t}get fillMode(){return this.uniforms.uFillMode}set fillMode(t){this.uniforms.uFillMode=t}get direction(){return this.uniforms.uDirection/DEG_TO_RAD}set direction(t){this.uniforms.uDirection=t*DEG_TO_RAD}get red(){return this.uniforms.uRed}set red(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uRed=t}get green(){return this.uniforms.uGreen}set green(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uGreen=t}get blue(){return this.uniforms.uBlue}set blue(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uBlue=t}destroy(){this.texture?.destroy(!0),this.texture=this._canvas=this.red=this.green=this.blue=this._sizes=this._offsets=null}};__publicField18(_GlitchFilter,"defaults",{slices:5,offset:100,direction:0,fillMode:0,average:!1,seed:0,red:{x:0,y:0},green:{x:0,y:0},blue:{x:0,y:0},minSize:8,sampleSize:512}),init_globals(),init_globals();var fragment22="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uStrength;\nuniform vec3 uColor;\nuniform float uKnockout;\nuniform float uAlpha;\n\nuniform vec4 uInputSize;\nuniform vec4 uInputClamp;\n\nconst float PI = 3.14159265358979323846264;\n\n// Hard-assignment of DIST and ANGLE_STEP_SIZE instead of using uDistance and uQuality to allow them to be use on GLSL loop conditions\nconst float DIST = __DIST__;\nconst float ANGLE_STEP_SIZE = min(__ANGLE_STEP_SIZE__, PI * 2.);\nconst float ANGLE_STEP_NUM = ceil(PI * 2. / ANGLE_STEP_SIZE);\nconst float MAX_TOTAL_ALPHA = ANGLE_STEP_NUM * DIST * (DIST + 1.) / 2.;\n\nvoid main(void) {\n vec2 px = vec2(1.) / uInputSize.xy;\n\n float totalAlpha = 0.;\n\n vec2 direction;\n vec2 displaced;\n vec4 curColor;\n\n for (float angle = 0.; angle < PI * 2.; angle += ANGLE_STEP_SIZE) {\n direction = vec2(cos(angle), sin(angle)) * px;\n\n for (float curDistance = 0.; curDistance < DIST; curDistance++) {\n displaced = clamp(vTextureCoord + direction * (curDistance + 1.), uInputClamp.xy, uInputClamp.zw);\n curColor = texture(uTexture, displaced);\n totalAlpha += (DIST - curDistance) * curColor.a;\n }\n }\n \n curColor = texture(uTexture, vTextureCoord);\n\n vec4 glowColor = vec4(uColor, uAlpha);\n bool knockout = uKnockout > .5;\n float innerStrength = uStrength[0];\n float outerStrength = uStrength[1];\n\n float alphaRatio = totalAlpha / MAX_TOTAL_ALPHA;\n float innerGlowAlpha = (1. - alphaRatio) * innerStrength * curColor.a * uAlpha;\n float innerGlowStrength = min(1., innerGlowAlpha);\n \n vec4 innerColor = mix(curColor, glowColor, innerGlowStrength);\n float outerGlowAlpha = alphaRatio * outerStrength * (1. - curColor.a) * uAlpha;\n float outerGlowStrength = min(1. - innerColor.a, outerGlowAlpha);\n vec4 outerGlowColor = outerGlowStrength * glowColor.rgba;\n\n if (knockout) {\n float resultAlpha = outerGlowAlpha + innerGlowAlpha;\n finalColor = vec4(glowColor.rgb * resultAlpha, resultAlpha);\n }\n else {\n finalColor = innerColor + outerGlowColor;\n }\n}\n";init_globals();var source22="struct GlowUniforms {\n uDistance: f32,\n uStrength: vec2<f32>,\n uColor: vec3<f32>,\n uAlpha: f32,\n uQuality: f32,\n uKnockout: f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> glowUniforms : GlowUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let quality = glowUniforms.uQuality;\n let distance = glowUniforms.uDistance;\n\n let dist: f32 = glowUniforms.uDistance;\n let angleStepSize: f32 = min(1. / quality / distance, PI * 2.0);\n let angleStepNum: f32 = ceil(PI * 2.0 / angleStepSize);\n\n let px: vec2<f32> = vec2<f32>(1.0 / gfu.uInputSize.xy);\n\n var totalAlpha: f32 = 0.0;\n\n var direction: vec2<f32>;\n var displaced: vec2<f32>;\n var curColor: vec4<f32>;\n\n for (var angle = 0.0; angle < PI * 2.0; angle += angleStepSize) {\n direction = vec2<f32>(cos(angle), sin(angle)) * px;\n for (var curDistance = 0.0; curDistance < dist; curDistance+=1) {\n displaced = vec2<f32>(clamp(uv + direction * (curDistance + 1.0), gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n curColor = textureSample(uTexture, uSampler, displaced);\n totalAlpha += (dist - curDistance) * curColor.a;\n }\n }\n \n curColor = textureSample(uTexture, uSampler, uv);\n\n let glowColorRGB = glowUniforms.uColor;\n let glowAlpha = glowUniforms.uAlpha;\n let glowColor = vec4<f32>(glowColorRGB, glowAlpha);\n let knockout: bool = glowUniforms.uKnockout > 0.5;\n let innerStrength = glowUniforms.uStrength[0];\n let outerStrength = glowUniforms.uStrength[1];\n\n let alphaRatio: f32 = (totalAlpha / (angleStepNum * dist * (dist + 1.0) / 2.0));\n let innerGlowAlpha: f32 = (1.0 - alphaRatio) * innerStrength * curColor.a * glowAlpha;\n let innerGlowStrength: f32 = min(1.0, innerGlowAlpha);\n \n let innerColor: vec4<f32> = mix(curColor, glowColor, innerGlowStrength);\n let outerGlowAlpha: f32 = alphaRatio * outerStrength * (1. - curColor.a) * glowAlpha;\n let outerGlowStrength: f32 = min(1.0 - innerColor.a, outerGlowAlpha);\n let outerGlowColor: vec4<f32> = outerGlowStrength * glowColor.rgba;\n \n if (knockout) {\n let resultAlpha: f32 = outerGlowAlpha + innerGlowAlpha;\n return vec4<f32>(glowColor.rgb * resultAlpha, resultAlpha);\n }\n else {\n return innerColor + outerGlowColor;\n }\n}\n\nconst PI: f32 = 3.14159265358979323846264;",__defProp19=Object.defineProperty,__defNormalProp19=(t,r,n)=>r in t?__defProp19(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField19=(t,r,n)=>(__defNormalProp19(t,"symbol"!=typeof r?r+"":r,n),n),_GlowFilter=class e extends Filter{constructor(t){let r=(t={...e.DEFAULT_OPTIONS,...t}).distance??10,n=t.quality??.1;super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source22,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment22.replace(/__ANGLE_STEP_SIZE__/gi,`${(1/n/r).toFixed(7)}`).replace(/__DIST__/gi,`${r.toFixed(0)}.0`),name:"glow-filter"}),resources:{glowUniforms:{uDistance:{value:r,type:"f32"},uStrength:{value:[t.innerStrength,t.outerStrength],type:"vec2<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:t.alpha,type:"f32"},uQuality:{value:n,type:"f32"},uKnockout:{value:+!!t?.knockout,type:"f32"}}},padding:r}),__publicField19(this,"uniforms"),__publicField19(this,"_color"),this.uniforms=this.resources.glowUniforms.uniforms,this._color=new Color,this.color=t.color??0xffffff}get distance(){return this.uniforms.uDistance}set distance(t){this.uniforms.uDistance=this.padding=t}get innerStrength(){return this.uniforms.uStrength[0]}set innerStrength(t){this.uniforms.uStrength[0]=t}get outerStrength(){return this.uniforms.uStrength[1]}set outerStrength(t){this.uniforms.uStrength[1]=t}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}get quality(){return this.uniforms.uQuality}set quality(t){this.uniforms.uQuality=t}get knockout(){return 1===this.uniforms.uKnockout}set knockout(t){this.uniforms.uKnockout=+!!t}};__publicField19(_GlowFilter,"DEFAULT_OPTIONS",{distance:10,outerStrength:4,innerStrength:0,color:0xffffff,alpha:1,quality:.1,knockout:!1}),init_globals(),init_globals();var fragment23="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uDimensions;\nuniform float uParallel;\nuniform vec2 uLight;\nuniform float uAspect;\nuniform float uTime;\nuniform vec3 uRay;\n\nuniform vec4 uInputSize;\n\n${PERLIN}\n\nvoid main(void) {\n vec2 uDimensions = uDimensions;\n bool uParallel = uParallel > 0.5;\n vec2 uLight = uLight;\n float uAspect = uAspect;\n\n vec2 coord = vTextureCoord * uInputSize.xy / uDimensions;\n\n float d;\n\n if (uParallel) {\n float _cos = uLight.x;\n float _sin = uLight.y;\n d = (_cos * coord.x) + (_sin * coord.y * uAspect);\n } else {\n float dx = coord.x - uLight.x / uDimensions.x;\n float dy = (coord.y - uLight.y / uDimensions.y) * uAspect;\n float dis = sqrt(dx * dx + dy * dy) + 0.00001;\n d = dy / dis;\n }\n\n float uTime = uTime;\n vec3 uRay = uRay;\n\n float gain = uRay[0];\n float lacunarity = uRay[1];\n float alpha = uRay[2];\n\n vec3 dir = vec3(d, d, 0.0);\n float noise = turb(dir + vec3(uTime, 0.0, 62.1 + uTime) * 0.05, vec3(480.0, 320.0, 480.0), lacunarity, gain);\n noise = mix(noise, 0.0, 0.3);\n //fade vertically.\n vec4 mist = vec4(vec3(noise), 1.0) * (1.0 - coord.y);\n mist.a = 1.0;\n // apply user alpha\n mist *= alpha;\n\n finalColor = texture(uTexture, vTextureCoord) + mist;\n}\n";init_globals();var source23="struct GodrayUniforms {\n uLight: vec2<f32>,\n uParallel: f32,\n uAspect: f32,\n uTime: f32,\n uRay: vec3<f32>,\n uDimensions: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> godrayUniforms : GodrayUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uDimensions: vec2<f32> = godrayUniforms.uDimensions;\n let uParallel: bool = godrayUniforms.uParallel > 0.5;\n let uLight: vec2<f32> = godrayUniforms.uLight;\n let uAspect: f32 = godrayUniforms.uAspect;\n\n let coord: vec2<f32> = uv * gfu.uInputSize.xy / uDimensions;\n\n var d: f32;\n\n if (uParallel) {\n let _cos: f32 = uLight.x;\n let _sin: f32 = uLight.y;\n d = (_cos * coord.x) + (_sin * coord.y * uAspect);\n } else {\n let dx: f32 = coord.x - uLight.x / uDimensions.x;\n let dy: f32 = (coord.y - uLight.y / uDimensions.y) * uAspect;\n let dis: f32 = sqrt(dx * dx + dy * dy) + 0.00001;\n d = dy / dis;\n }\n\n let uTime: f32 = godrayUniforms.uTime;\n let uRay: vec3<f32> = godrayUniforms.uRay;\n \n let gain = uRay[0];\n let lacunarity = uRay[1];\n let alpha = uRay[2];\n\n let dir: vec3<f32> = vec3<f32>(d, d, 0.0);\n var noise: f32 = turb(dir + vec3<f32>(uTime, 0.0, 62.1 + uTime) * 0.05, vec3<f32>(480.0, 320.0, 480.0), lacunarity, gain);\n noise = mix(noise, 0.0, 0.3);\n //fade vertically.\n var mist: vec4<f32> = vec4<f32>(vec3<f32>(noise), 1.0) * (1.0 - coord.y);\n mist.a = 1.0;\n // apply user alpha\n mist *= alpha;\n return textureSample(uTexture, uSampler, uv) + mist;\n}\n\n${PERLIN}";init_globals();var perlin="vec3 mod289(vec3 x)\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\nvec4 mod289(vec4 x)\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\nvec4 permute(vec4 x)\n{\n return mod289(((x * 34.0) + 1.0) * x);\n}\nvec4 taylorInvSqrt(vec4 r)\n{\n return 1.79284291400159 - 0.85373472095314 * r;\n}\nvec3 fade(vec3 t)\n{\n return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);\n}\n// Classic Perlin noise, periodic variant\nfloat pnoise(vec3 P, vec3 rep)\n{\n vec3 Pi0 = mod(floor(P), rep); // Integer part, modulo period\n vec3 Pi1 = mod(Pi0 + vec3(1.0), rep); // Integer part + 1, mod period\n Pi0 = mod289(Pi0);\n Pi1 = mod289(Pi1);\n vec3 Pf0 = fract(P); // Fractional part for interpolation\n vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\n vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n vec4 iy = vec4(Pi0.yy, Pi1.yy);\n vec4 iz0 = Pi0.zzzz;\n vec4 iz1 = Pi1.zzzz;\n vec4 ixy = permute(permute(ix) + iy);\n vec4 ixy0 = permute(ixy + iz0);\n vec4 ixy1 = permute(ixy + iz1);\n vec4 gx0 = ixy0 * (1.0 / 7.0);\n vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\n gx0 = fract(gx0);\n vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\n vec4 sz0 = step(gz0, vec4(0.0));\n gx0 -= sz0 * (step(0.0, gx0) - 0.5);\n gy0 -= sz0 * (step(0.0, gy0) - 0.5);\n vec4 gx1 = ixy1 * (1.0 / 7.0);\n vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\n gx1 = fract(gx1);\n vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\n vec4 sz1 = step(gz1, vec4(0.0));\n gx1 -= sz1 * (step(0.0, gx1) - 0.5);\n gy1 -= sz1 * (step(0.0, gy1) - 0.5);\n vec3 g000 = vec3(gx0.x, gy0.x, gz0.x);\n vec3 g100 = vec3(gx0.y, gy0.y, gz0.y);\n vec3 g010 = vec3(gx0.z, gy0.z, gz0.z);\n vec3 g110 = vec3(gx0.w, gy0.w, gz0.w);\n vec3 g001 = vec3(gx1.x, gy1.x, gz1.x);\n vec3 g101 = vec3(gx1.y, gy1.y, gz1.y);\n vec3 g011 = vec3(gx1.z, gy1.z, gz1.z);\n vec3 g111 = vec3(gx1.w, gy1.w, gz1.w);\n vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n g000 *= norm0.x;\n g010 *= norm0.y;\n g100 *= norm0.z;\n g110 *= norm0.w;\n vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n g001 *= norm1.x;\n g011 *= norm1.y;\n g101 *= norm1.z;\n g111 *= norm1.w;\n float n000 = dot(g000, Pf0);\n float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\n float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\n float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\n float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\n float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\n float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\n float n111 = dot(g111, Pf1);\n vec3 fade_xyz = fade(Pf0);\n vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\n vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\n float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\n return 2.2 * n_xyz;\n}\nfloat turb(vec3 P, vec3 rep, float lacunarity, float gain)\n{\n float sum = 0.0;\n float sc = 1.0;\n float totalgain = 1.0;\n for (float i = 0.0; i < 6.0; i++)\n {\n sum += totalgain * pnoise(P * sc, rep);\n sc *= lacunarity;\n totalgain *= gain;\n }\n return abs(sum);\n}\n";init_globals();var sourcePerlin="// Taken from https://gist.github.com/munrocket/236ed5ba7e409b8bdf1ff6eca5dcdc39\n\nfn moduloVec3(x: vec3<f32>, y: vec3<f32>) -> vec3<f32>\n{\n return x - y * floor(x/y);\n}\nfn mod289Vec3(x: vec3<f32>) -> vec3<f32>\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\nfn mod289Vec4(x: vec4<f32>) -> vec4<f32>\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\nfn permute4(x: vec4<f32>) -> vec4<f32>\n{\n return mod289Vec4(((x * 34.0) + 1.0) * x);\n}\nfn taylorInvSqrt(r: vec4<f32>) -> vec4<f32>\n{\n return 1.79284291400159 - 0.85373472095314 * r;\n}\nfn fade3(t: vec3<f32>) -> vec3<f32>\n{\n return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);\n}\nfn fade2(t: vec2<f32>) -> vec2<f32> { return t * t * t * (t * (t * 6. - 15.) + 10.); }\n\nfn perlinNoise2(P: vec2<f32>) -> f32 {\n var Pi: vec4<f32> = floor(P.xyxy) + vec4<f32>(0., 0., 1., 1.);\n let Pf = fract(P.xyxy) - vec4<f32>(0., 0., 1., 1.);\n Pi = Pi % vec4<f32>(289.); // To avoid truncation effects in permutation\n let ix = Pi.xzxz;\n let iy = Pi.yyww;\n let fx = Pf.xzxz;\n let fy = Pf.yyww;\n let i = permute4(permute4(ix) + iy);\n var gx: vec4<f32> = 2. * fract(i * 0.0243902439) - 1.; // 1/41 = 0.024...\n let gy = abs(gx) - 0.5;\n let tx = floor(gx + 0.5);\n gx = gx - tx;\n var g00: vec2<f32> = vec2<f32>(gx.x, gy.x);\n var g10: vec2<f32> = vec2<f32>(gx.y, gy.y);\n var g01: vec2<f32> = vec2<f32>(gx.z, gy.z);\n var g11: vec2<f32> = vec2<f32>(gx.w, gy.w);\n let norm = 1.79284291400159 - 0.85373472095314 *\n vec4<f32>(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11));\n g00 = g00 * norm.x;\n g01 = g01 * norm.y;\n g10 = g10 * norm.z;\n g11 = g11 * norm.w;\n let n00 = dot(g00, vec2<f32>(fx.x, fy.x));\n let n10 = dot(g10, vec2<f32>(fx.y, fy.y));\n let n01 = dot(g01, vec2<f32>(fx.z, fy.z));\n let n11 = dot(g11, vec2<f32>(fx.w, fy.w));\n let fade_xy = fade2(Pf.xy);\n let n_x = mix(vec2<f32>(n00, n01), vec2<f32>(n10, n11), vec2<f32>(fade_xy.x));\n let n_xy = mix(n_x.x, n_x.y, fade_xy.y);\n return 2.3 * n_xy;\n}\n\n// Classic Perlin noise, periodic variant\nfn perlinNoise3(P: vec3<f32>, rep: vec3<f32>) -> f32\n{\n var Pi0: vec3<f32> = moduloVec3(floor(P), rep); // Integer part, modulo period\n var Pi1: vec3<f32> = moduloVec3(Pi0 + vec3<f32>(1.0), rep); // Integer part + 1, mod period\n Pi0 = mod289Vec3(Pi0);\n Pi1 = mod289Vec3(Pi1);\n let Pf0: vec3<f32> = fract(P); // Fractional part for interpolation\n let Pf1: vec3<f32> = Pf0 - vec3<f32>(1.0); // Fractional part - 1.0\n let ix: vec4<f32> = vec4<f32>(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n let iy: vec4<f32> = vec4<f32>(Pi0.yy, Pi1.yy);\n let iz0: vec4<f32> = Pi0.zzzz;\n let iz1: vec4<f32> = Pi1.zzzz;\n let ixy: vec4<f32> = permute4(permute4(ix) + iy);\n let ixy0: vec4<f32> = permute4(ixy + iz0);\n let ixy1: vec4<f32> = permute4(ixy + iz1);\n var gx0: vec4<f32> = ixy0 * (1.0 / 7.0);\n var gy0: vec4<f32> = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\n gx0 = fract(gx0);\n let gz0: vec4<f32> = vec4<f32>(0.5) - abs(gx0) - abs(gy0);\n let sz0: vec4<f32> = step(gz0, vec4<f32>(0.0));\n gx0 -= sz0 * (step(vec4<f32>(0.0), gx0) - 0.5);\n gy0 -= sz0 * (step(vec4<f32>(0.0), gy0) - 0.5);\n var gx1: vec4<f32> = ixy1 * (1.0 / 7.0);\n var gy1: vec4<f32> = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\n gx1 = fract(gx1);\n let gz1: vec4<f32> = vec4<f32>(0.5) - abs(gx1) - abs(gy1);\n let sz1: vec4<f32> = step(gz1, vec4<f32>(0.0));\n gx1 -= sz1 * (step(vec4<f32>(0.0), gx1) - 0.5);\n gy1 -= sz1 * (step(vec4<f32>(0.0), gy1) - 0.5);\n var g000: vec3<f32> = vec3<f32>(gx0.x, gy0.x, gz0.x);\n var g100: vec3<f32> = vec3<f32>(gx0.y, gy0.y, gz0.y);\n var g010: vec3<f32> = vec3<f32>(gx0.z, gy0.z, gz0.z);\n var g110: vec3<f32> = vec3<f32>(gx0.w, gy0.w, gz0.w);\n var g001: vec3<f32> = vec3<f32>(gx1.x, gy1.x, gz1.x);\n var g101: vec3<f32> = vec3<f32>(gx1.y, gy1.y, gz1.y);\n var g011: vec3<f32> = vec3<f32>(gx1.z, gy1.z, gz1.z);\n var g111: vec3<f32> = vec3<f32>(gx1.w, gy1.w, gz1.w);\n let norm0: vec4<f32> = taylorInvSqrt(vec4<f32>(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n g000 *= norm0.x;\n g010 *= norm0.y;\n g100 *= norm0.z;\n g110 *= norm0.w;\n let norm1: vec4<f32> = taylorInvSqrt(vec4<f32>(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n g001 *= norm1.x;\n g011 *= norm1.y;\n g101 *= norm1.z;\n g111 *= norm1.w;\n let n000: f32 = dot(g000, Pf0);\n let n100: f32 = dot(g100, vec3<f32>(Pf1.x, Pf0.yz));\n let n010: f32 = dot(g010, vec3<f32>(Pf0.x, Pf1.y, Pf0.z));\n let n110: f32 = dot(g110, vec3<f32>(Pf1.xy, Pf0.z));\n let n001: f32 = dot(g001, vec3<f32>(Pf0.xy, Pf1.z));\n let n101: f32 = dot(g101, vec3<f32>(Pf1.x, Pf0.y, Pf1.z));\n let n011: f32 = dot(g011, vec3<f32>(Pf0.x, Pf1.yz));\n let n111: f32 = dot(g111, Pf1);\n let fade_xyz: vec3<f32> = fade3(Pf0);\n let n_z: vec4<f32> = mix(vec4<f32>(n000, n100, n010, n110), vec4<f32>(n001, n101, n011, n111), fade_xyz.z);\n let n_yz: vec2<f32> = mix(n_z.xy, n_z.zw, fade_xyz.y);\n let n_xyz: f32 = mix(n_yz.x, n_yz.y, fade_xyz.x);\n return 2.2 * n_xyz;\n}\nfn turb(P: vec3<f32>, rep: vec3<f32>, lacunarity: f32, gain: f32) -> f32\n{\n var sum: f32 = 0.0;\n var sc: f32 = 1.0;\n var totalgain: f32 = 1.0;\n for (var i = 0.0; i < 6.0; i += 1)\n {\n sum += totalgain * perlinNoise3(P * sc, rep);\n sc *= lacunarity;\n totalgain *= gain;\n }\n return abs(sum);\n}",__defProp20=Object.defineProperty,__defNormalProp20=(t,r,n)=>r in t?__defProp20(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField20=(t,r,n)=>(__defNormalProp20(t,"symbol"!=typeof r?r+"":r,n),n),_GodrayFilter=class e extends Filter{constructor(t){super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source23.replace("${PERLIN}",sourcePerlin),entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment23.replace("${PERLIN}",perlin),name:"god-ray-filter"}),resources:{godrayUniforms:{uLight:{value:new Float32Array(2),type:"vec2<f32>"},uParallel:{value:0,type:"f32"},uAspect:{value:0,type:"f32"},uTime:{value:(t={...e.DEFAULT_OPTIONS,...t}).time,type:"f32"},uRay:{value:new Float32Array(3),type:"vec3<f32>"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField20(this,"uniforms"),__publicField20(this,"time",0),__publicField20(this,"_angleLight",[0,0]),__publicField20(this,"_angle",0),__publicField20(this,"_center"),this.uniforms=this.resources.godrayUniforms.uniforms,Object.assign(this,t)}apply(t,r,n,i){let a=r.frame.width,o=r.frame.height;this.uniforms.uLight[0]=this.parallel?this._angleLight[0]:this._center.x,this.uniforms.uLight[1]=this.parallel?this._angleLight[1]:this._center.y,this.uniforms.uDimensions[0]=a,this.uniforms.uDimensions[1]=o,this.uniforms.uAspect=o/a,this.uniforms.uTime=this.time,t.applyFilter(this,r,n,i)}get angle(){return this._angle}set angle(t){this._angle=t;let r=t*DEG_TO_RAD;this._angleLight[0]=Math.cos(r),this._angleLight[1]=Math.sin(r)}get parallel(){return this.uniforms.uParallel>.5}set parallel(t){this.uniforms.uParallel=+!!t}get center(){return this._center}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this._center=t}get centerX(){return this.center.x}set centerX(t){this.center.x=t}get centerY(){return this.center.y}set centerY(t){this.center.y=t}get gain(){return this.uniforms.uRay[0]}set gain(t){this.uniforms.uRay[0]=t}get lacunarity(){return this.uniforms.uRay[1]}set lacunarity(t){this.uniforms.uRay[1]=t}get alpha(){return this.uniforms.uRay[2]}set alpha(t){this.uniforms.uRay[2]=t}};__publicField20(_GodrayFilter,"DEFAULT_OPTIONS",{angle:30,gain:.5,lacunarity:2.5,parallel:!0,time:0,center:{x:0,y:0},alpha:1}),init_globals(),init_globals(),init_globals(),init_globals(),init_globals();var fragment25="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec3 uHsl;\nuniform float uAlpha;\nuniform float uColorize;\n\n// https://en.wikipedia.org/wiki/Luma_(video)\nconst vec3 weight = vec3(0.299, 0.587, 0.114);\n\nfloat getWeightedAverage(vec3 rgb) {\n return rgb.r * weight.r + rgb.g * weight.g + rgb.b * weight.b;\n}\n\n// https://gist.github.com/mairod/a75e7b44f68110e1576d77419d608786?permalink_comment_id=3195243#gistcomment-3195243\nconst vec3 k = vec3(0.57735, 0.57735, 0.57735);\n\nvec3 hueShift(vec3 color, float angle) {\n float cosAngle = cos(angle);\n return vec3(\n color * cosAngle +\n cross(k, color) * sin(angle) +\n k * dot(k, color) * (1.0 - cosAngle)\n );\n}\n\nvoid main()\n{\n vec4 color = texture(uTexture, vTextureCoord);\n vec3 resultRGB = color.rgb;\n\n float hue = uHsl[0];\n float saturation = uHsl[1];\n float lightness = uHsl[2];\n\n // colorize\n if (uColorize > 0.5) {\n resultRGB = vec3(getWeightedAverage(resultRGB), 0., 0.);\n }\n\n // hue\n resultRGB = hueShift(resultRGB, hue);\n\n // saturation\n // https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/huesaturation.js\n float average = (resultRGB.r + resultRGB.g + resultRGB.b) / 3.0;\n\n if (saturation > 0.) {\n resultRGB += (average - resultRGB) * (1. - 1. / (1.001 - saturation));\n } else {\n resultRGB -= (average - resultRGB) * saturation;\n }\n\n // lightness\n resultRGB = mix(resultRGB, vec3(ceil(lightness)) * color.a, abs(lightness));\n\n // alpha\n finalColor = mix(color, vec4(resultRGB, color.a), uAlpha);\n}\n";init_globals();var source25="struct HslUniforms {\n uHsl:vec3<f32>,\n uColorize:f32,\n uAlpha:f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> hslUniforms : HslUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n let color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n var resultRGB: vec3<f32> = color.rgb;\n\n let hue: f32 = hslUniforms.uHsl[0];\n let saturation: f32 = hslUniforms.uHsl[1];\n let lightness: f32 = hslUniforms.uHsl[2];\n\n // colorize\n if (hslUniforms.uColorize > 0.5) {\n resultRGB = vec3<f32>(dot(color.rgb, vec3<f32>(0.299, 0.587, 0.114)), 0., 0.);\n }\n\n // hue\n resultRGB = hueShift(resultRGB, hue);\n\n // saturation\n // https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/huesaturation.js\n let average: f32 = (resultRGB.r + resultRGB.g + resultRGB.b) / 3.0;\n\n if (saturation > 0.) {\n resultRGB += (average - resultRGB) * (1. - 1. / (1.001 - saturation));\n } else {\n resultRGB -= (average - resultRGB) * saturation;\n }\n\n // lightness\n resultRGB = mix(resultRGB, vec3<f32>(ceil(lightness)) * color.a, abs(lightness));\n\n // alpha\n return mix(color, vec4<f32>(resultRGB, color.a), hslUniforms.uAlpha);\n}\n\n// https://gist.github.com/mairod/a75e7b44f68110e1576d77419d608786?permalink_comment_id=3195243#gistcomment-3195243\nconst k: vec3<f32> = vec3(0.57735, 0.57735, 0.57735);\n\nfn hueShift(color: vec3<f32>, angle: f32) -> vec3<f32> \n{\n let cosAngle: f32 = cos(angle);\n return vec3<f32>(\n color * cosAngle +\n cross(k, color) * sin(angle) +\n k * dot(k, color) * (1.0 - cosAngle)\n );\n}",__defProp21=Object.defineProperty,__defNormalProp21=(t,r,n)=>r in t?__defProp21(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField21=(t,r,n)=>(__defNormalProp21(t,"symbol"!=typeof r?r+"":r,n),n),_HslAdjustmentFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source25,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment25,name:"hsl-adjustment-filter"}),resources:{hslUniforms:{uHsl:{value:new Float32Array(3),type:"vec3<f32>"},uColorize:{value:+!!t.colorize,type:"f32"},uAlpha:{value:t.alpha,type:"f32"}}}}),__publicField21(this,"uniforms"),__publicField21(this,"_hue"),this.uniforms=this.resources.hslUniforms.uniforms,Object.assign(this,t)}get hue(){return this._hue}set hue(t){this._hue=t,this.uniforms.uHsl[0]=Math.PI/180*t}get saturation(){return this.uniforms.uHsl[1]}set saturation(t){this.uniforms.uHsl[1]=t}get lightness(){return this.uniforms.uHsl[2]}set lightness(t){this.uniforms.uHsl[2]=t}get colorize(){return 1===this.uniforms.uColorize}set colorize(t){this.uniforms.uColorize=+!!t}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}};__publicField21(_HslAdjustmentFilter,"DEFAULT_OPTIONS",{hue:0,saturation:0,lightness:0,colorize:!1,alpha:1}),init_globals(),init_globals();var fragment26="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uVelocity;\nuniform int uKernelSize;\nuniform float uOffset;\n\nuniform vec4 uInputSize;\n\nconst int MAX_KERNEL_SIZE = 2048;\n\n// Notice:\n// the perfect way:\n// int kernelSize = min(uKernelSize, MAX_KERNELSIZE);\n// BUT in real use-case , uKernelSize < MAX_KERNELSIZE almost always.\n// So use uKernelSize directly.\n\nvoid main(void)\n{\n vec4 color = texture(uTexture, vTextureCoord);\n\n if (uKernelSize == 0)\n {\n finalColor = color;\n return;\n }\n\n vec2 velocity = uVelocity / uInputSize.xy;\n float offset = -uOffset / length(uVelocity) - 0.5;\n int k = uKernelSize - 1;\n\n for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {\n if (i == k) {\n break;\n }\n vec2 bias = velocity * (float(i) / float(k) + offset);\n color += texture(uTexture, vTextureCoord + bias);\n }\n finalColor = color / float(uKernelSize);\n}\n";init_globals();var source26="struct MotionBlurUniforms {\n uVelocity: vec2<f32>,\n uKernelSize: f32,\n uOffset: f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> motionBlurUniforms : MotionBlurUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uVelocity = motionBlurUniforms.uVelocity;\n let uKernelSize = motionBlurUniforms.uKernelSize;\n let uOffset = motionBlurUniforms.uOffset;\n\n let velocity: vec2<f32> = uVelocity / gfu.uInputSize.xy;\n let offset: f32 = -uOffset / length(uVelocity) - 0.5;\n let k: i32 = i32(min(uKernelSize - 1, MAX_KERNEL_SIZE - 1));\n\n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n for(var i: i32 = 0; i < k; i += 1) {\n let bias: vec2<f32> = velocity * (f32(i) / f32(k) + offset);\n color += textureSample(uTexture, uSampler, uv + bias);\n }\n \n return select(color / f32(uKernelSize), textureSample(uTexture, uSampler, uv), uKernelSize == 0);\n}\n\nconst MAX_KERNEL_SIZE: f32 = 2048;",__defProp22=Object.defineProperty,__defNormalProp22=(t,r,n)=>r in t?__defProp22(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField22=(t,r,n)=>(__defNormalProp22(t,"symbol"!=typeof r?r+"":r,n),n),_MotionBlurFilter=class e extends Filter{constructor(...t){let r=t[0]??{};(Array.isArray(r)||"x"in r&&"y"in r||r instanceof ObservablePoint)&&(deprecation("6.0.0","MotionBlurFilter constructor params are now options object. See params: { velocity, kernelSize, offset }"),r={velocity:{x:"x"in r?r.x:r[0],y:"y"in r?r.y:r[1]}},void 0!==t[1]&&(r.kernelSize=t[1]),void 0!==t[2]&&(r.offset=t[2])),r={...e.DEFAULT_OPTIONS,...r},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source26,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment26,name:"motion-blur-filter"}),resources:{motionBlurUniforms:{uVelocity:{value:r.velocity,type:"vec2<f32>"},uKernelSize:{value:Math.trunc(r.kernelSize??5),type:"i32"},uOffset:{value:r.offset,type:"f32"}}}}),__publicField22(this,"uniforms"),__publicField22(this,"_kernelSize"),this.uniforms=this.resources.motionBlurUniforms.uniforms,Object.assign(this,r)}get velocity(){return this.uniforms.uVelocity}set velocity(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uVelocity=t,this._updateDirty()}get velocityX(){return this.velocity.x}set velocityX(t){this.velocity.x=t,this._updateDirty()}get velocityY(){return this.velocity.y}set velocityY(t){this.velocity.y=t,this._updateDirty()}get kernelSize(){return this._kernelSize}set kernelSize(t){this._kernelSize=t,this._updateDirty()}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t}_updateDirty(){this.padding=1+(0|Math.max(Math.abs(this.velocityX),Math.abs(this.velocityY))),this.uniforms.uKernelSize=0!==this.velocityX||0!==this.velocityY?this._kernelSize:0}};__publicField22(_MotionBlurFilter,"DEFAULT_OPTIONS",{velocity:{x:0,y:0},kernelSize:5,offset:0}),init_globals(),init_globals();var fragment27="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nconst int MAX_COLORS = ${MAX_COLORS};\n\nuniform sampler2D uTexture;\nuniform vec3 uOriginalColors[MAX_COLORS];\nuniform vec3 uTargetColors[MAX_COLORS];\nuniform float uTolerance;\n\nvoid main(void)\n{\n finalColor = texture(uTexture, vTextureCoord);\n\n float alpha = finalColor.a;\n if (alpha < 0.0001)\n {\n return;\n }\n\n vec3 color = finalColor.rgb / alpha;\n\n for(int i = 0; i < MAX_COLORS; i++)\n {\n vec3 origColor = uOriginalColors[i];\n if (origColor.r < 0.0)\n {\n break;\n }\n vec3 colorDiff = origColor - color;\n if (length(colorDiff) < uTolerance)\n {\n vec3 targetColor = uTargetColors[i];\n finalColor = vec4((targetColor + colorDiff) * alpha, alpha);\n return;\n }\n }\n}\n";init_globals();var source27="struct MultiColorReplaceUniforms {\n uOriginalColors: array<vec3<f32>, MAX_COLORS>,\n uTargetColors: array<vec3<f32>, MAX_COLORS>,\n uTolerance:f32,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> multiColorReplaceUniforms : MultiColorReplaceUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uOriginalColors = multiColorReplaceUniforms.uOriginalColors;\n let uTargetColors = multiColorReplaceUniforms.uTargetColors;\n let uTolerance = multiColorReplaceUniforms.uTolerance;\n\n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n let alpha: f32 = color.a;\n\n if (alpha > 0.0001)\n {\n var modColor: vec3<f32> = vec3<f32>(color.rgb) / alpha;\n\n for(var i: i32 = 0; i < MAX_COLORS; i += 1)\n {\n let origColor: vec3<f32> = uOriginalColors[i];\n if (origColor.r < 0.0)\n {\n break;\n }\n let colorDiff: vec3<f32> = origColor - modColor;\n \n if (length(colorDiff) < uTolerance)\n {\n let targetColor: vec3<f32> = uTargetColors[i];\n color = vec4((targetColor + colorDiff) * alpha, alpha);\n return color;\n }\n }\n }\n\n return color;\n}\n\nconst MAX_COLORS: i32 = ${MAX_COLORS};",__defProp23=Object.defineProperty,__defNormalProp23=(t,r,n)=>r in t?__defProp23(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField23=(t,r,n)=>(__defNormalProp23(t,"symbol"!=typeof r?r+"":r,n),n),_MultiColorReplaceFilter=class e extends Filter{constructor(...t){let r=t[0]??{};Array.isArray(r)&&(deprecation("6.0.0","MultiColorReplaceFilter constructor params are now options object. See params: { replacements, tolerance, maxColors }"),r={replacements:r},t[1]&&(r.tolerance=t[1]),t[2]&&(r.maxColors=t[2]));let n=(r={...e.DEFAULT_OPTIONS,...r}).maxColors??r.replacements.length;super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source27.replace(/\$\{MAX_COLORS\}/g,n.toFixed(0)),entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment27.replace(/\$\{MAX_COLORS\}/g,n.toFixed(0)),name:"multi-color-replace-filter"}),resources:{multiColorReplaceUniforms:{uOriginalColors:{value:new Float32Array(3*n),type:"vec3<f32>",size:n},uTargetColors:{value:new Float32Array(3*n),type:"vec3<f32>",size:n},uTolerance:{value:r.tolerance,type:"f32"}}}}),__publicField23(this,"uniforms"),__publicField23(this,"_replacements",[]),__publicField23(this,"_maxColors"),this._maxColors=n,this.uniforms=this.resources.multiColorReplaceUniforms.uniforms,this.replacements=r.replacements}set replacements(t){let r,n,i,a=this.uniforms.uOriginalColors,o=this.uniforms.uTargetColors,s=t.length,l=new Color;if(s>this._maxColors)throw Error(`Length of replacements (${s}) exceeds the maximum colors length (${this._maxColors})`);a[3*s]=-1;for(let u=0;u<s;u++){let s=t[u];l.setValue(s[0]),[r,n,i]=l.toArray(),a[3*u]=r,a[3*u+1]=n,a[3*u+2]=i,l.setValue(s[1]),[r,n,i]=l.toArray(),o[3*u]=r,o[3*u+1]=n,o[3*u+2]=i}this._replacements=t}get replacements(){return this._replacements}refresh(){this.replacements=this._replacements}get maxColors(){return this._maxColors}get tolerance(){return this.uniforms.uTolerance}set tolerance(t){this.uniforms.uTolerance=t}set epsilon(t){deprecation("6.0.0","MultiColorReplaceFilter.epsilon is deprecated, please use MultiColorReplaceFilter.tolerance instead"),this.tolerance=t}get epsilon(){return deprecation("6.0.0","MultiColorReplaceFilter.epsilon is deprecated, please use MultiColorReplaceFilter.tolerance instead"),this.tolerance}};__publicField23(_MultiColorReplaceFilter,"DEFAULT_OPTIONS",{replacements:[[0xff0000,255]],tolerance:.05,maxColors:void 0}),init_globals(),init_globals();var fragment28="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uSepia;\nuniform vec2 uNoise;\nuniform vec3 uScratch;\nuniform vec3 uVignetting;\nuniform float uSeed;\nuniform vec2 uDimensions;\n\nuniform vec4 uInputSize;\n\nconst float SQRT_2 = 1.414213;\nconst vec3 SEPIA_RGB = vec3(112.0 / 255.0, 66.0 / 255.0, 20.0 / 255.0);\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvec3 Overlay(vec3 src, vec3 dst)\n{\n // if (dst <= 0.5) then: 2 * src * dst\n // if (dst > 0.5) then: 1 - 2 * (1 - dst) * (1 - src)\n return vec3((dst.x <= 0.5) ? (2.0 * src.x * dst.x) : (1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)),\n (dst.y <= 0.5) ? (2.0 * src.y * dst.y) : (1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)),\n (dst.z <= 0.5) ? (2.0 * src.z * dst.z) : (1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)));\n}\n\n\nvoid main()\n{\n finalColor = texture(uTexture, vTextureCoord);\n vec3 color = finalColor.rgb;\n\n if (uSepia > 0.0)\n {\n float gray = (color.x + color.y + color.z) / 3.0;\n vec3 grayscale = vec3(gray);\n\n color = Overlay(SEPIA_RGB, grayscale);\n\n color = grayscale + uSepia * (color - grayscale);\n }\n\n vec2 coord = vTextureCoord * uInputSize.xy / uDimensions.xy;\n\n float vignette = uVignetting[0];\n float vignetteAlpha = uVignetting[1];\n float vignetteBlur = uVignetting[2];\n\n if (vignette > 0.0)\n {\n float outter = SQRT_2 - vignette * SQRT_2;\n vec2 dir = vec2(vec2(0.5, 0.5) - coord);\n dir.y *= uDimensions.y / uDimensions.x;\n float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignetteBlur * SQRT_2), 0.0, 1.0);\n color.rgb *= darker + (1.0 - darker) * (1.0 - vignetteAlpha);\n }\n\n float scratch = uScratch[0];\n float scratchDensity = uScratch[1];\n float scratchWidth = uScratch[2];\n\n if (scratchDensity > uSeed && scratch != 0.0)\n {\n float phase = uSeed * 256.0;\n float s = mod(floor(phase), 2.0);\n float dist = 1.0 / scratchDensity;\n float d = distance(coord, vec2(uSeed * dist, abs(s - uSeed * dist)));\n if (d < uSeed * 0.6 + 0.4)\n {\n highp float period = scratchDensity * 10.0;\n\n float xx = coord.x * period + phase;\n float aa = abs(mod(xx, 0.5) * 4.0);\n float bb = mod(floor(xx / 0.5), 2.0);\n float yy = (1.0 - bb) * aa + bb * (2.0 - aa);\n\n float kk = 2.0 * period;\n float dw = scratchWidth / uDimensions.x * (0.75 + uSeed);\n float dh = dw * kk;\n\n float tine = (yy - (2.0 - dh));\n\n if (tine > 0.0) {\n float _sign = sign(scratch);\n\n tine = s * tine / period + scratch + 0.1;\n tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);\n\n color.rgb *= tine;\n }\n }\n }\n\n float noise = uNoise[0];\n float noiseSize = uNoise[1];\n\n if (noise > 0.0 && noiseSize > 0.0)\n {\n vec2 pixelCoord = vTextureCoord.xy * uInputSize.xy;\n pixelCoord.x = floor(pixelCoord.x / noiseSize);\n pixelCoord.y = floor(pixelCoord.y / noiseSize);\n // vec2 d = pixelCoord * noiseSize * vec2(1024.0 + uSeed * 512.0, 1024.0 - uSeed * 512.0);\n // float _noise = snoise(d) * 0.5;\n float _noise = rand(pixelCoord * noiseSize * uSeed) - 0.5;\n color += _noise * noise;\n }\n\n finalColor.rgb = color;\n}";init_globals();var source28="struct OldFilmUniforms {\n uSepia: f32,\n uNoise: vec2<f32>,\n uScratch: vec3<f32>,\n uVignetting: vec3<f32>,\n uSeed: f32,\n uDimensions: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> oldFilmUniforms : OldFilmUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n\n if (oldFilmUniforms.uSepia > 0.)\n {\n color = vec4<f32>(sepia(color.rgb), color.a);\n }\n\n let coord: vec2<f32> = uv * gfu.uInputSize.xy / oldFilmUniforms.uDimensions;\n\n if (oldFilmUniforms.uVignetting[0] > 0.)\n {\n color *= vec4<f32>(vec3<f32>(vignette(color.rgb, coord)), color.a);\n }\n\n let uScratch = oldFilmUniforms.uScratch; \n\n if (uScratch[1] > oldFilmUniforms.uSeed && uScratch[0] != 0.)\n {\n color = vec4<f32>(scratch(color.rgb, coord), color.a);\n }\n\n let uNoise = oldFilmUniforms.uNoise;\n\n if (uNoise[0] > 0.0 && uNoise[1] > 0.0)\n {\n color += vec4<f32>(vec3<f32>(noise(uv)), color.a);\n }\n\n return color;\n}\n\nconst SQRT_2: f32 = 1.414213;\nconst SEPIA_RGB: vec3<f32> = vec3<f32>(112.0 / 255.0, 66.0 / 255.0, 20.0 / 255.0);\n\nfn modulo(x: f32, y: f32) -> f32\n{\n return x - y * floor(x/y);\n}\n\nfn rand(co: vec2<f32>) -> f32\n{\n return fract(sin(dot(co, vec2<f32>(12.9898, 78.233))) * 43758.5453);\n}\n\nfn overlay(src: vec3<f32>, dst: vec3<f32>) -> vec3<f32>\n{\n // if (dst <= 0.5) then: 2 * src * dst\n // if (dst > 0.5) then: 1 - 2 * (1 - dst) * (1 - src)\n\n return vec3<f32>(\n select((1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)), (2.0 * src.x * dst.x), (dst.x <= 0.5)), \n select((1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)), (2.0 * src.y * dst.y), (dst.y <= 0.5)),\n select((1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)), (2.0 * src.z * dst.z), (dst.z <= 0.5))\n );\n}\n\nfn sepia(co: vec3<f32>) -> vec3<f32>\n{\n let gray: f32 = (co.x + co.y + co.z) / 3.0;\n let grayscale: vec3<f32> = vec3<f32>(gray);\n let color = overlay(SEPIA_RGB, grayscale);\n return grayscale + oldFilmUniforms.uSepia * (color - grayscale);\n}\n\nfn vignette(co: vec3<f32>, coord: vec2<f32>) -> f32\n{\n let uVignetting = oldFilmUniforms.uVignetting;\n let uDimensions = oldFilmUniforms.uDimensions;\n \n let outter: f32 = SQRT_2 - uVignetting[0] * SQRT_2;\n var dir: vec2<f32> = vec2<f32>(vec2<f32>(0.5) - coord);\n dir.y *= uDimensions.y / uDimensions.x;\n let darker: f32 = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + uVignetting[2] * SQRT_2), 0.0, 1.0);\n return darker + (1.0 - darker) * (1.0 - uVignetting[1]);\n}\n\nfn scratch(co: vec3<f32>, coord: vec2<f32>) -> vec3<f32>\n{\n var color = co;\n let uScratch = oldFilmUniforms.uScratch;\n let uSeed = oldFilmUniforms.uSeed;\n let uDimensions = oldFilmUniforms.uDimensions;\n\n let phase: f32 = uSeed * 256.0;\n let s: f32 = modulo(floor(phase), 2.0);\n let dist: f32 = 1.0 / uScratch[1];\n let d: f32 = distance(coord, vec2<f32>(uSeed * dist, abs(s - uSeed * dist)));\n\n if (d < uSeed * 0.6 + 0.4)\n {\n let period: f32 = uScratch[1] * 10.0;\n\n let xx: f32 = coord.x * period + phase;\n let aa: f32 = abs(modulo(xx, 0.5) * 4.0);\n let bb: f32 = modulo(floor(xx / 0.5), 2.0);\n let yy: f32 = (1.0 - bb) * aa + bb * (2.0 - aa);\n\n let kk: f32 = 2.0 * period;\n let dw: f32 = uScratch[2] / uDimensions.x * (0.75 + uSeed);\n let dh: f32 = dw * kk;\n\n var tine: f32 = (yy - (2.0 - dh));\n\n if (tine > 0.0) {\n let _sign: f32 = sign(uScratch[0]);\n\n tine = s * tine / period + uScratch[0] + 0.1;\n tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);\n\n color *= tine;\n }\n }\n\n return color;\n}\n\nfn noise(coord: vec2<f32>) -> f32\n{\n let uNoise = oldFilmUniforms.uNoise;\n let uSeed = oldFilmUniforms.uSeed;\n\n var pixelCoord: vec2<f32> = coord * gfu.uInputSize.xy;\n pixelCoord.x = floor(pixelCoord.x / uNoise[1]);\n pixelCoord.y = floor(pixelCoord.y / uNoise[1]);\n return (rand(pixelCoord * uNoise[1] * uSeed) - 0.5) * uNoise[0];\n}",__defProp24=Object.defineProperty,__defNormalProp24=(t,r,n)=>r in t?__defProp24(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField24=(t,r,n)=>(__defNormalProp24(t,"symbol"!=typeof r?r+"":r,n),n),_OldFilmFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source28,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment28,name:"old-film-filter"}),resources:{oldFilmUniforms:{uSepia:{value:t.sepia,type:"f32"},uNoise:{value:new Float32Array(2),type:"vec2<f32>"},uScratch:{value:new Float32Array(3),type:"vec3<f32>"},uVignetting:{value:new Float32Array(3),type:"vec3<f32>"},uSeed:{value:t.seed,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField24(this,"uniforms"),__publicField24(this,"seed"),this.uniforms=this.resources.oldFilmUniforms.uniforms,Object.assign(this,t)}apply(t,r,n,i){this.uniforms.uDimensions[0]=r.frame.width,this.uniforms.uDimensions[1]=r.frame.height,this.uniforms.uSeed=this.seed,t.applyFilter(this,r,n,i)}get sepia(){return this.uniforms.uSepia}set sepia(t){this.uniforms.uSepia=t}get noise(){return this.uniforms.uNoise[0]}set noise(t){this.uniforms.uNoise[0]=t}get noiseSize(){return this.uniforms.uNoise[1]}set noiseSize(t){this.uniforms.uNoise[1]=t}get scratch(){return this.uniforms.uScratch[0]}set scratch(t){this.uniforms.uScratch[0]=t}get scratchDensity(){return this.uniforms.uScratch[1]}set scratchDensity(t){this.uniforms.uScratch[1]=t}get scratchWidth(){return this.uniforms.uScratch[2]}set scratchWidth(t){this.uniforms.uScratch[2]=t}get vignetting(){return this.uniforms.uVignetting[0]}set vignetting(t){this.uniforms.uVignetting[0]=t}get vignettingAlpha(){return this.uniforms.uVignetting[1]}set vignettingAlpha(t){this.uniforms.uVignetting[1]=t}get vignettingBlur(){return this.uniforms.uVignetting[2]}set vignettingBlur(t){this.uniforms.uVignetting[2]=t}};__publicField24(_OldFilmFilter,"DEFAULT_OPTIONS",{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.3,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,seed:0}),init_globals(),init_globals();var fragment29="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uThickness;\nuniform vec3 uColor;\nuniform float uAlpha;\nuniform float uKnockout;\n\nuniform vec4 uInputClamp;\n\nconst float DOUBLE_PI = 2. * 3.14159265358979323846264;\nconst float ANGLE_STEP = ${ANGLE_STEP};\n\nfloat outlineMaxAlphaAtPos(vec2 pos) {\n if (uThickness.x == 0. || uThickness.y == 0.) {\n return 0.;\n }\n\n vec4 displacedColor;\n vec2 displacedPos;\n float maxAlpha = 0.;\n\n for (float angle = 0.; angle <= DOUBLE_PI; angle += ANGLE_STEP) {\n displacedPos.x = vTextureCoord.x + uThickness.x * cos(angle);\n displacedPos.y = vTextureCoord.y + uThickness.y * sin(angle);\n displacedColor = texture(uTexture, clamp(displacedPos, uInputClamp.xy, uInputClamp.zw));\n maxAlpha = max(maxAlpha, displacedColor.a);\n }\n\n return maxAlpha;\n}\n\nvoid main(void) {\n vec4 sourceColor = texture(uTexture, vTextureCoord);\n vec4 contentColor = sourceColor * float(uKnockout < 0.5);\n float outlineAlpha = uAlpha * outlineMaxAlphaAtPos(vTextureCoord.xy) * (1.-sourceColor.a);\n vec4 outlineColor = vec4(vec3(uColor) * outlineAlpha, outlineAlpha);\n finalColor = contentColor + outlineColor;\n}\n";init_globals();var source29="struct OutlineUniforms {\n uThickness:vec2<f32>,\n uColor:vec3<f32>,\n uAlpha:f32,\n uAngleStep:f32,\n uKnockout:f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> outlineUniforms : OutlineUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let sourceColor: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let contentColor: vec4<f32> = sourceColor * (1. - outlineUniforms.uKnockout);\n \n let outlineAlpha: f32 = outlineUniforms.uAlpha * outlineMaxAlphaAtPos(uv) * (1. - sourceColor.a);\n let outlineColor: vec4<f32> = vec4<f32>(vec3<f32>(outlineUniforms.uColor) * outlineAlpha, outlineAlpha);\n \n return contentColor + outlineColor;\n}\n\nfn outlineMaxAlphaAtPos(uv: vec2<f32>) -> f32 {\n let thickness = outlineUniforms.uThickness;\n\n if (thickness.x == 0. || thickness.y == 0.) {\n return 0.;\n }\n \n let angleStep = outlineUniforms.uAngleStep;\n\n var displacedColor: vec4<f32>;\n var displacedPos: vec2<f32>;\n\n var maxAlpha: f32 = 0.;\n var displaced: vec2<f32>;\n var curColor: vec4<f32>;\n\n for (var angle = 0.; angle <= DOUBLE_PI; angle += angleStep)\n {\n displaced.x = uv.x + thickness.x * cos(angle);\n displaced.y = uv.y + thickness.y * sin(angle);\n curColor = textureSample(uTexture, uSampler, clamp(displaced, gfu.uInputClamp.xy, gfu.uInputClamp.zw));\n maxAlpha = max(maxAlpha, curColor.a);\n }\n\n return maxAlpha;\n}\n\nconst DOUBLE_PI: f32 = 3.14159265358979323846264 * 2.;",__defProp25=Object.defineProperty,__defNormalProp25=(t,r,n)=>r in t?__defProp25(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField25=(t,r,n)=>(__defNormalProp25(t,"symbol"!=typeof r?r+"":r,n),n),_OutlineFilter=class e extends Filter{constructor(...t){let r=t[0]??{};"number"==typeof r&&(deprecation("6.0.0","OutlineFilter constructor params are now options object. See params: { thickness, color, quality, alpha, knockout }"),r={thickness:r},void 0!==t[1]&&(r.color=t[1]),void 0!==t[2]&&(r.quality=t[2]),void 0!==t[3]&&(r.alpha=t[3]),void 0!==t[4]&&(r.knockout=t[4]));let n=(r={...e.DEFAULT_OPTIONS,...r}).quality??.1;super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source29,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment29.replace(/\$\{ANGLE_STEP\}/,e.getAngleStep(n).toFixed(7)),name:"outline-filter"}),resources:{outlineUniforms:{uThickness:{value:new Float32Array(2),type:"vec2<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:r.alpha,type:"f32"},uAngleStep:{value:0,type:"f32"},uKnockout:{value:+!!r.knockout,type:"f32"}}}}),__publicField25(this,"uniforms"),__publicField25(this,"_thickness"),__publicField25(this,"_quality"),__publicField25(this,"_color"),this.uniforms=this.resources.outlineUniforms.uniforms,this.uniforms.uAngleStep=e.getAngleStep(n),this._color=new Color,this.color=r.color??0,Object.assign(this,r)}apply(t,r,n,i){this.uniforms.uThickness[0]=this.thickness/r.source.width,this.uniforms.uThickness[1]=this.thickness/r.source.height,t.applyFilter(this,r,n,i)}static getAngleStep(t){return parseFloat((2*Math.PI/Math.max(t*e.MAX_SAMPLES,e.MIN_SAMPLES)).toFixed(7))}get thickness(){return this._thickness}set thickness(t){this._thickness=this.padding=t}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}get quality(){return this._quality}set quality(t){this._quality=t,this.uniforms.uAngleStep=e.getAngleStep(t)}get knockout(){return 1===this.uniforms.uKnockout}set knockout(t){this.uniforms.uKnockout=+!!t}};__publicField25(_OutlineFilter,"DEFAULT_OPTIONS",{thickness:1,color:0,alpha:1,quality:.1,knockout:!1}),__publicField25(_OutlineFilter,"MIN_SAMPLES",1),__publicField25(_OutlineFilter,"MAX_SAMPLES",100),init_globals(),init_globals(),init_globals(),init_globals(),init_globals();var fragment31="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uRadian;\nuniform vec2 uCenter;\nuniform float uRadius;\nuniform int uKernelSize;\n\nuniform vec4 uInputSize;\n\nconst int MAX_KERNEL_SIZE = 2048;\n\nvoid main(void)\n{\n vec4 color = texture(uTexture, vTextureCoord);\n\n if (uKernelSize == 0)\n {\n finalColor = color;\n return;\n }\n\n float aspect = uInputSize.y / uInputSize.x;\n vec2 center = uCenter.xy / uInputSize.xy;\n float gradient = uRadius / uInputSize.x * 0.3;\n float radius = uRadius / uInputSize.x - gradient * 0.5;\n int k = uKernelSize - 1;\n\n vec2 coord = vTextureCoord;\n vec2 dir = vec2(center - coord);\n float dist = length(vec2(dir.x, dir.y * aspect));\n\n float radianStep = uRadian;\n if (radius >= 0.0 && dist > radius) {\n float delta = dist - radius;\n float gap = gradient;\n float scale = 1.0 - abs(delta / gap);\n if (scale <= 0.0) {\n finalColor = color;\n return;\n }\n radianStep *= scale;\n }\n radianStep /= float(k);\n\n float s = sin(radianStep);\n float c = cos(radianStep);\n mat2 rotationMatrix = mat2(vec2(c, -s), vec2(s, c));\n\n for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {\n if (i == k) {\n break;\n }\n\n coord -= center;\n coord.y *= aspect;\n coord = rotationMatrix * coord;\n coord.y /= aspect;\n coord += center;\n\n vec4 sample = texture(uTexture, coord);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample;\n }\n\n finalColor = color / float(uKernelSize);\n}\n";init_globals();var source31="struct RadialBlurUniforms {\n uRadian: f32,\n uCenter: vec2<f32>,\n uKernelSize: f32,\n uRadius: f32,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> radialBlurUniforms : RadialBlurUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uRadian = radialBlurUniforms.uRadian;\n let uCenter = radialBlurUniforms.uCenter;\n let uKernelSize = radialBlurUniforms.uKernelSize;\n let uRadius = radialBlurUniforms.uRadius;\n \n var returnColorOnly = false;\n\n if (uKernelSize == 0)\n {\n returnColorOnly = true;\n }\n\n let aspect: f32 = gfu.uInputSize.y / gfu.uInputSize.x;\n let center: vec2<f32> = uCenter.xy / gfu.uInputSize.xy;\n let gradient: f32 = uRadius / gfu.uInputSize.x * 0.3;\n let radius: f32 = uRadius / gfu.uInputSize.x - gradient * 0.5;\n let k: i32 = i32(uKernelSize - 1);\n\n var coord: vec2<f32> = uv;\n let dir: vec2<f32> = vec2<f32>(center - coord);\n let dist: f32 = length(vec2<f32>(dir.x, dir.y * aspect));\n\n var radianStep: f32 = uRadian;\n \n if (radius >= 0.0 && dist > radius)\n {\n let delta: f32 = dist - radius;\n let gap: f32 = gradient;\n let scale: f32 = 1.0 - abs(delta / gap);\n if (scale <= 0.0) {\n returnColorOnly = true;\n }\n radianStep *= scale;\n }\n\n radianStep /= f32(k);\n\n let s: f32 = sin(radianStep);\n let c: f32 = cos(radianStep);\n let rotationMatrix: mat2x2<f32> = mat2x2<f32>(vec2<f32>(c, -s), vec2<f32>(s, c));\n \n var color: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let baseColor = vec4<f32>(color);\n\n let minK: i32 = min(i32(uKernelSize) - 1, MAX_KERNEL_SIZE - 1);\n\n for(var i: i32 = 0; i < minK; i += 1) \n {\n coord -= center;\n coord.y *= aspect;\n coord = rotationMatrix * coord;\n coord.y /= aspect;\n coord += center;\n let sample: vec4<f32> = textureSample(uTexture, uSampler, coord);\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n color += sample;\n }\n\n return select(color / f32(uKernelSize), baseColor, returnColorOnly);\n}\n\nconst MAX_KERNEL_SIZE: i32 = 2048;",__defProp26=Object.defineProperty,__defNormalProp26=(t,r,n)=>r in t?__defProp26(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField26=(t,r,n)=>(__defNormalProp26(t,"symbol"!=typeof r?r+"":r,n),n),_RadialBlurFilter=class e extends Filter{constructor(...t){let r=t[0]??{};if("number"==typeof r){if(deprecation("6.0.0","RadialBlurFilter constructor params are now options object. See params: { angle, center, kernelSize, radius }"),r={angle:r},t[1]){let n="x"in t[1]?t[1].x:t[1][0],i="y"in t[1]?t[1].y:t[1][1];r.center={x:n,y:i}}t[2]&&(r.kernelSize=t[2]),t[3]&&(r.radius=t[3])}r={...e.DEFAULT_OPTIONS,...r},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source31,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment31,name:"radial-blur-filter"}),resources:{radialBlurUniforms:{uRadian:{value:0,type:"f32"},uCenter:{value:r.center,type:"vec2<f32>"},uKernelSize:{value:r.kernelSize,type:"i32"},uRadius:{value:r.radius,type:"f32"}}}}),__publicField26(this,"uniforms"),__publicField26(this,"_angle"),__publicField26(this,"_kernelSize"),this.uniforms=this.resources.radialBlurUniforms.uniforms,Object.assign(this,r)}_updateKernelSize(){this.uniforms.uKernelSize=0!==this._angle?this.kernelSize:0}get angle(){return this._angle}set angle(t){this._angle=t,this.uniforms.uRadian=t*Math.PI/180,this._updateKernelSize()}get center(){return this.uniforms.uCenter}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.center.x}set centerX(t){this.center.x=t}get centerY(){return this.center.y}set centerY(t){this.center.y=t}get kernelSize(){return this._kernelSize}set kernelSize(t){this._kernelSize=t,this._updateKernelSize()}get radius(){return this.uniforms.uRadius}set radius(t){this.uniforms.uRadius=t<0||t===1/0?-1:t}};__publicField26(_RadialBlurFilter,"DEFAULT_OPTIONS",{angle:0,center:{x:0,y:0},kernelSize:5,radius:-1}),init_globals(),init_globals();var fragment32="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uMirror;\nuniform float uBoundary;\nuniform vec2 uAmplitude;\nuniform vec2 uWavelength;\nuniform vec2 uAlpha;\nuniform float uTime;\nuniform vec2 uDimensions;\n\nuniform vec4 uInputSize;\nuniform vec4 uInputClamp;\n\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main(void)\n{\n vec2 pixelCoord = vTextureCoord.xy * uInputSize.xy;\n vec2 coord = pixelCoord / uDimensions;\n\n if (coord.y < uBoundary) {\n finalColor = texture(uTexture, vTextureCoord);\n return;\n }\n\n float k = (coord.y - uBoundary) / (1. - uBoundary + 0.0001);\n float areaY = uBoundary * uDimensions.y / uInputSize.y;\n float v = areaY + areaY - vTextureCoord.y;\n float y = uMirror > 0.5 ? v : vTextureCoord.y;\n\n float _amplitude = ((uAmplitude.y - uAmplitude.x) * k + uAmplitude.x ) / uInputSize.x;\n float _waveLength = ((uWavelength.y - uWavelength.x) * k + uWavelength.x) / uInputSize.y;\n float _alpha = (uAlpha.y - uAlpha.x) * k + uAlpha.x;\n\n float x = vTextureCoord.x + cos(v * 6.28 / _waveLength - uTime) * _amplitude;\n x = clamp(x, uInputClamp.x, uInputClamp.z);\n\n vec4 color = texture(uTexture, vec2(x, y));\n\n finalColor = color * _alpha;\n}\n";init_globals();var source32="struct ReflectionUniforms {\n uMirror: f32,\n uBoundary: f32,\n uAmplitude: vec2<f32>,\n uWavelength: vec2<f32>,\n uAlpha: vec2<f32>,\n uTime: f32,\n uDimensions: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> reflectionUniforms : ReflectionUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uDimensions: vec2<f32> = reflectionUniforms.uDimensions;\n let uBoundary: f32 = reflectionUniforms.uBoundary;\n let uMirror: bool = reflectionUniforms.uMirror > 0.5;\n let uAmplitude: vec2<f32> = reflectionUniforms.uAmplitude;\n let uWavelength: vec2<f32> = reflectionUniforms.uWavelength;\n let uAlpha: vec2<f32> = reflectionUniforms.uAlpha;\n let uTime: f32 = reflectionUniforms.uTime;\n\n let pixelCoord: vec2<f32> = uv * gfu.uInputSize.xy;\n let coord: vec2<f32> = pixelCoord /uDimensions;\n var returnColorOnly: bool = false;\n\n if (coord.y < uBoundary) {\n returnColorOnly = true;\n }\n\n let k: f32 = (coord.y - uBoundary) / (1. - uBoundary + 0.0001);\n let areaY: f32 = uBoundary * uDimensions.y / gfu.uInputSize.y;\n let v: f32 = areaY + areaY - uv.y;\n let y: f32 = select(uv.y, v, uMirror);\n\n let amplitude: f32 = ((uAmplitude.y - uAmplitude.x) * k + uAmplitude.x ) / gfu.uInputSize.x;\n let waveLength: f32 = ((uWavelength.y - uWavelength.x) * k + uWavelength.x) / gfu.uInputSize.y;\n let alpha: f32 = select((uAlpha.y - uAlpha.x) * k + uAlpha.x, 1., returnColorOnly);\n\n var x: f32 = uv.x + cos(v * 6.28 / waveLength - uTime) * amplitude;\n x = clamp(x, gfu.uInputClamp.x, gfu.uInputClamp.z);\n \n return textureSample(uTexture, uSampler, select(vec2<f32>(x, y), uv, returnColorOnly)) * alpha;\n}\n\nfn rand(co: vec2<f32>) -> f32 \n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}",__defProp27=Object.defineProperty,__defNormalProp27=(t,r,n)=>r in t?__defProp27(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField27=(t,r,n)=>(__defNormalProp27(t,"symbol"!=typeof r?r+"":r,n),n),_ReflectionFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source32,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment32,name:"reflection-filter"}),resources:{reflectionUniforms:{uMirror:{value:+!!t.mirror,type:"f32"},uBoundary:{value:t.boundary,type:"f32"},uAmplitude:{value:t.amplitude,type:"vec2<f32>"},uWavelength:{value:t.waveLength,type:"vec2<f32>"},uAlpha:{value:t.alpha,type:"vec2<f32>"},uTime:{value:t.time,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField27(this,"uniforms"),__publicField27(this,"time",0),this.uniforms=this.resources.reflectionUniforms.uniforms,Object.assign(this,t)}apply(t,r,n,i){this.uniforms.uDimensions[0]=r.frame.width,this.uniforms.uDimensions[1]=r.frame.height,this.uniforms.uTime=this.time,t.applyFilter(this,r,n,i)}get mirror(){return this.uniforms.uMirror>.5}set mirror(t){this.uniforms.uMirror=+!!t}get boundary(){return this.uniforms.uBoundary}set boundary(t){this.uniforms.uBoundary=t}get amplitude(){return Array.from(this.uniforms.uAmplitude)}set amplitude(t){this.uniforms.uAmplitude[0]=t[0],this.uniforms.uAmplitude[1]=t[1]}get amplitudeStart(){return this.uniforms.uAmplitude[0]}set amplitudeStart(t){this.uniforms.uAmplitude[0]=t}get amplitudeEnd(){return this.uniforms.uAmplitude[1]}set amplitudeEnd(t){this.uniforms.uAmplitude[1]=t}get waveLength(){return Array.from(this.uniforms.uWavelength)}set waveLength(t){this.uniforms.uWavelength[0]=t[0],this.uniforms.uWavelength[1]=t[1]}get wavelengthStart(){return this.uniforms.uWavelength[0]}set wavelengthStart(t){this.uniforms.uWavelength[0]=t}get wavelengthEnd(){return this.uniforms.uWavelength[1]}set wavelengthEnd(t){this.uniforms.uWavelength[1]=t}get alpha(){return Array.from(this.uniforms.uAlpha)}set alpha(t){this.uniforms.uAlpha[0]=t[0],this.uniforms.uAlpha[1]=t[1]}get alphaStart(){return this.uniforms.uAlpha[0]}set alphaStart(t){this.uniforms.uAlpha[0]=t}get alphaEnd(){return this.uniforms.uAlpha[1]}set alphaEnd(t){this.uniforms.uAlpha[1]=t}};__publicField27(_ReflectionFilter,"DEFAULT_OPTIONS",{mirror:!0,boundary:.5,amplitude:[0,20],waveLength:[30,100],alpha:[1,1],time:0}),init_globals(),init_globals();var fragment33="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec4 uInputSize;\nuniform vec2 uRed;\nuniform vec2 uGreen;\nuniform vec2 uBlue;\n\nvoid main(void)\n{\n float r = texture(uTexture, vTextureCoord + uRed/uInputSize.xy).r;\n float g = texture(uTexture, vTextureCoord + uGreen/uInputSize.xy).g;\n float b = texture(uTexture, vTextureCoord + uBlue/uInputSize.xy).b;\n float a = texture(uTexture, vTextureCoord).a;\n finalColor = vec4(r, g, b, a);\n}\n";init_globals();var source33="struct RgbSplitUniforms {\n uRed: vec2<f32>,\n uGreen: vec2<f32>,\n uBlue: vec3<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> rgbSplitUniforms : RgbSplitUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let r = textureSample(uTexture, uSampler, uv + vec2<f32>(rgbSplitUniforms.uRed.x / gfu.uInputSize.x, rgbSplitUniforms.uRed.y / gfu.uInputSize.y)).r;\n let g = textureSample(uTexture, uSampler, uv + vec2<f32>(rgbSplitUniforms.uGreen.x / gfu.uInputSize.x, rgbSplitUniforms.uGreen.y / gfu.uInputSize.y)).g;\n let b = textureSample(uTexture, uSampler, uv + vec2<f32>(rgbSplitUniforms.uBlue.x / gfu.uInputSize.x, rgbSplitUniforms.uBlue.y / gfu.uInputSize.y)).b;\n let a = textureSample(uTexture, uSampler, uv).a;\n return vec4<f32>(r, g, b, a);\n}\n",__defProp28=Object.defineProperty,__defNormalProp28=(t,r,n)=>r in t?__defProp28(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField28=(t,r,n)=>(__defNormalProp28(t,"symbol"!=typeof r?r+"":r,n),n),_RGBSplitFilter=class e extends Filter{constructor(...t){let r=t[0]??{};(Array.isArray(r)||"x"in r&&"y"in r)&&(deprecation("6.0.0","RGBSplitFilter constructor params are now options object. See params: { red, green, blue }"),r={red:r},void 0!==t[1]&&(r.green=t[1]),void 0!==t[2]&&(r.blue=t[2])),r={...e.DEFAULT_OPTIONS,...r},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source33,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment33,name:"rgb-split-filter"}),resources:{rgbSplitUniforms:{uRed:{value:r.red,type:"vec2<f32>"},uGreen:{value:r.green,type:"vec2<f32>"},uBlue:{value:r.blue,type:"vec2<f32>"}}}}),__publicField28(this,"uniforms"),this.uniforms=this.resources.rgbSplitUniforms.uniforms,Object.assign(this,r)}get red(){return this.uniforms.uRed}set red(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uRed=t}get redX(){return this.red.x}set redX(t){this.red.x=t}get redY(){return this.red.y}set redY(t){this.red.y=t}get green(){return this.uniforms.uGreen}set green(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uGreen=t}get greenX(){return this.green.x}set greenX(t){this.green.x=t}get greenY(){return this.green.y}set greenY(t){this.green.y=t}get blue(){return this.uniforms.uBlue}set blue(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uBlue=t}get blueX(){return this.blue.x}set blueX(t){this.blue.x=t}get blueY(){return this.blue.y}set blueY(t){this.blue.y=t}};__publicField28(_RGBSplitFilter,"DEFAULT_OPTIONS",{red:{x:-10,y:0},green:{x:0,y:10},blue:{x:0,y:0}}),init_globals(),init_globals();var fragment34="\nprecision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uCenter;\nuniform float uTime;\nuniform float uSpeed;\nuniform vec4 uWave;\n\nuniform vec4 uInputSize;\nuniform vec4 uInputClamp;\n\nconst float PI = 3.14159;\n\nvoid main()\n{\n float uAmplitude = uWave[0];\n float uWavelength = uWave[1];\n float uBrightness = uWave[2];\n float uRadius = uWave[3];\n\n float halfWavelength = uWavelength * 0.5 / uInputSize.x;\n float maxRadius = uRadius / uInputSize.x;\n float currentRadius = uTime * uSpeed / uInputSize.x;\n\n float fade = 1.0;\n\n if (maxRadius > 0.0) {\n if (currentRadius > maxRadius) {\n finalColor = texture(uTexture, vTextureCoord);\n return;\n }\n fade = 1.0 - pow(currentRadius / maxRadius, 2.0);\n }\n\n vec2 dir = vec2(vTextureCoord - uCenter / uInputSize.xy);\n dir.y *= uInputSize.y / uInputSize.x;\n float dist = length(dir);\n\n if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {\n finalColor = texture(uTexture, vTextureCoord);\n return;\n }\n\n vec2 diffUV = normalize(dir);\n\n float diff = (dist - currentRadius) / halfWavelength;\n\n float p = 1.0 - pow(abs(diff), 2.0);\n\n // float powDiff = diff * pow(p, 2.0) * ( amplitude * fade );\n float powDiff = 1.25 * sin(diff * PI) * p * ( uAmplitude * fade );\n\n vec2 offset = diffUV * powDiff / uInputSize.xy;\n\n // Do clamp :\n vec2 coord = vTextureCoord + offset;\n vec2 clampedCoord = clamp(coord, uInputClamp.xy, uInputClamp.zw);\n vec4 color = texture(uTexture, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n // No clamp :\n // finalColor = texture(uTexture, vTextureCoord + offset);\n\n color.rgb *= 1.0 + (uBrightness - 1.0) * p * fade;\n\n finalColor = color;\n}\n";init_globals();var source34="\nstruct ShockWaveUniforms {\n uTime: f32,\n uOffset: vec2<f32>,\n uSpeed: f32,\n uWave: vec4<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> shockwaveUniforms : ShockWaveUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n\n let uTime = shockwaveUniforms.uTime;\n let uOffset = shockwaveUniforms.uOffset;\n let uSpeed = shockwaveUniforms.uSpeed;\n let uAmplitude = shockwaveUniforms.uWave[0];\n let uWavelength = shockwaveUniforms.uWave[1];\n let uBrightness = shockwaveUniforms.uWave[2];\n let uRadius = shockwaveUniforms.uWave[3];\n let halfWavelength: f32 = uWavelength * 0.5 / gfu.uInputSize.x;\n let maxRadius: f32 = uRadius / gfu.uInputSize.x;\n let currentRadius: f32 = uTime * uSpeed / gfu.uInputSize.x;\n var fade: f32 = 1.0;\n var returnColorOnly: bool = false;\n \n if (maxRadius > 0.0) {\n if (currentRadius > maxRadius) {\n returnColorOnly = true;\n }\n fade = 1.0 - pow(currentRadius / maxRadius, 2.0);\n }\n var dir: vec2<f32> = vec2<f32>(uv - uOffset / gfu.uInputSize.xy);\n dir.y *= gfu.uInputSize.y / gfu.uInputSize.x;\n\n let dist:f32 = length(dir);\n\n if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {\n returnColorOnly = true;\n }\n\n let diffUV: vec2<f32> = normalize(dir);\n let diff: f32 = (dist - currentRadius) / halfWavelength;\n let p: f32 = 1.0 - pow(abs(diff), 2.0);\n let powDiff: f32 = 1.25 * sin(diff * PI) * p * ( uAmplitude * fade );\n let offset: vec2<f32> = diffUV * powDiff / gfu.uInputSize.xy;\n // Do clamp :\n let coord: vec2<f32> = uv + offset;\n let clampedCoord: vec2<f32> = clamp(coord, gfu.uInputClamp.xy, gfu.uInputClamp.zw);\n\n var clampedColor: vec4<f32> = textureSample(uTexture, uSampler, clampedCoord);\n \n if (boolVec2(coord, clampedCoord)) \n {\n clampedColor *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n // No clamp :\n var finalColor = clampedColor;\n\n return select(finalColor, textureSample(uTexture, uSampler, uv), returnColorOnly);\n}\n\nfn boolVec2(x: vec2<f32>, y: vec2<f32>) -> bool\n{\n if (x.x == y.x && x.y == y.y)\n {\n return true;\n }\n \n return false;\n}\n\nconst PI: f32 = 3.14159265358979323846264;\n",__defProp29=Object.defineProperty,__defNormalProp29=(t,r,n)=>r in t?__defProp29(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField29=(t,r,n)=>(__defNormalProp29(t,"symbol"!=typeof r?r+"":r,n),n),_ShockwaveFilter=class e extends Filter{constructor(...t){let r=t[0]??{};(Array.isArray(r)||"x"in r&&"y"in r)&&(deprecation("6.0.0","ShockwaveFilter constructor params are now options object. See params: { center, speed, amplitude, wavelength, brightness, radius, time }"),r={center:r,...t[1]},void 0!==t[2]&&(r.time=t[2])),r={...e.DEFAULT_OPTIONS,...r},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source34,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment34,name:"shockwave-filter"}),resources:{shockwaveUniforms:{uTime:{value:r.time,type:"f32"},uCenter:{value:r.center,type:"vec2<f32>"},uSpeed:{value:r.speed,type:"f32"},uWave:{value:new Float32Array(4),type:"vec4<f32>"}}}}),__publicField29(this,"uniforms"),__publicField29(this,"time"),this.time=0,this.uniforms=this.resources.shockwaveUniforms.uniforms,Object.assign(this,r)}apply(t,r,n,i){this.uniforms.uTime=this.time,t.applyFilter(this,r,n,i)}get center(){return this.uniforms.uCenter}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.uniforms.uCenter.x}set centerX(t){this.uniforms.uCenter.x=t}get centerY(){return this.uniforms.uCenter.y}set centerY(t){this.uniforms.uCenter.y=t}get speed(){return this.uniforms.uSpeed}set speed(t){this.uniforms.uSpeed=t}get amplitude(){return this.uniforms.uWave[0]}set amplitude(t){this.uniforms.uWave[0]=t}get wavelength(){return this.uniforms.uWave[1]}set wavelength(t){this.uniforms.uWave[1]=t}get brightness(){return this.uniforms.uWave[2]}set brightness(t){this.uniforms.uWave[2]=t}get radius(){return this.uniforms.uWave[3]}set radius(t){this.uniforms.uWave[3]=t}};__publicField29(_ShockwaveFilter,"DEFAULT_OPTIONS",{center:{x:0,y:0},speed:500,amplitude:30,wavelength:160,brightness:1,radius:-1}),init_globals(),init_globals();var fragment35="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform sampler2D uMapTexture;\nuniform vec3 uColor;\nuniform float uAlpha;\nuniform vec2 uDimensions;\n\nuniform vec4 uInputSize;\n\nvoid main() {\n vec4 diffuseColor = texture(uTexture, vTextureCoord);\n vec2 lightCoord = (vTextureCoord * uInputSize.xy) / uDimensions;\n vec4 light = texture(uMapTexture, lightCoord);\n vec3 ambient = uColor.rgb * uAlpha;\n vec3 intensity = ambient + light.rgb;\n vec3 color = diffuseColor.rgb * intensity;\n finalColor = vec4(color, diffuseColor.a);\n}\n";init_globals();var source35="struct SimpleLightmapUniforms {\n uColor: vec3<f32>,\n uAlpha: f32,\n uDimensions: vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> simpleLightmapUniforms : SimpleLightmapUniforms;\n@group(1) @binding(1) var uMapTexture: texture_2d<f32>;\n@group(1) @binding(2) var uMapSampler: sampler;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>,\n) -> @location(0) vec4<f32> {\n let uColor = simpleLightmapUniforms.uColor;\n let uAlpha = simpleLightmapUniforms.uAlpha;\n let uDimensions = simpleLightmapUniforms.uDimensions;\n\n let diffuseColor: vec4<f32> = textureSample(uTexture, uSampler, uv);\n let lightCoord: vec2<f32> = (uv * gfu.uInputSize.xy) / simpleLightmapUniforms.uDimensions;\n let light: vec4<f32> = textureSample(uMapTexture, uMapSampler, lightCoord);\n let ambient: vec3<f32> = uColor * uAlpha;\n let intensity: vec3<f32> = ambient + light.rgb;\n let finalColor: vec3<f32> = diffuseColor.rgb * intensity;\n return vec4<f32>(finalColor, diffuseColor.a);\n}",__defProp30=Object.defineProperty,__defNormalProp30=(t,r,n)=>r in t?__defProp30(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField30=(t,r,n)=>(__defNormalProp30(t,"symbol"!=typeof r?r+"":r,n),n),_SimpleLightmapFilter=class e extends Filter{constructor(...t){let r=t[0]??{};if(r instanceof Texture&&(deprecation("6.0.0","SimpleLightmapFilter constructor params are now options object. See params: { lightMap, color, alpha }"),r={lightMap:r},void 0!==t[1]&&(r.color=t[1]),void 0!==t[2]&&(r.alpha=t[2])),!(r={...e.DEFAULT_OPTIONS,...r}).lightMap)throw Error("No light map texture source was provided to SimpleLightmapFilter");super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source35,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment35,name:"simple-lightmap-filter"}),resources:{simpleLightmapUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:r.alpha,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}},uMapTexture:r.lightMap.source,uMapSampler:r.lightMap.source.style}}),__publicField30(this,"uniforms"),__publicField30(this,"_color"),__publicField30(this,"_lightMap"),this.uniforms=this.resources.simpleLightmapUniforms.uniforms,this._color=new Color,this.color=r.color??0,Object.assign(this,r)}apply(t,r,n,i){this.uniforms.uDimensions[0]=r.frame.width,this.uniforms.uDimensions[1]=r.frame.height,t.applyFilter(this,r,n,i)}get lightMap(){return this._lightMap}set lightMap(t){this._lightMap=t,this.resources.uMapTexture=t.source,this.resources.uMapSampler=t.source.style}get color(){return this._color.value}set color(t){this._color.setValue(t);let[r,n,i]=this._color.toArray();this.uniforms.uColor[0]=r,this.uniforms.uColor[1]=n,this.uniforms.uColor[2]=i}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}};__publicField30(_SimpleLightmapFilter,"DEFAULT_OPTIONS",{lightMap:Texture.WHITE,color:0,alpha:1}),init_globals(),init_globals();var fragment36="in vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uBlur;\nuniform vec2 uStart;\nuniform vec2 uEnd;\nuniform vec2 uDelta;\nuniform vec2 uDimensions;\n\nfloat random(vec3 scale, float seed)\n{\n return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);\n}\n\nvoid main(void)\n{\n vec4 color = vec4(0.0);\n float total = 0.0;\n\n float blur = uBlur[0];\n float gradientBlur = uBlur[1];\n\n float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);\n vec2 normal = normalize(vec2(uStart.y - uEnd.y, uEnd.x - uStart.x));\n float radius = smoothstep(0.0, 1.0, abs(dot(vTextureCoord * uDimensions - uStart, normal)) / gradientBlur) * blur;\n\n for (float t = -30.0; t <= 30.0; t++)\n {\n float percent = (t + offset - 0.5) / 30.0;\n float weight = 1.0 - abs(percent);\n vec4 sample = texture(uTexture, vTextureCoord + uDelta / uDimensions * percent * radius);\n sample.rgb *= sample.a;\n color += sample * weight;\n total += weight;\n }\n\n color /= total;\n color.rgb /= color.a + 0.00001;\n\n finalColor = color;\n}\n";init_globals();var source36="struct TiltShiftUniforms {\n uBlur: vec2<f32>,\n uStart: vec2<f32>,\n uEnd: vec2<f32>,\n uDelta: vec2<f32>,\n uDimensions: vec2<f32>,\n};\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> tiltShiftUniforms : TiltShiftUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uBlur = tiltShiftUniforms.uBlur[0];\n let uBlurGradient = tiltShiftUniforms.uBlur[1];\n let uStart = tiltShiftUniforms.uStart;\n let uEnd = tiltShiftUniforms.uEnd;\n let uDelta = tiltShiftUniforms.uDelta;\n let uDimensions = tiltShiftUniforms.uDimensions;\n\n var color: vec4<f32> = vec4<f32>(0.0);\n var total: f32 = 0.0;\n\n let offset: f32 = random(position, vec3<f32>(12.9898, 78.233, 151.7182), 0.0);\n let normal: vec2<f32> = normalize(vec2<f32>(uStart.y - uEnd.y, uEnd.x - uStart.x));\n let radius: f32 = smoothstep(0.0, 1.0, abs(dot(uv * uDimensions - uStart, normal)) / uBlurGradient) * uBlur;\n\n for (var t: f32 = -30.0; t <= 30.0; t += 1.0)\n {\n var percent: f32 = (t + offset - 0.5) / 30.0;\n var weight: f32 = 1.0 - abs(percent);\n var sample: vec4<f32> = textureSample(uTexture, uSampler, uv + uDelta / uDimensions * percent * radius);\n sample = vec4<f32>(sample.xyz * sample.a, sample.a); // multiply sample.rgb with sample.a\n color += sample * weight;\n total += weight;\n }\n\n color /= total;\n color = vec4<f32>(color.xyz / (color.a + 0.00001), color.a); // divide color.rgb by color.a + 0.00001\n\n return color;\n}\n\n\nfn random(position: vec4<f32>, scale: vec3<f32>, seed: f32) -> f32\n{\n return fract(sin(dot(position.xyz + seed, scale)) * 43758.5453 + seed);\n}",__defProp31=Object.defineProperty,__defNormalProp31=(t,r,n)=>r in t?__defProp31(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField31=(t,r,n)=>(__defNormalProp31(t,"symbol"!=typeof r?r+"":r,n),n),_TiltShiftAxisFilter=class e extends Filter{constructor(t){let{width:r,height:n}=ViewSystem.defaultOptions;t={...e.DEFAULT_OPTIONS,start:{x:0,y:n/2},end:{x:r,y:n/2},...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source36,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment36,name:"tilt-shift-axis-filter"}),resources:{tiltShiftUniforms:{uBlur:{value:new Float32Array([t.blur,t.gradientBlur]),type:"vec2<f32>"},uStart:{value:t.start,type:"vec2<f32>"},uEnd:{value:t.end,type:"vec2<f32>"},uDelta:{value:new Float32Array([0,0]),type:"vec2<f32>"},uDimensions:{value:new Float32Array([r,n]),type:"vec2<f32>"}}}}),__publicField31(this,"uniforms"),__publicField31(this,"_tiltAxis"),this.uniforms=this.resources.tiltShiftUniforms.uniforms,this._tiltAxis=t.axis}updateDimensions(t){let{uDimensions:r}=this.uniforms;r[0]=t.frame.width,r[1]=t.frame.height}updateDelta(){if(this.uniforms.uDelta[0]=0,this.uniforms.uDelta[1]=0,void 0===this._tiltAxis)return;let t=this.uniforms.uEnd,r=this.uniforms.uStart,n=t.x-r.x,i=t.y-r.y,a=Math.sqrt(n*n+i*i),o="vertical"===this._tiltAxis;this.uniforms.uDelta[0]=o?-i/a:n/a,this.uniforms.uDelta[1]=o?n/a:i/a}};__publicField31(_TiltShiftAxisFilter,"DEFAULT_OPTIONS",{blur:100,gradientBlur:600}),init_globals(),init_globals(),init_globals();var fragment37="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform vec2 uTwist;\nuniform vec2 uOffset;\nuniform vec4 uInputSize;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= uInputSize.xy;\n coord += uInputSize.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= uInputSize.zw;\n coord /= uInputSize.xy;\n\n return coord;\n}\n\nvec2 twist(vec2 coord)\n{\n coord -= uOffset;\n\n float dist = length(coord);\n float uRadius = uTwist[0];\n float uAngle = uTwist[1];\n\n if (dist < uRadius)\n {\n float ratioDist = (uRadius - dist) / uRadius;\n float angleMod = ratioDist * ratioDist * uAngle;\n float s = sin(angleMod);\n float c = cos(angleMod);\n coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);\n }\n\n coord += uOffset;\n\n return coord;\n}\n\nvoid main(void)\n{\n vec2 coord = mapCoord(vTextureCoord);\n coord = twist(coord);\n coord = unmapCoord(coord);\n finalColor = texture(uTexture, coord);\n}\n";init_globals();var source37="struct TwistUniforms {\n uTwist:vec2<f32>,\n uOffset:vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> twistUniforms : TwistUniforms;\n\n@fragment\nfn mainFragment(\n @location(0) uv: vec2<f32>,\n @builtin(position) position: vec4<f32>\n) -> @location(0) vec4<f32> {\n return textureSample(uTexture, uSampler, unmapCoord(twist(mapCoord(uv))));\n}\n\nfn mapCoord(coord: vec2<f32> ) -> vec2<f32>\n{\n var mappedCoord: vec2<f32> = coord;\n mappedCoord *= gfu.uInputSize.xy;\n mappedCoord += gfu.uOutputFrame.xy;\n return mappedCoord;\n}\n\nfn unmapCoord(coord: vec2<f32> ) -> vec2<f32>\n{\n var mappedCoord: vec2<f32> = coord;\n mappedCoord -= gfu.uOutputFrame.xy;\n mappedCoord /= gfu.uInputSize.xy;\n return mappedCoord;\n}\n\nfn twist(coord: vec2<f32>) -> vec2<f32>\n{\n var twistedCoord: vec2<f32> = coord;\n let uRadius = twistUniforms.uTwist[0];\n let uAngle = twistUniforms.uTwist[1];\n let uOffset = twistUniforms.uOffset;\n\n twistedCoord -= uOffset;\n \n let dist = length(twistedCoord);\n\n if (dist < uRadius)\n {\n let ratioDist: f32 = (uRadius - dist) / uRadius;\n let angleMod: f32 = ratioDist * ratioDist * uAngle;\n let s: f32 = sin(angleMod);\n let c: f32 = cos(angleMod);\n twistedCoord = vec2<f32>(twistedCoord.x * c - twistedCoord.y * s, twistedCoord.x * s + twistedCoord.y * c);\n }\n\n twistedCoord += uOffset;\n return twistedCoord;\n}\n",__defProp32=Object.defineProperty,__defNormalProp32=(t,r,n)=>r in t?__defProp32(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField32=(t,r,n)=>(__defNormalProp32(t,"symbol"!=typeof r?r+"":r,n),n),_TwistFilter=class e extends Filter{constructor(t){t={...e.DEFAULT_OPTIONS,...t},super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source37,entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment37,name:"twist-filter"}),resources:{twistUniforms:{uTwist:{value:[t.radius??0,t.angle??0],type:"vec2<f32>"},uOffset:{value:t.offset,type:"vec2<f32>"}}},...t}),__publicField32(this,"uniforms"),this.uniforms=this.resources.twistUniforms.uniforms}get radius(){return this.uniforms.uTwist[0]}set radius(t){this.uniforms.uTwist[0]=t}get angle(){return this.uniforms.uTwist[1]}set angle(t){this.uniforms.uTwist[1]=t}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t}get offsetX(){return this.offset.x}set offsetX(t){this.offset.x=t}get offsetY(){return this.offset.y}set offsetY(t){this.offset.y=t}};__publicField32(_TwistFilter,"DEFAULT_OPTIONS",{padding:20,radius:200,angle:4,offset:{x:0,y:0}}),init_globals(),init_globals();var fragment38="precision highp float;\nin vec2 vTextureCoord;\nout vec4 finalColor;\n\nuniform sampler2D uTexture;\nuniform float uStrength;\nuniform vec2 uCenter;\nuniform vec2 uRadii;\n\nuniform vec4 uInputSize;\n\nconst float MAX_KERNEL_SIZE = ${MAX_KERNEL_SIZE};\n\n// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nhighp float rand(vec2 co, float seed) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot(co + seed, vec2(a, b)), sn = mod(dt, 3.14159);\n return fract(sin(sn) * c + seed);\n}\n\nvoid main() {\n float minGradient = uRadii[0] * 0.3;\n float innerRadius = (uRadii[0] + minGradient * 0.5) / uInputSize.x;\n\n float gradient = uRadii[1] * 0.3;\n float radius = (uRadii[1] - gradient * 0.5) / uInputSize.x;\n\n float countLimit = MAX_KERNEL_SIZE;\n\n vec2 dir = vec2(uCenter.xy / uInputSize.xy - vTextureCoord);\n float dist = length(vec2(dir.x, dir.y * uInputSize.y / uInputSize.x));\n\n float strength = uStrength;\n\n float delta = 0.0;\n float gap;\n if (dist < innerRadius) {\n delta = innerRadius - dist;\n gap = minGradient;\n } else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity\n delta = dist - radius;\n gap = gradient;\n }\n\n if (delta > 0.0) {\n float normalCount = gap / uInputSize.x;\n delta = (normalCount - delta) / normalCount;\n countLimit *= delta;\n strength *= delta;\n if (countLimit < 1.0)\n {\n gl_FragColor = texture(uTexture, vTextureCoord);\n return;\n }\n }\n\n // randomize the lookup values to hide the fixed number of samples\n float offset = rand(vTextureCoord, 0.0);\n\n float total = 0.0;\n vec4 color = vec4(0.0);\n\n dir *= strength;\n\n for (float t = 0.0; t < MAX_KERNEL_SIZE; t++) {\n float percent = (t + offset) / MAX_KERNEL_SIZE;\n float weight = 4.0 * (percent - percent * percent);\n vec2 p = vTextureCoord + dir * percent;\n vec4 sample = texture(uTexture, p);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample * weight;\n total += weight;\n\n if (t > countLimit){\n break;\n }\n }\n\n color /= total;\n // switch back from pre-multiplied alpha\n // color.rgb /= color.a + 0.00001;\n\n gl_FragColor = color;\n}\n";init_globals();var source38="struct ZoomBlurUniforms {\n uStrength:f32,\n uCenter:vec2<f32>,\n uRadii:vec2<f32>,\n};\n\nstruct GlobalFilterUniforms {\n uInputSize:vec4<f32>,\n uInputPixel:vec4<f32>,\n uInputClamp:vec4<f32>,\n uOutputFrame:vec4<f32>,\n uGlobalFrame:vec4<f32>,\n uOutputTexture:vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;\n\n@group(0) @binding(1) var uTexture: texture_2d<f32>; \n@group(0) @binding(2) var uSampler: sampler;\n@group(1) @binding(0) var<uniform> zoomBlurUniforms : ZoomBlurUniforms;\n\n@fragment\nfn mainFragment(\n @builtin(position) position: vec4<f32>,\n @location(0) uv : vec2<f32>\n) -> @location(0) vec4<f32> {\n let uStrength = zoomBlurUniforms.uStrength;\n let uCenter = zoomBlurUniforms.uCenter;\n let uRadii = zoomBlurUniforms.uRadii;\n\n let minGradient: f32 = uRadii[0] * 0.3;\n let innerRadius: f32 = (uRadii[0] + minGradient * 0.5) / gfu.uInputSize.x;\n\n let gradient: f32 = uRadii[1] * 0.3;\n let radius: f32 = (uRadii[1] - gradient * 0.5) / gfu.uInputSize.x;\n\n let MAX_KERNEL_SIZE: f32 = ${MAX_KERNEL_SIZE};\n\n var countLimit: f32 = MAX_KERNEL_SIZE;\n\n var dir: vec2<f32> = vec2<f32>(uCenter / gfu.uInputSize.xy - uv);\n let dist: f32 = length(vec2<f32>(dir.x, dir.y * gfu.uInputSize.y / gfu.uInputSize.x));\n\n var strength: f32 = uStrength;\n\n var delta: f32 = 0.0;\n var gap: f32;\n\n if (dist < innerRadius) {\n delta = innerRadius - dist;\n gap = minGradient;\n } else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity\n delta = dist - radius;\n gap = gradient;\n }\n\n var returnColorOnly: bool = false;\n\n if (delta > 0.0) {\n let normalCount: f32 = gap / gfu.uInputSize.x;\n delta = (normalCount - delta) / normalCount;\n countLimit *= delta;\n strength *= delta;\n \n if (countLimit < 1.0)\n {\n returnColorOnly = true;;\n }\n }\n\n // randomize the lookup values to hide the fixed number of samples\n let offset: f32 = rand(uv, 0.0);\n\n var total: f32 = 0.0;\n var color: vec4<f32> = vec4<f32>(0.);\n\n dir *= strength;\n\n for (var t = 0.0; t < MAX_KERNEL_SIZE; t += 1.0) {\n let percent: f32 = (t + offset) / MAX_KERNEL_SIZE;\n let weight: f32 = 4.0 * (percent - percent * percent);\n let p: vec2<f32> = uv + dir * percent;\n let sample: vec4<f32> = textureSample(uTexture, uSampler, p);\n \n if (t < countLimit)\n {\n color += sample * weight;\n total += weight;\n }\n }\n\n color /= total;\n\n return select(color, textureSample(uTexture, uSampler, uv), returnColorOnly);\n}\n\nfn modulo(x: f32, y: f32) -> f32\n{\n return x - y * floor(x/y);\n}\n\n// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\nfn rand(co: vec2<f32>, seed: f32) -> f32\n{\n let a: f32 = 12.9898;\n let b: f32 = 78.233;\n let c: f32 = 43758.5453;\n let dt: f32 = dot(co + seed, vec2<f32>(a, b));\n let sn: f32 = modulo(dt, 3.14159);\n return fract(sin(sn) * c + seed);\n}",__defProp33=Object.defineProperty,__defNormalProp33=(t,r,n)=>r in t?__defProp33(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,__publicField33=(t,r,n)=>(__defNormalProp33(t,"symbol"!=typeof r?r+"":r,n),n),_ZoomBlurFilter=class e extends Filter{constructor(t){let r=(t={...e.DEFAULT_OPTIONS,...t}).maxKernelSize??32;super({gpuProgram:GpuProgram.from({vertex:{source:wgslVertex,entryPoint:"mainVertex"},fragment:{source:source38.replace("${MAX_KERNEL_SIZE}",r.toFixed(1)),entryPoint:"mainFragment"}}),glProgram:GlProgram.from({vertex:vertex3,fragment:fragment38.replace("${MAX_KERNEL_SIZE}",r.toFixed(1)),name:"zoom-blur-filter"}),resources:{zoomBlurUniforms:{uStrength:{value:t.strength,type:"f32"},uCenter:{value:t.center,type:"vec2<f32>"},uRadii:{value:new Float32Array(2),type:"vec2<f32>"}}}}),__publicField33(this,"uniforms"),this.uniforms=this.resources.zoomBlurUniforms.uniforms,Object.assign(this,t)}get strength(){return this.uniforms.uStrength}set strength(t){this.uniforms.uStrength=t}get center(){return this.uniforms.uCenter}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.uniforms.uCenter.x}set centerX(t){this.uniforms.uCenter.x=t}get centerY(){return this.uniforms.uCenter.y}set centerY(t){this.uniforms.uCenter.y=t}get innerRadius(){return this.uniforms.uRadii[0]}set innerRadius(t){this.uniforms.uRadii[0]=t}get radius(){return this.uniforms.uRadii[1]}set radius(t){this.uniforms.uRadii[1]=t<0||t===1/0?-1:t}};__publicField33(_ZoomBlurFilter,"DEFAULT_OPTIONS",{strength:.1,center:{x:0,y:0},innerRadius:0,radius:-1,maxKernelSize:32});var import_jsx_runtime4=__toESM(require_jsx_runtime()),itemFillAlpha=.4,highlightAlpha=.4,pointRadius=10,pointMarkForItem=(t,r)=>{let[n,i]=t,a=highlightColorForType("element"),o=new Graphics;return o.beginFill(a,itemFillAlpha),o.drawCircle(n,i,pointRadius),o.endFill(),o},rectMarkForItem=(t,r,n)=>{let i,{left:a,top:o,width:s,height:l}=t;i="element"===n?colorForName(r):highlightColorForType("searchArea"===n?"searchArea":"element");let u="highlight"===n?highlightAlpha:itemFillAlpha,d=new Graphics;if(d.beginFill(i,u),d.lineStyle(1,i,1),d.drawRect(a,o,s,l),d.endFill(),d.filters=[new DropShadowFilter({blur:2,quality:3,alpha:.4,offset:{x:4,y:4},color:3355443})],!r)return[d];let c=new Text2(r,{fontSize:18,fill:0});return c.x=a,c.y=Math.max(o-22,0),[d,c]},Blackboard=t=>{let r=t.highlightElements||[],n=r.map(t=>t.id),i=t.highlightRect,a=t.highlightPoints,o=t.uiContext,{size:s,screenshotBase64:l}=o,u=s.width,d=s.height,c=(0,import_react5.useRef)(null),h=(0,import_react5.useMemo)(()=>new Application,[]),[f,p]=(0,import_react5.useState)(!1),m=(0,import_react5.useMemo)(()=>new Container,[]),g=(0,import_react5.useMemo)(()=>new Container,[]),[b,y]=(0,import_react5.useState)(null),_=(0,import_react5.useRef)(void 0),{markerVisible:v,setMarkerVisible:A,elementsVisible:w,setTextsVisible:x}=useBlackboardPreference();(0,import_react5.useEffect)(()=>(Promise.resolve((async()=>{if(!c.current||!u)return;await h.init({width:u,height:d,background:0xffffff});let t=c.current;c.current.appendChild(h.canvas);let{clientWidth:r}=c.current.parentElement,n=.6*window.innerHeight;if(u/d<=r/n){let r=n/d;t.style.width=`${Math.floor(u*r)}px`,t.style.height=`${Math.floor(d*r)}px`}h.stage.addChild(m),h.stage.addChild(g),p(!0)})()),()=>{import_console_browserify.default.log("will destroy");try{h.destroy(!0,{children:!0,texture:!0})}catch(t){import_console_browserify.default.warn("destroy failed",t)}}),[h,u,d]),(0,import_react5.useEffect)(()=>{if(f)return h.stage.eventMode="static",h.stage.hitArea=new Rectangle(0,0,u,d),h.stage.on("click",r=>{import_console_browserify.default.log("pixi click",r);let{x:n,y:i}=r.data.global;t.onCanvasClick?.([Math.round(n),Math.round(i)])}),()=>{h?.stage?.off("click")}},[f,t.onCanvasClick,u,d]),(0,import_react5.useEffect)(()=>{if(!f)return;let t=new Image;t.onload=()=>{if(!h.stage)return;let r=Texture.from(t),n=new Sprite(r);n.x=0,n.y=0,n.width=u,n.height=d,n.eventMode="passive",h.stage.addChildAt(n,0),_.current=n},t.onerror=t=>{import_console_browserify.default.error("load screenshot failed",t)},t.src=l},[h.stage,f,u,d]);let{highlightElementRects:E}=(0,import_react5.useMemo)(()=>{if(m.removeChildren(),g.removeChildren(),m.eventMode="passive",g.eventMode="passive",i){let[t]=rectMarkForItem(i,"Search Area","searchArea");m.addChild(t)}return r.length&&r.forEach(t=>{let{rect:r,content:n,id:i}=t,[a]=rectMarkForItem(r,n,"highlight");m.addChild(a)}),a?.length&&a.forEach(t=>{let r=pointMarkForItem(t,"highlightPoint");m.addChild(r)}),(0,import_extractor2.treeToList)(o.tree).forEach(t=>{let{rect:r,content:i,id:a}=t;if(n.includes(a)||b?.id===a)return;let[o]=rectMarkForItem(r,i,"element");g.addChild(o)}),g.visible=w,{highlightElementRects:[]}},[h,f,r,o.tree,b,i,a]),S=null;return 1===E.length?S=(0,import_jsx_runtime4.jsx)("div",{className:"bottom-tip",children:(0,import_jsx_runtime4.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(E[0])]})}):E.length>1&&(S=(0,import_jsx_runtime4.jsx)("div",{className:"bottom-tip",children:(0,import_jsx_runtime4.jsxs)("div",{className:"bottom-tip-item",children:["Element: ",JSON.stringify(E)]})})),(0,import_jsx_runtime4.jsxs)("div",{className:"blackboard",children:[(0,import_jsx_runtime4.jsx)("div",{className:"blackboard-main-content",style:{width:"100%"},ref:c}),(0,import_jsx_runtime4.jsx)("div",{className:"blackboard-filter",style:{display:t.hideController?"none":"block"},children:(0,import_jsx_runtime4.jsx)("div",{className:"overlay-control",children:(0,import_jsx_runtime4.jsx)(import_antd2.Checkbox,{checked:w,onChange:t=>{x(t.target.checked),g.visible=t.target.checked},children:"Elements"})})}),(0,import_jsx_runtime4.jsx)("div",{className:"bottom-tip",style:{display:t.hideController?"none":"block"},children:S})]})},blackboard_default=Blackboard;init_globals();var globalTextureMap=new Map,loadTexture=async t=>{if(!globalTextureMap.has(t))return Assets.load(t).then(r=>{globalTextureMap.set(t,r)})},getTextureFromCache=t=>globalTextureMap.get(t),import_jsx_runtime5=__toESM(require_jsx_runtime()),canvasPaddingLeft=0,canvasPaddingTop=0,cubicBezier=(t,r,n,i,a)=>{let o=1-t;return r*o*o*o+3*n*t*o*o+3*i*t*t*o+a*t*t*t},cubicImage=t=>linear(t),cubicInsightElement=t=>cubicBezier(t,0,.5,.5,1),cubicMouse=t=>linear(t),linear=t=>t,sleep=t=>new Promise(r=>setTimeout(r,t)),ERROR_FRAME_CANCEL="frame cancel (this is an error on purpose)",frameKit=()=>{let t=!1;return{frame:r=>{if(t)throw Error(ERROR_FRAME_CANCEL);requestAnimationFrame(()=>{if(t)throw Error(ERROR_FRAME_CANCEL);r(performance.now())})},timeout:(r,n)=>{if(t)throw Error(ERROR_FRAME_CANCEL);setTimeout(()=>{if(t)throw Error(ERROR_FRAME_CANCEL);r()},n)},cancel:()=>{t=!0}}},singleElementFadeInDuration=80,LAYER_ORDER_IMG=0,LAYER_ORDER_INSIGHT=1,LAYER_ORDER_POINTER=2,LAYER_ORDER_SPINNING_POINTER=3,downloadReport=t=>{let r=new Blob([t],{type:"text/html"}),n=URL.createObjectURL(r),i=document.createElement("a");i.href=n,i.download="midscene_report.html",i.click()},RecordingSession=class{constructor(t){__publicField(this,"canvas"),__publicField(this,"mediaRecorder",null),__publicField(this,"chunks"),__publicField(this,"recording",!1),this.canvas=t,this.chunks=[]}start(){let t=new MediaRecorder(this.canvas.captureStream(60),{mimeType:"video/webm"});return t.ondataavailable=t=>{t.data.size>0&&this.chunks.push(t.data)},this.mediaRecorder=t,this.recording=!0,this.mediaRecorder.start()}stop(){this.recording&&this.mediaRecorder?(this.mediaRecorder.onstop=()=>{let t=new Blob(this.chunks,{type:"video/webm"}),r=URL.createObjectURL(t),n=document.createElement("a");n.href=r,n.download="midscene_replay.webm",n.click(),URL.revokeObjectURL(r)},this.mediaRecorder?.stop(),this.recording=!1,this.mediaRecorder=null):import_console_browserify.default.warn("not recording")}};function Player(t){let r,[n,i]=(0,import_react6.useState)(""),[a,o]=(0,import_react6.useState)(""),s=t?.replayScripts,l=t?.imageWidth||1920,u=t?.imageHeight||1080,d=t?.fitMode||"height",c=(0,import_react6.useRef)(s?.[0]?.img||null),h=(0,import_react6.useRef)(null),f=(0,import_react6.useMemo)(()=>new Application,[]),p=(0,import_react6.useRef)(null),m=(0,import_react6.useRef)(null),[g,b]=(0,import_react6.useState)(0),y=()=>{b(Date.now())},_=(0,import_react6.useMemo)(()=>new Container,[]),v=(0,import_react6.useMemo)(()=>{let t=new Container;return t.zIndex=LAYER_ORDER_INSIGHT,t},[]),A={left:0,top:0,width:l,pointerLeft:Math.round(l/2),pointerTop:Math.round(u/2)},[w,x]=(0,import_react6.useState)(-1),E=(0,import_react6.useRef)(!1);(0,import_react6.useEffect)(()=>(E.current=!1,()=>{E.current=!0}),[]);let S=(0,import_react6.useRef)({...A}),C=async()=>{let t=c.current;if(!t)return void import_console_browserify.default.warn("no image to update");getTextureFromCache(t)||(import_console_browserify.default.warn("image not loaded",t),await loadTexture(t));let r=getTextureFromCache(t);if(!r)throw Error("texture not found");let n=Sprite.from(r);if(!n)throw Error("sprite not found");let i="main-img",a=_.getChildByLabel(i);a&&_.removeChild(a),n.label=i,n.zIndex=LAYER_ORDER_IMG,n.width=l,n.height=u,_.addChild(n)},I=t=>{let r;m.current||(m.current=Sprite.from(mouseLoading),m.current.zIndex=LAYER_ORDER_SPINNING_POINTER,m.current.anchor.set(.5,.5),m.current.scale.set(.5),m.current.label="spinning-pointer"),m.current.x=p.current?.x||0,m.current.y=p.current?.y||0,_.addChild(m.current);let n=!1,i=a=>{if(n)return;r||(r=a);let o=(Math.sin((a-r)/500-Math.PI/2)+1)/2*Math.PI*2;m.current&&(m.current.rotation=o),t(i)};return t(i),()=>{m.current&&_.removeChild(m.current),n=!0}},T=async(t,r,n)=>{getTextureFromCache(t)||(import_console_browserify.default.warn("image not loaded",t),await loadTexture(t));let i=getTextureFromCache(t);if(!i)throw Error("texture not found");let a=Sprite.from(i),o=p.current?.x,s=p.current?.y;if("number"==typeof r&&(o=r),"number"==typeof n&&(s=n),void 0!==o&&void 0!==s){if(p.current){let t=_.getChildByLabel("pointer");t&&_.removeChild(t)}p.current=a,p.current.x=o,p.current.y=s,p.current.label="pointer",p.current.zIndex=LAYER_ORDER_POINTER,_.addChild(p.current)}else import_console_browserify.default.warn("invalid pointer position",r,n)},k=t=>{S.current=t;let r=Math.max(1,l/t.width);_.scale.set(r),_.x=Math.round(canvasPaddingLeft-t.left*r),_.y=Math.round(canvasPaddingTop-t.top*r);let n=_.getChildByLabel("pointer");n&&(n.scale.set(1/r),"number"==typeof t.pointerLeft&&"number"==typeof t.pointerTop&&(n.x=t.pointerLeft,n.y=t.pointerTop))},P=async(t,r,n)=>{let i={...S.current},a=i.left,o=i.top,s=i.pointerLeft,d=i.pointerTop,c=i.width/l,h=performance.now(),f="number"==typeof t.pointerLeft&&"number"==typeof t.pointerTop&&(t.pointerLeft!==s||t.pointerTop!==d),p=f?.375*r:0,m=p,g=r-p;await new Promise(i=>{let b=y=>{let _={...S.current},v=y-h;if(f)if(v<=p){let r=cubicMouse(Math.min(v/p,1));_.pointerLeft=s+(t.pointerLeft-s)*r,_.pointerTop=d+(t.pointerTop-d)*r}else _.pointerLeft=t.pointerLeft,_.pointerTop=t.pointerTop;if(v>m){let r=cubicImage(Math.min((v-m)/g,1)),n=c+(t.width/l-c)*r,i=l*n,s=u*n;_.width=i;let d=a+(t.left-a)*r,h=o+(t.top-o)*r,f=d+i-l,p=h+s-u;_.left=f>0?d+f:d,_.top=p>0?h+p:h}k(_),v<r?n(b):i()};n(b)})},R=(t,r,n,i=1)=>new Promise(a=>{let o=performance.now(),s=l=>{let u=l-o,d=Math.min(u/r,1);t.alpha=0===i?1-linear(d):linear(d),u<r?n(s):a()};n(s)}),O=async(t,r,n)=>R(t,r,n,0),M=async(t,r,n,i,a)=>{v.removeChildren();let o=[...t],s=o.length,l=0;await new Promise(t=>{let u=performance.now(),d=c=>{let h=c-u,f=Math.floor(cubicInsightElement(Math.min(h/i,1))*s);for(;l<f;){let t=Math.floor(Math.random()*o.length),r=o.splice(t,1)[0];if(r){let[t]=rectMarkForItem(r.rect,r.content,"element");t.alpha=0,v.addChild(t),l++,R(t,singleElementFadeInDuration,a)}}if(h<i)a(d);else{for(;o.length>0;){let t=Math.floor(Math.random()*o.length),r=o.splice(t,1)[0],[n]=rectMarkForItem(r.rect,r.content,"element");n.alpha=1,v.addChild(n)}if(n){let[t]=rectMarkForItem(n,"Search Area","searchArea");t.alpha=1,v.addChild(t)}r.map(t=>{let[r]=rectMarkForItem(t.rect,t.content||"","highlight");r.alpha=1,v.addChild(r)}),t()}};a(d)})},[j,N]=(0,import_react6.useState)(!1),B=(0,import_react6.useRef)(null);(0,import_react6.useEffect)(()=>(Promise.resolve((async()=>{if(await (async()=>{h.current&&s&&(await f.init({width:l,height:u,background:0xf4f4f4,autoDensity:!0,antialias:!0}),h.current&&(h.current.appendChild(f.canvas),_.x=0,_.y=0,f.stage.addChild(_),v.x=0,v.y=0,_.addChild(v)))})(),h.current&&l&&u){let t=l/u;h.current.style.setProperty("--canvas-aspect-ratio",t.toString()),h.current.setAttribute("data-fit-mode",d);let r=h.current.closest(".player-container");r&&r.setAttribute("data-fit-mode",d)}y()})()),()=>{try{f.destroy(!0,{children:!0,texture:!0})}catch(t){import_console_browserify.default.warn("destroy failed",t)}}),[l,u,d]),(0,import_react6.useEffect)(()=>{if(g)return(()=>{let t;return Promise.resolve((async()=>{if(!f)throw Error("app is not initialized");if(!s)throw Error("scripts is required");let{frame:r,cancel:n,timeout:a}=frameKit();t=n;let d=s.filter(t=>!!t.img).map(t=>t.img);await Promise.all([...d,mouseLoading,mousePointer].map(loadTexture)),v.removeChildren(),await T(mousePointer,l/2,u/2),await C(),await k({...A});let h=s.reduce((t,r)=>t+r.duration+(r.camera&&r.insightCameraDuration?r.insightCameraDuration:0),0),p=performance.now();x(0);let m=()=>{let t=Math.min((performance.now()-p)/h,1);if(x(t),t<1)return a(m,200)};for(let t in r(m),B.current&&B.current.start(),s){let n=s[t];if(i(n.title||""),o(n.subTitle||""),"sleep"===n.type)await sleep(n.duration);else if("insight"===n.type){if(!n.img)throw Error("img is required");c.current=n.img,await C();let t=n.context?.tree?(0,import_extractor3.treeToList)(n.context.tree):[],i=n.highlightElement?[n.highlightElement]:[];if(await M(t,i,n.searchArea,n.duration,r),n.camera){if(!n.insightCameraDuration)throw Error("insightCameraDuration is required");await P(n.camera,n.insightCameraDuration,r)}}else if("clear-insight"===n.type)await O(v,n.duration,r),v.removeChildren(),v.alpha=1;else if("img"===n.type)n.img&&n.img!==c.current&&(c.current=n.img,await C()),n.camera?await P(n.camera,n.duration,r):await sleep(n.duration);else if("pointer"===n.type){if(!n.img)throw Error("pointer img is required");await T(n.img)}else if("spinning-pointer"===n.type){let t=I(r);await sleep(n.duration),t()}}B.current&&(B.current.stop(),B.current=null,N(!1))})().catch(t=>{import_console_browserify.default.error("player error",t)})),()=>{t?.()}})()},[g]);let[L,D]=(0,import_react6.useState)(!1),U=Math.round(100*w),F=0===w?"none":"0.3s",z=1===w;(0,import_react6.useEffect)(()=>{if(z){let t=t=>{" "===t.key&&y()};return window.addEventListener("keydown",t),()=>{window.removeEventListener("keydown",t)}}},[z]);let G=()=>{};return w<1?r=(0,import_jsx_runtime5.jsx)(import_antd3.Spin,{indicator:(0,import_jsx_runtime5.jsx)(import_icons3.LoadingOutlined,{spin:!0,color:"#333"}),size:"default"}):L?(r=(0,import_jsx_runtime5.jsx)(import_antd3.Spin,{indicator:(0,import_jsx_runtime5.jsx)(import_icons3.CaretRightOutlined,{color:"#333"}),size:"default"}),G=()=>y()):r=(0,import_jsx_runtime5.jsx)(import_antd3.Spin,{indicator:(0,import_jsx_runtime5.jsx)(import_icons3.CaretRightOutlined,{color:"#333"}),size:"default"}),(0,import_jsx_runtime5.jsxs)("div",{className:"player-container",children:[(0,import_jsx_runtime5.jsx)("div",{className:"canvas-container",ref:h}),(0,import_jsx_runtime5.jsx)("div",{className:"player-timeline-wrapper",children:(0,import_jsx_runtime5.jsx)("div",{className:"player-timeline",children:(0,import_jsx_runtime5.jsx)("div",{className:"player-timeline-progress",style:{width:`${U}%`,transition:F}})})}),(0,import_jsx_runtime5.jsx)("div",{className:"player-tools-wrapper",children:(0,import_jsx_runtime5.jsx)("div",{className:"player-tools",children:(0,import_jsx_runtime5.jsxs)("div",{className:"player-control",children:[(0,import_jsx_runtime5.jsxs)("div",{className:"status-text",children:[(0,import_jsx_runtime5.jsx)("div",{className:"title",children:n}),(0,import_jsx_runtime5.jsx)(import_antd3.Tooltip,{title:a,children:(0,import_jsx_runtime5.jsx)("div",{className:"subtitle",children:a})})]}),j?null:(0,import_jsx_runtime5.jsx)("div",{className:"status-icon",onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),onClick:G,children:r}),t?.reportFileContent?(0,import_jsx_runtime5.jsx)(import_antd3.Tooltip,{title:"Download Report",children:(0,import_jsx_runtime5.jsx)("div",{className:"status-icon",onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),onClick:()=>downloadReport(t.reportFileContent),children:(0,import_jsx_runtime5.jsx)(import_icons3.DownloadOutlined,{color:"#333"})})}):null,(0,import_jsx_runtime5.jsx)(import_antd3.Tooltip,{title:j?"Generating...":"Export Video",children:(0,import_jsx_runtime5.jsx)("div",{className:"status-icon",onClick:j?void 0:()=>{B.current?import_console_browserify.default.warn("recorderSession exists"):f.canvas?(B.current=new RecordingSession(f.canvas),N(!0),y()):import_console_browserify.default.warn("canvas is not initialized")},style:{opacity:j?.5:1,cursor:j?"not-allowed":"pointer"},children:j?(0,import_jsx_runtime5.jsx)(import_antd3.Spin,{size:"default",percent:U}):(0,import_jsx_runtime5.jsx)(import_icons3.ExportOutlined,{})})})]})})})]})}init_globals();var import_jsx_runtime6=__toESM(require_jsx_runtime()),ShinyText=({text:t,disabled:r=!1,speed:n=5,className:i=""})=>{let a={"--animation-duration":`${n}s`};return(0,import_jsx_runtime6.jsx)("div",{className:`shiny-text ${r?"disabled":""} ${i}`,style:a,children:t})},shiny_text_default=ShinyText;init_globals();var import_antd4=__webpack_require__(1542),import_jsx_runtime7=__toESM(require_jsx_runtime()),errorMessageServerNotReady=(0,import_jsx_runtime7.jsxs)("span",{children:["Don't worry, just one more step to launch the playground server.",(0,import_jsx_runtime7.jsx)("br",{}),"Please run one of the commands under the midscene project directory:",(0,import_jsx_runtime7.jsx)("br",{}),"a. ",(0,import_jsx_runtime7.jsx)("strong",{children:"npx midscene-playground"}),(0,import_jsx_runtime7.jsx)("br",{}),"b. ",(0,import_jsx_runtime7.jsx)("strong",{children:"npx --yes @midscene/web"})]}),serverLaunchTip=(t=errorMessageServerNotReady)=>(0,import_jsx_runtime7.jsx)("div",{className:"server-tip",children:(0,import_jsx_runtime7.jsx)(import_antd4.Alert,{message:"Playground Server Not Ready",description:t,type:"warning"})}),emptyResultTip=(0,import_jsx_runtime7.jsx)("div",{className:"result-empty-tip",style:{textAlign:"center"},children:(0,import_jsx_runtime7.jsx)(shiny_text_default,{disabled:!0,text:"The result will be shown here"})}),trackingTip="limit popup to current tab",deepThinkTip="deep think",import_jsx_runtime8=__toESM(require_jsx_runtime()),PlaygroundResultView=({result:t,loading:r,serverValid:n,serviceMode:i,replayScriptsInfo:a,replayCounter:o,loadingProgressText:s,verticalMode:l=!1,notReadyMessage:u,fitMode:d})=>{let c="result-wrapper";l&&(c+=" vertical-mode-result"),a&&l&&(c+=" result-wrapper-compact");let h=emptyResultTip;return n||"Server"!==i?r?h=(0,import_jsx_runtime8.jsxs)("div",{className:"loading-container",children:[(0,import_jsx_runtime8.jsx)(import_antd5.Spin,{spinning:r,indicator:(0,import_jsx_runtime8.jsx)(import_icons4.LoadingOutlined,{spin:!0})}),(0,import_jsx_runtime8.jsx)("div",{className:"loading-progress-text loading-progress-text-progress",children:(0,import_jsx_runtime8.jsx)(shiny_text_default,{text:s,speed:3})})]}):a?h=(0,import_jsx_runtime8.jsx)(Player,{replayScripts:a.scripts,imageWidth:a.width,imageHeight:a.height,reportFileContent:("In-Browser-Extension"===i||"Server"===i)&&t?.reportHTML?t?.reportHTML:null,fitMode:d},o):t?.error?h=(0,import_jsx_runtime8.jsx)("pre",{children:t?.error}):void 0!==t?.result&&(h="string"==typeof t?.result?(0,import_jsx_runtime8.jsx)("pre",{children:t?.result}):(0,import_jsx_runtime8.jsx)("pre",{children:JSON.stringify(t?.result,null,2)})):h=serverLaunchTip(u),(0,import_jsx_runtime8.jsx)("div",{className:c,style:{height:"100%",display:"flex",flexDirection:"column",flex:"1 1 auto"},children:h})};init_globals();var import_env10=__toESM(require_env()),import_antd6=__webpack_require__(1542),import_react7=__webpack_require__(4194),import_jsx_runtime9=__toESM(require_jsx_runtime()),TITLE_TEXT={Server:"Server Status","In-Browser":"In-Browser"},SWITCH_BUTTON_TEXT={Server:"Switch to In-Browser Mode","In-Browser":"Switch to Server Mode"},ServiceModeControl=({serviceMode:t})=>{let{setServiceMode:r,config:n}=useEnvConfig(),i=useServerValid("Server"===t);(0,import_react7.useEffect)(()=>{(0,import_env10.overrideAIConfig)(n),"Server"===t&&overrideServerConfig(n)},[n,t]);let a="Server"===t&&(i?(0,import_jsx_runtime9.jsx)(import_antd6.Tooltip,{title:"Connected",children:(0,import_jsx_runtime9.jsx)("div",{className:"server-tip",children:iconForStatus("connected")})}):(0,import_jsx_runtime9.jsx)(import_antd6.Tooltip,{title:"Connection failed",children:(0,import_jsx_runtime9.jsx)("div",{className:"server-tip",children:iconForStatus("failed")})})),o=TITLE_TEXT[t];return(0,import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment,{children:[(0,import_jsx_runtime9.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px"},children:[(0,import_jsx_runtime9.jsx)("h3",{style:{whiteSpace:"nowrap",margin:0,flexShrink:0},children:o}),a,(0,import_jsx_runtime9.jsx)(EnvConfig,{showTooltipWhenEmpty:"Server"!==t})]}),(0,import_jsx_runtime9.jsx)("div",{className:"switch-btn-wrapper",children:(()=>{let n="Server"===t?"In-Browser":"Server",i=SWITCH_BUTTON_TEXT[t];return(0,import_jsx_runtime9.jsx)(import_antd6.Tooltip,{title:(0,import_jsx_runtime9.jsxs)("span",{children:["Server Mode: send the request through the server ",(0,import_jsx_runtime9.jsx)("br",{}),"In-Browser Mode: send the request through the browser fetch API (The AI service should support CORS in this case)"]}),children:(0,import_jsx_runtime9.jsx)(import_antd6.Button,{type:"link",onClick:t=>{t.preventDefault(),r(n)},children:i})})})()})]})};init_globals();var import_antd7=__webpack_require__(1542),playground_demo_ui_context_default={content:[{content:"Swag Labs",rect:{left:895,top:38,width:130,height:32,zoom:1},center:[960,54],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"d6c5e2f100",attributes:{nodeType:"TEXT Node"},indexId:0},{content:"Username",rect:{left:814,top:154,width:292,height:40,zoom:1},center:[960,174],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"[_midscene_retrieve_task_id='a9021f480e']",id:"a9021f480e",attributes:{class:".input_error.form_input",placeholder:"Username",type:"text","data-test":"username",id:"user-name",name:"user-name",autocorrect:"off",autocapitalize:"none",htmlTagName:"<input>",nodeType:"FORM_ITEM Node"},indexId:1},{content:"Password",rect:{left:814,top:209,width:292,height:40,zoom:1},center:[960,229],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"[_midscene_retrieve_task_id='580f3b761d']",id:"580f3b761d",attributes:{class:".input_error.form_input",placeholder:"Password",type:"password","data-test":"password",id:"password",name:"password",autocorrect:"off",autocapitalize:"none",htmlTagName:"<input>",nodeType:"FORM_ITEM Node"},indexId:2},{content:"",rect:{left:814,top:253,width:292,height:45,zoom:1},center:[960,275],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"[_midscene_retrieve_task_id='3e1faf0fd6']",id:"3e1faf0fd6",attributes:{class:".error-message-container",nodeType:"CONTAINER Node"},indexId:3},{content:"Login",rect:{left:814,top:303,width:292,height:49,zoom:1},center:[960,327],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"[_midscene_retrieve_task_id='6db0b64062']",id:"6db0b64062",attributes:{type:"submit",class:".submit-button.btn_action","data-test":"login-button",id:"login-button",name:"login-button",value:"Login",htmlTagName:"<input>",nodeType:"FORM_ITEM Node"},indexId:4},{content:"Accepted usernames are:",rect:{left:570,top:435,width:221,height:21,zoom:1},center:[680,445],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"5ca36a5942",attributes:{nodeType:"TEXT Node"},indexId:5},{content:"standard_user",rect:{left:570,top:479,width:109,height:19,zoom:1},center:[624,488],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"fd2fe54174",attributes:{nodeType:"TEXT Node"},indexId:6},{content:"locked_out_user",rect:{left:570,top:503,width:126,height:19,zoom:1},center:[633,512],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"403daee75b",attributes:{nodeType:"TEXT Node"},indexId:7},{content:"problem_user",rect:{left:570,top:527,width:101,height:19,zoom:1},center:[620,536],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"2b34f1e161",attributes:{nodeType:"TEXT Node"},indexId:8},{content:"performance_glitch_user",rect:{left:570,top:551,width:193,height:19,zoom:1},center:[666,560],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"6ae63a4d9e",attributes:{nodeType:"TEXT Node"},indexId:9},{content:"error_user",rect:{left:570,top:575,width:84,height:19,zoom:1},center:[612,584],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"76030282f1",attributes:{nodeType:"TEXT Node"},indexId:10},{content:"visual_user",rect:{left:570,top:599,width:92,height:19,zoom:1},center:[616,608],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"f34b057726",attributes:{nodeType:"TEXT Node"},indexId:11},{content:"Password for all users:",rect:{left:960,top:435,width:221,height:21,zoom:1},center:[1070,445],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"e693f608cd",attributes:{nodeType:"TEXT Node"},indexId:12},{content:"secret_sauce",rect:{left:960,top:477,width:101,height:19,zoom:1},center:[1010,486],page:{page:{_isDragging:!1,_timeoutSettings:{}},pageType:"puppeteer"},locator:"",id:"cde9de9828",attributes:{nodeType:"TEXT Node"},indexId:13}],size:{width:1920,height:1080},screenshotBase64:"data:image/png;base64,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8xecP25c2/qkSycuun/hzOuuG3nIiEcWLlz56xfbBgYAAIBPMwEagO3AQ4sW9evb9/h3q2tdXd2EsWN/8eCDlbeXfPOKsy+84OBhww4YMmTrb108YUJ9fd3Io46ccMklZ5xy6ueHD6+s9+nd1Kd3U9thu/bdpbFHQ1EUpVJp3uzZzzz/3NAv/uV5Ey+dMHbsgP79t23gqqqqAf37V1VVVd7W19f1/9znKq//dKedpl151Xev/96Bo7647De/mTJpUmW9saHhntvn/tfLr3xp9PGTp0z5m+OOG3/m2MpHN98255Irrjjh6GMuu+jCmbfOOXz06AcffnjbBgMAAIBPki04ANgObNq0afYP5559+uk/vvvuoihOPOaYt9ata9vxefkrLxdFsf7tt2u6dNn6W2vWvrnnwD0+22/Xp5Y8PeywUa2trR9+leqqqjETxv/n88/X1NQseeaZR375y6OOOOKaG25o359lwzvvbNmyZff+/ZcuW3b131+3Q8+epVKptbX1C8MPbm1tnXvXneVyefkrL9/xk5+cfPzxN82eVRTFaytWvPXWuqIofnD77Xf/9KftOw8AAADkCNAAbB9u/dGPLvzyOQcNPeDRxY+PGzPmlttu27Jly4d/ZcYPbimXSzdMndqvb99Fjz9+2ZWTX1q+/EOO39zcvN/gwdOnTOnevfuGDe/s1NT06muvtffPUbyxZs3Y888//eSTr7rs8tdXrZo1d26lMg8a+Bc79Oz5DzfNbDtyS3Pze767+Mkn230eAAAAyBGgAdg+rFq9+q5/vHfcmDFda2t3auoz9647P/IrfZqarp0x4+rrruvT1HTjtGu+dtFXzrrwgqIoVq5evc+gQZVjamtrBw0ceO+CBZXjr7zssr867rjnli6tbC29zdO+tW7dpk2b+u6888pVqyp7QBel3z29cIfGxueWvnD6+HO6VFePOvTQ22fe/PN/+edfL1u29MVlL7z44hEnjK4cVl9XX1fX9b3n/Yh7uAEAAODTxR7QAGw3Zt465/BRo75+8cVz75y3bv36tvVyuVwul4uiKJXL5XK59G7qnTxx4pRJk+rr6tesXbvmzbUtLS2V9V88+OCIgw46eNiwno2NE8+/4E+6daus79q3b9farpUzHHX4EYcceFDbJUqlUrlcLhWl37149xK/z8aNGx9+7LFxY8bs0Nh44P77/+2J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QoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoCE6ZwSAAAInUlEQVQGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIEKABgAAAAAgQoAGAAAAACBCgAYAAAAAIOJ/AFTldxexlFiCAAAAAElFTkSuQmCC",screenshotBase64WithElementMarker:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAQ4CAYAAADo08FDAACysElEQVR4AezBCZzXBYEH7O//NwMzwzGDIAgqiikqICCDZ6HYarkqaoZaump2rJ2WuW7tbhd2l67dWWppaZFpiZp5dUCCt4jIUSYqJmio3OfAzP/9/NvPvC/Lq7tqwuKP53kqizesrgYAAAAAAACA17wiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAIBt2tq168L/jbVr1+WOqdNy7733BwAAAF4N9QEAAGCb88tfTsott92e2bPnZtGiRdlpxx0zcuTwjB9/Qg49ZEy2VRf+59czbdqd+ehHP5xDDxmTze3555/Lu9793vTvv0PumPLbAAAAwN+rPgAAAGwz2ts78oUvfjlXXvXT1DQ2NmTYsKF59NF5+fXNt+bW227PZz71yZxyysnZFv3lL3/JrNlzsmzpsgAAAMBrUX0AAADYZvx+8uRcedVP09LSkgu+8sW8/vUHpaGhIW1tbfnRj6/KVy+4KJ+e8NkM22doRgzfJwAAAMBrSxEAAAC2GVOm3JGaD7z/rLzxjWPT0NCQmq5du+af3/OuHHvsMamZese0AAAAAK89RQAAANhmLFiwMDUNDQ15If906ttzxhn/lD7b98nmsnr16jwxf37Wr1+fl6O9vSPz5z+ZtWvXZWtXrVbz1FMLsnjxkrwSCxYuTHt7R16OFStWZt68x7Js+fIAAACw7aoPAAAA24w99xycO6ZOy4033pQTx5+QhoaGbGx066iMbh2VTitWrMyRRx2b7Xr1yk2/ui6dvnvxJbnqqp+muaU5t/z6hnS65NIf5IorrsxZZ707Z77j9HSqVqv5wQ9/lKuvvibzn3wy1Wo1dXVFhg4ZkgkTPpURw/fJi3l41ux87WvfzPQHZ2TVqlUpiiK9e2+XSirpdOCB++drF12Q/2tPPvmXTDj/83lwxkNZuXJlalqam3PKKW/L2R96f7p27ZoXs2bN2nzhi1/O734/Jc8++2x69uyRAw84IKeffmpef/BBeTHXTboh3/nu9zJ//pPptNNOO+UD7z8rJ580PgAAAGxbigAAALDNOP30U9PY2JAHpj+Yt59yeh6Y/mD+Jz179kj3bt3yyJ//nGefey6dpt15Z5597rnMm/dYHn/iiXR6YPqDefa55zJ4jz2ysfd/4MP5ylcvzFMLFqR11L45+qgj07VrQx6eNTsnv+3UzJz5cF7Iw7Nm58x3vid3TJ2WHj2659hjj0nv3tvlueeez7PPPZfmluYcdPCBGT58n/xfu/uee3P8CSfljqnT0q1bt4wbd3T23nuvLFu+PN/7/qU5+yPn5sW0tbXl3f/8vlz982tTFJWMHDkiHR3V/Oa3v8v73v+hzJz5cF7IT376s3zs4/+Rp556KvsMG5q3nnB8dt/9dVmwYEE+8cnP5MdX/iQAAABsW+oDAADANmOnHXfMt775tfzLeR/PrNlz8vZTTs+egwfnlFNOzvi3viVNTU3Z1KhRI/PE/PmZM2duxh56SNrb2/Pww7NSV1ekvb0j0x94MLsNGpSaOXPmpiiKjBw5PJ3uvff+/PZ3v09TU2NuunFSBg7cOTVr1qzJ5z7/pVxz7S/z1QsuylVXXp5Nff7zX8ry5Sty7kc/kvee9e4URZH29o5ceNHXctlll2fwHnvkogu/kq3Bt799cVauXJm3v/3kfO78T6fTH//4p5x48qn53e8m5957788BB+yXTS1evCTr1s3Nt755Uf7xyDenZv369fnyVy7Mj6/8Sc563wdz042T0qdP72zssh9cnprPf+78nDj+hHS69hfX5d//41P59ne+l9NPOzWVSiUAAABsG4oAAACwTTls7KH51Q3X5T3veWd69eqVR/7855z/2S/kkEMPzwUXfi2rV6/Oxkbtu29q5sz5Y2pmz5mbNWvW5qh/PDI10x+ckZolS5bkmWf+mj123z09evRIpwULF+bYY4/J+RM+nYEDd06npqamvP3tJ6fmgekPpr29PRtbvXp1Hpr5cJqamnL6aaekKIrU1NUVeec7Tk9dXZG77r4nHR0d+b+2evXq7LDDDnnL8cfmY+edm43tvfdeOfigA1Nz73335cV88APvzT8e+eZ06tKlSz71yX/PiBHD8/zzi3PPvfdlU4sXL0nNbrsNysbGv/Ut+fSn/iNn/fO7s2rVqgAAALDtqA8AAADbnAED+ufj//ov+ehHzs5tt/82P//5tbn7nntzyaU/yAMPTM9ll16cHj16pGbUqJGpmTNnbmoefHBGao4//tjcd/8DeWD6g6mZM+ePqRk1amQ2dsJbjssJbzkundauXZc1a1anZueddkpLS0uWLVuWhQufzsCBO6fTkiVL0t7enpaW5nTr1i0ba2lpSbdu3bJy5cqsW9eWpqbG/F/q1q1b/vPCL6dTtVrN8uXL09HRkZr99mvN5Cl/yPz5T+bFnHzyiXkhJ5341syc+XBmzZqdo486Mhs7+KAD89vf/T4f/7dP5JyPnJ1Ro0ZmxwEDUqlUcvpppwYAAIBtT30AAADYZnXt2jXjjjkq4445Knffc28+/JF/yQPTH8xnP/fFfPUrX0zN4MGD061bt8yZOzc1DzzwYCqVSkaN2jf7jW7Nr2++NcuWLcucuXNT0zpq32xq1uw5ueSSH+See+/N4sVL8kLWrl2bje24445pbu6ZZ575a+6YOi1jDz0knW697fasWLEyo0aNTFNTY7YGa9euy8+u/nmu/vm1efLJv6StrS2bWrt2XV5Ic3PPtDQ354UM3Hnn1MyePSeb+sqXP59/Oe/fMnXanfnouf+amubmnhk+fJ8c/g9vzKmnvD11dUUAAADYdtQHAACAbUJ7e0dWrVqVoqikR48e2dRBBx6Qiy78St757rMy7c6706mursiI4fvknnvvy8qVK/PA9AczeI890tLcnNGjW3PTr2/Jgw8+lDlz5qZm1Kh9s7H77rs/73jnP2f9+vU5+KADs9dee6ZHjx7p9MPLf5TVq1dnU5VKJR8++4P5/Be+nPP+9d8z7pijcvBBB+aOqdNy069vTqVSyRmn/VO2Bu3tHTn7Ix/N5Ml/SJ8+vXPcscekX7++KYq61MyeMye///2UvJiiqMuLKeqK1HR0dGRTLS0tuezSi7N06dLc/pvf5Te//V3uv/+BTJt2V6ZNuyvXXXd9fjbxynTt2jUAAABsG+oDAADANmHFiuU54KBDUldXl5kz7kuXLl2yqQMO2C/19fVZtGhRnn3uufTdfvvUjBo1Mnffc29u/83vsmjRohx++GGpGd06KjUPTH8ws+fMTUtLSwYN2jUbu/A/v57169fnHWeclk9+4t+yseXLV+Q73/1eXkxzc3Nqli5dmqt+MjFX/WRiarp06ZLPf25Cxo07OluDu+++J5Mn/yFdu3bNjTf8Mn233z4b++KXvpr/ydKlS7Nq1ap07949m1qwYGFqhg0bmhfTq1evnHTiW3PSiW9NtVrNgzMeyulnvCsPz5qdu+6+J2MPPSQAAABsG+oDAADANqFXr14ZMmTvzJkzN1P+cEeOOPwfsqklS5Zmw4YN6devX/puv306jdp339Rc9ZOJqdlvdGtq9tprr3Tv3j1Tp07L/PlP5tBDxqRSqWRjf/zTI6k57thjsqk//OGOVKvVvJB58x7Lpz59fvbac3Au/u63Mm/eY3li/vwMGbJ3Ro4YkcbGhmwt/vTII6k5+KAD03f77bOxDRs2ZNq0u/K/ueGGm3LKKSdnUzfc8KvUDBs6JBu7//4H8t2LL0m/HfrlS1/4bCqVSmoqlUpaR+2b4449Jtf+4rpMn/5gxh56SAAAANg21AcAAIBtxmFjD8mcOXPz2c99MTvvvHP23mvPdFq1alU++akJqRl76JhsbN99R6Rm5syHUzN6dGtq6uqKjBo1MlOn3pmaUaP2zab22P11mfnwrPzmt7/LiBHD0+nRR+flU5/5bF7MVT+ZmHXr1uVtbzspAwfunIEDd87W6nWv2y019953f5YvX5Hm5p7p9JkJn8sjf/5z/jdf+8a3sscer8v++++Xmmq1mu99/7Lcdfc96dGjR/bff79sbNCgQZk67c5Uq9WMHD48p5xycjqtW7cu0+68KzX7jhwZAAAAth31AQAAYJtx9oc+kL88tSA33nhT3jr+bTnowAMyaNCuWbx4ce66+54sXrwkw/cZlo9+9MPZ2HbbbZddd90l8+c/mf79d8hOO+6YTvuNbs3UqXemZtSokdnUCSccn5kPz8r3vn9Zpk27K62tozJ7ztxMn/5g9t9vdGruvufebGqvPQen5nOf/1K+9e2L06mpqTE77NAv+++3X0495eTstNNOebVd8J9fy/cvuSwvpl+/fvnhD76fTgfsv1923nmnPPXUghz+pqNyyCFvSEPXrrlj6rQ899zz+dAH359vf+fivJj9998v69evz2lnvCvDhg5J//79M/ePf8xTTy1IfX19vvPtr6d//x2yse2375NzPvyhfO0b38qnJ3w2l1z2g4wZ84YsXbI00+68MytWrMzee++V17/+oAAAALDtqA8AAADbjPr6+vznBV/Orrvskttu+02m3XlX7pg6LTU77NAvJ580Pp/8xL+nqakxmxq178jMn/9kRreOysZGj25NTV1dkZEjhmdTp/3TKVm3bl2+9/3LMvPhWZn58Kz06NEjb37TEfnSFz+bL37pq7n7nnuzqeOPPy5fvfCirF69JnvvtWcqlUqq1WqWr1iRRx+dlwcffCg/nXh1fnLl5Rk6dEheTU8//UyefvqZvJiVq1ZnY926dcvEn/w4Hz7n3Myc+XBuvPGm1AwevEc+8R8fT+uoUfn2dy7Oixm8x+4596Mfzoc/8i+597778/Cs2amrKzJy5Ii8591n5vUHH5QX8oEPvDfb990+3734kjz11IL87Gc/T0337t0zfvwJ+cynPpGGhoYAAACw7ags3rC6GgAAALZJq1atyh//9EgG7rxT+vXrl83tySf/kuUrVmTI3nunrq7I/+RTn/lsfvazn+ezEz6dU045ORtbt25dzj3v47nttt/kiMP/IRd/95vZWqxZsyZ//OMj2WWXgenTp3derjVr1uZPf/pTXve616W5uWdeio6Ojvz1r4uyYMGC9OnTJ7vuukuKoggAAADbnvoAAACwzerevXtGt47KlrLLLgPzUt1yy22pOfbYo7OphoaGfOB9Z+W2236TeY89lq1JU1NTRo0amVeqqakx++47Mi9HURQZMKB/BgzoHwAAALZtRQAAAGArtF2vXqmZPWduXsjDD89KzfB99gkAAADwX+oDAAAAW6Gjj/7HfOe738v73n92xh1zVIYP3yev221Q5sz9Y+6774Hc/pvfpq6uLm95y7EBAAAA/kt9AAAAYCv0kQ9/MGvWrMlPJ/4sP7v6mvzs6muysZ49e+Rb3/ha3vCGgwMAAAD8l/oAAADAVqhSqeTf/+1f84EPvDd3/GFqnn7mmSxduiyDBu2avffeK4P32CONjQ0BAAAA/j/1AQAAgK1YS3Nzxo07OgAAAMD/rggAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEJ9AAC2pPaOpK092dCRakdHAAAAyqhSFEl9kXStS+qKAABsKfUBANhS1qxPZUNHGhsb06WpS+rq6gIAAFBG7e3tWb9+fdauXptqfZE0dQkAwJZQHwCALWFVW7rU1adHr+YAAACUXV1dXerq6tLY2JiVq1Zl/aq2pHvXAABsbkUAADa3NevTpa4+Pbp3DwAAwLamR/fu6VJXn6xZHwCAza0IAMDm1N6RyoaO9OjePQAAANuqHt27p7KhI2nvCADA5lQEAGBzamtPY2NjAAAAtnWNjY1JW3sAADanIgAAm9OGjnTp0iUAAADbui5duiQbOgIAsDkVAQDYjKodHamrqwsAAMC2rq6uLtWOjgAAbE5FAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCEQAAAAAAAABKoQgAAAAAAAAApVAEAAAAAAAAgFIoAgAAAAAAAEApFAEAAAAAAACgFIoAAAAAAAAAUApFAAAAAAAAACiFIgAAAAAAAACUQhEAAAAAAAAASqEIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohfoAAABsTSqVALymVKsBAADYWtQHAABga1OtBuA1oVIJAADA1qQIAAAAAAAAAKVQBAAAAAAAAIBSKAIAAAAAAABAKRQBAAAAAAAAoBSKAAAAAAAAAFAKRQAAAAAAAAAohSIAAAAAAAAAlEIRAAAAAAAAAEqhCAAAAAAAAAClUAQAAAAAAACAUigCAAAAAAAAQCkUAQAAAAAAAKAUigAAAAAAAABQCkUAAAAAAAAAKIUiAAAAAAAAAJRCfQAAADaXSiUAAAAAbDlFAAAAAAAAACiFIgAAAFtaS0uqjz2WjB2bl2L9+vX55je/meXLl2dT3/ve9/L0008HAAAAgKQIAADAltTSkup116Wy2255qarVap566qm0t7dnUwsXLsy6desCAAAAQFIfAACALWXs2GTSpFQCAAAAwOZQHwAAgC1l8uTk619PJk1KJk/Oq23x4sW59tprs2DBguywww45+OCDM2rUqHS66667cv/99+f555/PLrvskje96U0ZOHBgaiZOnJgRI0Zk7ty5mT17ds4777zccMMNGTFiRB566KE88sgj6dmzZ4444oiMHDkyne6+++5MnTo1K1asyIABA3LMMcdk4MCB6ejoyEUXXZSjjjoqt912W55//vnsvvvuOfnkk3PHHXdk+vTpqVQq2X///XPEEUek07x58/L73/8+Tz31VPr27ZuDDjooo0ePDgAAAMBLUR8AAIAtZdCgZP78ZOzYbA7XX399+vXrl3e+851ZsGBBLr/88uy+++5pbm7OnXfemXvuuSennnpqWlpaMmPGjFx22WX5yEc+kt69e2fx4sWZNGlSxowZk3e9611pamrK4sWLc91112X8+PF561vfmvvvvz8TJ07MwIED07t378yePTu//vWv8573vCc77rhj7r777lx22WX59Kc/nZpFixbl9ttvzzve8Y5s2LAhEydOzIUXXpghQ4bknHPOycKFC/PjH/84AwYMyLBhw/KXv/wlEydOzIknnpg99tgj8+bNyzXXXJOuXbtm+PDhAQAAAPjfFAEAANhS5s/P5lStVvPss89m8eLFGTRoUD75yU+mR48eqbnrrrtyxBFHpLm5OdVqNSNHjswOO+yQWbNmpdOQIUMyduzYDBw4MEVRpGafffbJkCFD0tjYmDe84Q3p0aNHnnzyydQMGDAgZ599dnbcccesWLEiQ4YMSVtbWxYuXJhORxxxRHr37p1+/fpl9OjRWb16dY477rh069Yte+yxRwYPHpzHH388NdOnT88+++yTXXfdNevXr88uu+yS1tbWPPDAAwEAAAB4KeoDAACwlSuKIkVRZMOGDdlYtVrNhg0b0qVLl9ScfPLJue222/KDH/wgGzZsSGtra4488sjU/PWvf80vf/nLtLS0ZGNtbW3p1L9//2xqhx12SKdKpZK+fftm5cqVqalUKvnFL36RZcuWpaWlJZVKJTVr1qxJp759+6bT9ttvn549e6axsTGdtt9++yxbtiw1Tz/9dB577LE88cQT2VivXr0CAAAA8FLUBwAAYCtXX1+fAQMGZOHChenbt286Pffcc6lUKunfv386OjqyZs2avOUtb0lRFHnuuedy2WWXpW/fvjnwwAPTt2/fHH/88dlzzz3Tqb29PZVKJZ2KosimKpVKXsztt9+eXr165X3ve19q1q5dmwkTJmRjRVFkY5VKJS+mX79+2XXXXXPUUUelU0dHRwAAAABeqiIAAACvASNGjMgtt9ySRYsWpWbVqlWZNGlShg4dmrq6ulQqlVx66aWZOnVqarbbbrt069Yt7e3tqRk1alRuueWWrFq1KjWPP/54JkyYkOeffz6v1Pr167N+/fpUq9V0dHTkxhtvTKVSySs1YsSI3HfffXnqqadSs3z58lxwwQWZPn16AAAAAF6K+gAAALwGvPGNb8yGDRvy3e9+Nx0dHeno6Mjw4cNz4oknpqZSqeS0007LxIkTM3ny5HR0dGTXXXdNa2trag4//PCsXbs2F1xwQerr69PR0ZG3ve1t6du3b16pN7/5zbn88svzuc99Lh0dHdl///3Tv3//vFJ77LFHxo0blx//+MepVqtZvXp1Dj300IwePToAAAAAL0V9AAAAXiPe9KY35U1velOWLVuWnj17piiKbGyXXXbJxz/+8axcuTL19fVpbGxMp0qlknHjxuXoo4/OihUr0tLSko198IMfzKY++MEPZlPvfe97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3LuXoyeO4xZcsSKB5ctzN0d+/pl8m437VbFCBZ576mkSkhLZtW8fQYGB+JYqxelz50jPyKBW9er4+fpyN7du3ebnX07g5elFo/r1+D0XL18m6eZN7kdxb2/atmlDGb/S7D6wn8tXr9KkUSNu3brNz7+cwM3L04snW7agauXKnDl3ngOHD5GXn8+dqlSqROcXXsBms3PyzBl27d+H0+nExTAMmjdpwt3cSEgg5upVCioXEMATjzfH38+Pn45GceLUKZxOJ3fzWMNGWCxmjhw7hsPhQET+2MUjUZisnoiIiIg8LKYUW44TERERkYfEmZ5LjaZNkP+vj5a8T6cOHVj+yUpCQkMRERH5b1azWjVK+/nR65VX6PbSy1y4dImW7doiIiL/08UjUZisnoiIiIg8LBZERERERERERP4N40aMpFOHDrjt3r8fERERERER+c+wICIiIiJ/uQvRFzlwuDRXrsYiIiLy3+7ipWgOHjmMS0xsLPOXLEZERERERET+MyyIiIiIyF9uwdKlLFi6FBERkcLg3Q8+4N0PPkBERERERET+8wxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERET+cmX8/WncoAEPk4eHB61btMBsNiMiIv+ddm/Z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QdGiRek/YgRff/sNNrudkLlzCZ0ylZBx40lNS2PuwoWMGjyEe3X5yhWGjBnD/BkzCBk3nhsJCcyYN4/+vXvj9s6iRaz+cAWXjh3n1u3bTJkzm0cbNsDthbZt+fSfy3Dr3qkTZ86d48mOL+DidDrp3r8fq5Yv59juPeTk5jJ+2jQWzpnDvcq32ZgZNp9Rg4cwa/LbnDh9irkL36NhvXq4ha9ZTYO6dTnw7XYsFgs5OTkMnzAep9OJS2JSEj0G9Gdp2LvMeXsKWdnZfLltK59Gfo5LKR8foo/+jFvixWhcqjZuRHpGBiIifxW73U58YgJ/JDklhT+Sk5vDvys5JYU/I3x1BGs3buBOdoeDO+Xk5pCTm8PvuZmczB9xOBwkp6byR+x2O8kpKfyR5JQURERERERE5OEzpdhynIiIiIg8JM70XGo0bcJ/mtlsxt+vNPGJCfwZFrOZ0n6liU9M4N9RtkwA8YkJ/J5yAQEkJCXhcDj4s/xLlyY1NRWb3U5Bn//rI557+mnutGrtWsZMnYKbYRiUslpJTk3l95jNZvz9ShOfmMDv8fP1JS09HbvdjoiIiIiI/P9dPBKFyeqJiIiIyMNiQURERORvwG63E5+YwJ9ls9uJT0zg3xWfmMAfuZGQwL8r6eZN7mbQW6MpWqQId7p1O4+CHA4Hyamp/BG73U58YgJ/JDklBREREREREREREflrWRARERGRv4Ws7GxERERERERERESkcDMQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxEREZFCrE7t2rRu0YJ6jzzCw1Lc25tWzZvzoDVt3Bi/UqUQERERERERERERuVcGIiIiIoVYx7btGDloMJs/j2Rgnz48DFUqVWL9J5/yoC1fuJAmjR9FRERERERERERE5F5ZEBERESnE5i1ehMu7M2dRs1p15H/XuWNHalWvztyFCxEREREREREREZH/LhZERERE/gacODFhQv53zR9rwu28PEREREREREREROS/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2Wxw9PgJwldH4Fbaz4+lYe/SunlzihYtSv8RI/j622+4V6+/9hqjBg+hfNmynDh9im3ffUfDevXo9+abuFSrUoV506bzWKNGWMxmzkdH03/ECGKvxeHW+5XuTBw9ilJWH+KuX2f5Jyv5LDISlxfatuXTfy6joDPnzvFkxxcQEREREfm/7uKRKExWT0REREQeFlOKLceJiIiIyEPiTM+lRtMm/DfwL12a1NRUbHY7d+Pl6YVhmMjKzubP8vP1JS09Hbvdzt2ULFECu91Odk4OBQ3rP4BZkydzp8tXrtDs2WcoqGSJEthsdnJyc7gbT09PDJOJ7Jwc7lfsyVN4e3lxp0FvjWbTli24GYZBKauV5NRUfo+XpxfFPIqSkpbG7ynj709iUhIiIiIiIoXFxSNRmKyeiIiIiDwsFkRERETk/yfp5k3+SE5uDv+u5JQU/khGZiZ3E746grUbN3Anu8PBnTIyM/kjubm5/FkNW7fCxP+UlZ1NQQ6Hg+TUVP5ITm4OObk5/JHEpCRERERERERERETk3lkQERERkf/zbt++ze3bt/lPS01LQ0RERERERERERP7vMhARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgUDEREREREREREREREREREpFAxERERERERERERERERERKRQMBARERERERERERERERERkULBQERERERERERERERERERECgULIiIiIvJvqV2jBrm3bnH111+5m+Le3jRu0ACn08mps2dJS09HRERERERERERE5GGwICIiIiL/ljHD3+RK7FXmLlzI3fiXLs3IQYMp7edL2TIB1GnRHLvdjoiIiIiIiIiIiMiDZiAiIiIiD9WV2Fi6vt6Xrq+/Tmk/P3xLlUJERERERERERETkYTAQERERkb+E0+lERERERERERERE5GGyICIiIlKIbY1cy+TZs5g2YQKN6tXnl9OnmTJnNuejo3EJLF+edSs/4fbt28yYP4+eXbvR/tlnuBGfQLNnn8GluLc3oVND+McTT5Cfn893u3YxY9475OXn41aieAn+tWgxT7VqxZXYWN7/1wq27tjB/RjUty/dO3WmYmAgh48eZWbYfC7F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RERERERERAoFAxERERERERERERERERERKRQMRERERERERERERERERESkUDAQEREREREREREREREREZFCwUBERERERERERERERERERAoFAxERERERERERERERERERKRQMREREROSBKVq0KI8/9hitW7TAw8MDuX+B5cvTukULHn/sMYoWKcIfqVmtGkUsFh60IhYLrVu0oIjFgoiIiIiIiIiIyH8TAxERERF5IOo98ggXo47y7qzZTBk7FmvJksj9a1S/PiMHDWb5ewv51+Il/J4WTZtxYPsO3hw4iAfNarWyaVUEVqsVERERERERERGR/yYWREREROSB6NiuHTt27mTwmLeQP2/L9u1s2b6dl5/vwMRRo/g9p86e4cNPPmHLju38nt1bttDx1VfJzMpCRERERERERETk78CCiIiIiDwQ5cuWIyEpEXkwnE4nfyQzK4upoXP4PWX8/alTqzYmkwkREREREREREZG/CwsiIiIihdjWyLVMnj2LaRMm0KhefX45fZopc2ZzPjoat6DAQGZMmkTLps2IT0xk45bNvL9iBW5frV5DaT8/ItatxWIpwvD+/Snj70+dFs1JSEzkmX/8g5mTJlMuIACb3U6bJ/+BS5c+fYhPTMClVvXqhIwfT9PGj/LrtWt8vmED4asjcJs+YSLPPf00J8+cZv2XXxEaMpUaVasx6K3RbNqyhT1bt7Fh89e8OXAQu/ft45fTpxk5eDA79+5l+PhxuFhLliR0aghtWrfGYrGwa98+xk0LISMzE5dBfftiMpkoWyaALi++yG/xNwiPWM0XX3+Fm5+vL/OmTeeJxx8n7vp1tn3/He+vWIHT6cRtUN++dO/UmYqBgRw+epSZYfO5FBPDvSru7c17s+fwj1atyMvLIyMzE5fl4eGs/mI992L9J59QoVx5Ll+5wqC3RnPr1i0K2rQqggZ162Iymfhu4ybsDgdXYq/Sa/Bg3Px8fZk3bTpPPP44cdevs+3773h/xQqcTiduzR59lBGDBlE5KJivvtnG0o8+Iu76de5Fm9at6d+rN68NGojbgN59CA6qSEhoKC4mk4mpY8fRtk0bShQvzo979zBj/nzSMzJwCwoMZMakSbRs2oz4xEQ2btnM+ytW4PbV6jWU9vMjYt1aLJYiDO/fnzL+/tRp0ZyExEREREREREREROTvxTxx2pQZiIiIiDwst218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AFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAIAqlAAAAAAAAABQhRIAAAAAAAAAqlACAAAAAAAAQBVKAAAAAAAAAKhCCQAAAAAAAABVKAEAAAAAAACgCiUAAAAAAAAAVKEEAAAAAAAAgCqUAAAAAAAAAFCFEgAAAAAAAACqUAIAAAAAAABAFUoAAAAAAAAAqEIJAAAAAAAAAFUoAQAAAAAAAKAKJQAAAAAAAABUoQQAAAAAAACAKpQAAAAAAAAAUIUSAAAAAAAAAKpQAgAAAAAAAEAVSgAAAAAAAACoQgkAAAAAAAAAVSgBAAAAAAAAoAolAAAAAAAAAFShBAAAAAAAAP5ve3BAAgAAgAAo+j+6H6ECFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwoQEAAAAAAADgQgMAAAAAAADAhQYAAAAAAACACw0AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAAAcKEBAAAAAAAA4EIDAAAAAAAAwIUGAAAAAAAAgAsNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAAFxoAAAAAAAAALjQAAAAAAAAAHChAQAAAAAAAOBCAwAAAAAAAMCFBgAAAAAAAIALDQAAAAAAAAAXGgAAAAAAAAAuNAAAAAAAAABcaAAAAAAAAAC40AAAAAAAAABwYYkQHKd0AqxtAAAAAElFTkSuQmCC",url:"https://www.saucedemo.com/"},import_jsx_runtime10=__toESM(require_jsx_runtime()),ContextPreview=({uiContextPreview:t,setUiContextPreview:r,showContextPreview:n})=>n?(0,import_jsx_runtime10.jsxs)("div",{className:"form-part context-panel",children:[(0,import_jsx_runtime10.jsx)("h3",{children:"UI Context"}),t?(0,import_jsx_runtime10.jsx)(blackboard_default,{uiContext:t,hideController:!0}):(0,import_jsx_runtime10.jsxs)("div",{children:[iconForStatus("failed")," No UI context",(0,import_jsx_runtime10.jsx)(import_antd7.Button,{type:"link",onClick:t=>{t.preventDefault(),r(playground_demo_ui_context_default)},children:"Load Demo"}),(0,import_jsx_runtime10.jsx)("div",{children:"To load the UI context, you can either use the demo data above, or click the 'Send to Playground' in the report page."})]})]}):null;init_globals();var import_icons5=__webpack_require__(8405),import_antd10=__webpack_require__(1542),import_react9=__webpack_require__(4194);init_globals();var{create:create3}=esm_exports,HISTORY_KEY="midscene-prompt-history",getHistoryFromLocalStorage=()=>{let t=localStorage.getItem(HISTORY_KEY);return t?JSON.parse(t):[]},useHistoryStore=create3((t,r)=>({history:getHistoryFromLocalStorage(),clearHistory:()=>{t({history:[]}),localStorage.removeItem(HISTORY_KEY)},addHistory:n=>{let i=[n,...r().history.filter(t=>t.prompt!==n.prompt)];for(;i.length>10;)i.pop();t({history:i}),localStorage.setItem(HISTORY_KEY,JSON.stringify(i))}}));init_globals();var import_antd8=__webpack_require__(1542);init_globals();var React=__toESM(__webpack_require__(4194)),import_jsx_runtime11=__toESM(require_jsx_runtime()),SvgSetting=t=>(0,import_jsx_runtime11.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:27,height:27,fill:"none",viewBox:"0 0 27 27",...t,children:(0,import_jsx_runtime11.jsx)("path",{stroke:"#000",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.333,d:"M19.527 8.855h-2M14.86 7.522v2.667M14.86 8.855H7.527M10.194 13.522H7.527M12.86 12.189v2.666M20.193 13.522H12.86M19.527 18.189h-2M14.86 16.855v2.667M14.86 18.189H7.527"})}),setting_default=SvgSetting,import_jsx_runtime12=__toESM(require_jsx_runtime()),ConfigSelector=({showDeepThinkOption:t=!1,enableTracking:r=!1})=>{let n=useEnvConfig(t=>t.forceSameTabNavigation),i=useEnvConfig(t=>t.setForceSameTabNavigation),a=useEnvConfig(t=>t.deepThink),o=useEnvConfig(t=>t.setDeepThink);if(!r&&!t)return null;let s=function(){let s=[];return r&&s.push({label:(0,import_jsx_runtime12.jsx)(import_antd8.Checkbox,{onChange:t=>i(t.target.checked),checked:n,children:trackingTip}),key:"track-config"}),t&&s.push({label:(0,import_jsx_runtime12.jsx)(import_antd8.Checkbox,{onChange:t=>{o(t.target.checked)},checked:a,children:deepThinkTip}),key:"deep-think-config"}),s}();return(0,import_jsx_runtime12.jsx)("div",{className:"selector-trigger",children:(0,import_jsx_runtime12.jsx)(import_antd8.Dropdown,{menu:{items:s},trigger:["click"],children:(0,import_jsx_runtime12.jsx)(setting_default,{width:24,height:24})})})};init_globals();var import_antd9=__webpack_require__(1542),import_react8=__webpack_require__(4194);init_globals();var React2=__toESM(__webpack_require__(4194)),import_jsx_runtime13=__toESM(require_jsx_runtime()),SvgClose=t=>(0,import_jsx_runtime13.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:18,height:16,fill:"none",viewBox:"0 0 18 16",...t,children:(0,import_jsx_runtime13.jsx)("path",{stroke:"#333",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.333,d:"m3.124 2.667 11.162 10.666M3.124 13.333 14.286 2.667"})}),close_default=SvgClose;init_globals();var React3=__toESM(__webpack_require__(4194)),import_jsx_runtime14=__toESM(require_jsx_runtime()),SvgHistory=t=>(0,import_jsx_runtime14.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:25,height:25,fill:"none",viewBox:"0 0 25 25",...t,children:[(0,import_jsx_runtime14.jsx)("path",{stroke:"#000",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M6.63 9.021c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5Z"}),(0,import_jsx_runtime14.jsx)("path",{stroke:"#000",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.85,strokeWidth:1.33,d:"M12.695 8.322v4.203l2.967 2.968"})]}),history_default=SvgHistory;init_globals();var React4=__toESM(__webpack_require__(4194)),import_jsx_runtime15=__toESM(require_jsx_runtime()),SvgMagnifyingGlass=t=>(0,import_jsx_runtime15.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:19,height:19,fill:"none",viewBox:"0 0 19 19",...t,children:[(0,import_jsx_runtime15.jsxs)("g",{stroke:"#000",strokeLinejoin:"round",strokeOpacity:.65,strokeWidth:1.5,clipPath:"url(#magnifying-glass_svg__a)",children:[(0,import_jsx_runtime15.jsx)("path",{d:"M8.397 14.29a6.375 6.375 0 1 0 0-12.75 6.375 6.375 0 0 0 0 12.75Z"}),(0,import_jsx_runtime15.jsx)("path",{strokeLinecap:"round",d:"M10.518 5.42a2.99 2.99 0 0 0-2.12-.88 2.99 2.99 0 0 0-2.122.88M12.98 12.499l3.182 3.182"})]}),(0,import_jsx_runtime15.jsx)("defs",{children:(0,import_jsx_runtime15.jsx)("clipPath",{id:"magnifying-glass_svg__a",children:(0,import_jsx_runtime15.jsx)("path",{fill:"#fff",d:"M.522.04h18v18h-18z"})})})]}),magnifying_glass_default=SvgMagnifyingGlass,import_jsx_runtime16=__toESM(require_jsx_runtime()),{Text:Text3}=import_antd9.Typography,HistorySelector=({onSelect:t})=>{let[r,n]=(0,import_react8.useState)(!1),[i,a]=(0,import_react8.useState)(""),o=useHistoryStore(t=>t.history),s=useHistoryStore(t=>t.clearHistory),l=(0,import_react8.useMemo)(()=>{let t=Date.now(),r=t-6048e5,n=t-31536e6,a=o.filter(t=>t.prompt.toLowerCase().includes(i.toLowerCase()));return{recent7Days:a.filter(t=>t.timestamp>=r),recent1Year:a.filter(t=>t.timestamp<r&&t.timestamp>=n),older:a.filter(t=>t.timestamp<n)}},[o,i]),u=(r,i)=>0===i.length?null:(0,import_jsx_runtime16.jsxs)("div",{className:"history-group",children:[(0,import_jsx_runtime16.jsx)("div",{className:"history-group-title",children:r}),i.map((r,i)=>(0,import_jsx_runtime16.jsx)("div",{className:"history-item",onClick:()=>(r=>{t(r),n(!1)})(r),children:r.prompt},`${r.timestamp}-${i}`))]},r);return(0,import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment,{children:[(0,import_jsx_runtime16.jsx)("div",{className:"selector-trigger",onClick:()=>n(!0),children:(0,import_jsx_runtime16.jsx)(history_default,{width:24,height:24})}),(0,import_jsx_runtime16.jsx)(import_antd9.Modal,{open:r,onCancel:()=>n(!1),footer:null,width:"100%",closable:!1,centered:!1,transitionName:"",maskTransitionName:"",style:{margin:0,padding:0,maxWidth:"none",top:"auto",bottom:0},styles:{wrapper:{alignItems:"flex-end",justifyContent:"center",paddingBottom:0,display:"flex"},body:{height:"70vh",padding:0,margin:0},content:{height:"70vh",borderRadius:"12px 12px 0 0",margin:0,padding:0,marginBottom:0,position:"fixed",bottom:0,left:0,right:0}},maskClosable:!0,destroyOnClose:!0,children:(0,import_jsx_runtime16.jsxs)("div",{className:"history-modal-container",children:[(0,import_jsx_runtime16.jsxs)("div",{className:"history-modal-header",children:[(0,import_jsx_runtime16.jsxs)(Text3,{strong:!0,style:{fontSize:"16px"},children:["History (",o.length,")"]}),(0,import_jsx_runtime16.jsx)(import_antd9.Button,{size:"small",type:"text",icon:(0,import_jsx_runtime16.jsx)(close_default,{width:16,height:16}),onClick:()=>n(!1),className:"close-button"})]}),(0,import_jsx_runtime16.jsx)("div",{className:"history-search-section",children:(0,import_jsx_runtime16.jsxs)("div",{className:"search-input-wrapper",children:[(0,import_jsx_runtime16.jsx)(import_antd9.Input,{placeholder:"Search",value:i,onChange:t=>a(t.target.value),prefix:(0,import_jsx_runtime16.jsx)(magnifying_glass_default,{width:18,height:18}),className:"search-input",allowClear:!0}),(0,import_jsx_runtime16.jsx)(import_antd9.Button,{type:"link",onClick:()=>{s(),a(""),n(!1)},className:"clear-button",disabled:0===o.length,children:"Clear"})]})}),(0,import_jsx_runtime16.jsx)("div",{className:"history-content",children:0===o.length?(0,import_jsx_runtime16.jsx)("div",{className:"no-results",children:(0,import_jsx_runtime16.jsx)(Text3,{type:"secondary",children:"No history record"})}):(0,import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment,{children:[u("Last 7 days",l.recent7Days),u("Last 1 year",l.recent1Year),u("Earlier",l.older),i&&0===l.recent7Days.length&&0===l.recent1Year.length&&0===l.older.length&&(0,import_jsx_runtime16.jsx)("div",{className:"no-results",children:(0,import_jsx_runtime16.jsx)(Text3,{type:"secondary",children:"No matching history record"})})]})})]})})]})},import_jsx_runtime17=__toESM(require_jsx_runtime()),{TextArea:TextArea}=import_antd10.Input,PromptInput=({runButtonEnabled:t,form:r,serviceMode:n,selectedType:i,dryMode:a,stoppable:o,loading:s,onRun:l,onStop:u,clearPromptAfterRun:d=!0})=>{let[c,h]=(0,import_react9.useState)(!1),[f,p]=(0,import_react9.useState)(""),m=getPlaceholderForType(i),g=(0,import_react9.useRef)(null),b=useHistoryStore(t=>t.history),y=useHistoryStore(t=>t.addHistory),_=b[0];(0,import_react9.useEffect)(()=>{_?(r.setFieldsValue({type:_.type||"aiAction",prompt:_.prompt||""}),p(_.prompt||"")):(r.setFieldsValue({type:"aiAction",prompt:""}),p(""))},[]);let v=(0,import_react9.useCallback)(t=>{r.setFieldsValue({prompt:t.prompt,type:t.type}),p(t.prompt)},[r]),A=(0,import_react9.useCallback)(t=>{let n=t.target.value;p(n),r.setFieldValue("prompt",n)},[r]),w=t&&f.trim().length>0,x=(0,import_react9.useCallback)(()=>{let t=r.getFieldsValue();t.prompt&&y({type:t.type,prompt:t.prompt,timestamp:Date.now()}),l(),d&&(p(""),r.setFieldValue("prompt",""))},[r,y,l]),E=(0,import_react9.useCallback)(t=>{"Enter"===t.key&&t.metaKey&&w?(x(),t.preventDefault(),t.stopPropagation()):"Enter"===t.key&&setTimeout(()=>{if(g.current){let t=g.current.resizableTextArea.textArea,r=t.selectionStart,n=t.value.lastIndexOf("\n");(-1===n||r>n)&&(t.scrollTop=t.scrollHeight)}},0)},[x,w]),S=(0,import_react9.useCallback)(()=>{h(!0)},[]),C=(0,import_react9.useCallback)(()=>{h(!1)},[]),I=(0,import_react9.useCallback)(()=>{let t=t=>(0,import_jsx_runtime17.jsx)(import_antd10.Button,{type:"primary",icon:(0,import_jsx_runtime17.jsx)(import_icons5.SendOutlined,{}),style:{borderRadius:20,zIndex:999},onClick:x,disabled:!w,loading:s,children:t});return a?"aiAction"===i?(0,import_jsx_runtime17.jsx)(import_antd10.Tooltip,{title:"Start executing until some interaction actions need to be performed. You can see the process of planning and locating.",children:t("Dry Run")}):t("Run"):o?(0,import_jsx_runtime17.jsx)(import_antd10.Button,{icon:(0,import_jsx_runtime17.jsx)(import_icons5.BorderOutlined,{}),onClick:u,style:{borderRadius:20,zIndex:999},children:"Stop"}):t("Run")},[a,s,x,u,w,i,o]);return(0,import_jsx_runtime17.jsxs)("div",{className:"prompt-input-wrapper",children:[(0,import_jsx_runtime17.jsxs)(import_antd10.Space,{className:"mode-radio-group-wrapper",children:[(0,import_jsx_runtime17.jsx)(import_antd10.Form.Item,{name:"type",style:{margin:0},children:(0,import_jsx_runtime17.jsxs)(import_antd10.Radio.Group,{buttonStyle:"solid",disabled:!t,className:"mode-radio-group",children:[(0,import_jsx_runtime17.jsx)(import_antd10.Tooltip,{title:"Auto Planning: plan the steps and execute",children:(0,import_jsx_runtime17.jsx)(import_antd10.Radio.Button,{value:"aiAction",children:actionNameForType("aiAction")})}),(0,import_jsx_runtime17.jsx)(import_antd10.Tooltip,{title:"Extract data directly from the UI",children:(0,import_jsx_runtime17.jsx)(import_antd10.Radio.Button,{value:"aiQuery",children:actionNameForType("aiQuery")})}),(0,import_jsx_runtime17.jsx)(import_antd10.Tooltip,{title:"Understand the UI and determine if the assertion is true",children:(0,import_jsx_runtime17.jsx)(import_antd10.Radio.Button,{value:"aiAssert",children:actionNameForType("aiAssert")})}),(0,import_jsx_runtime17.jsx)(import_antd10.Tooltip,{title:"Instant Action: click something",children:(0,import_jsx_runtime17.jsx)(import_antd10.Radio.Button,{value:"aiTap",children:actionNameForType("aiTap")})})]})}),(0,import_jsx_runtime17.jsxs)("div",{className:"action-icons",children:[(0,import_jsx_runtime17.jsx)(HistorySelector,{onSelect:v}),(0,import_jsx_runtime17.jsx)("div",{className:c?"settings-wrapper settings-wrapper-hover":"settings-wrapper",onMouseEnter:S,onMouseLeave:C,children:(0,import_jsx_runtime17.jsx)(ConfigSelector,{enableTracking:"In-Browser-Extension"===n,showDeepThinkOption:"aiTap"===i})})]})]}),(0,import_jsx_runtime17.jsxs)("div",{className:`main-side-console-input ${t?"":"disabled"} ${s?"loading":""}`,children:[(0,import_jsx_runtime17.jsx)(import_antd10.Form.Item,{name:"prompt",style:{margin:0},children:(0,import_jsx_runtime17.jsx)(TextArea,{className:"main-side-console-input-textarea",disabled:!t,rows:4,placeholder:m,autoFocus:!0,onKeyDown:E,onChange:A,value:f,ref:g})}),(0,import_jsx_runtime17.jsx)("div",{className:"form-controller-wrapper",children:I()})]})]})};init_globals();var import_jsx_runtime18=__toESM(require_jsx_runtime()),GithubStar=()=>(0,import_jsx_runtime18.jsx)("a",{href:"https://github.com/web-infra-dev/midscene",target:"_blank",rel:"noreferrer",style:{display:"flex",alignItems:"center"},children:(0,import_jsx_runtime18.jsx)("img",{className:"github-star",src:"https://img.shields.io/github/stars/web-infra-dev/midscene?style=social",alt:"Github star",style:{display:"block"}})});init_globals();var import_react10=__webpack_require__(4194);init_globals();var React5=__toESM(__webpack_require__(4194)),{createElement:createElement,createContext:createContext,createRef:createRef,forwardRef:forwardRef,useCallback:useCallback2,useContext:useContext,useEffect:useEffect7,useImperativeHandle:useImperativeHandle,useLayoutEffect:useLayoutEffect,useMemo:useMemo5,useRef:useRef5,useState:useState7}=React5,useId=React5["useId".toString()],useLayoutEffect_do_not_use_directly=useLayoutEffect,PanelGroupContext=createContext(null);PanelGroupContext.displayName="PanelGroupContext";var useIsomorphicLayoutEffect=useLayoutEffect_do_not_use_directly,wrappedUseId="function"==typeof useId?useId:()=>null,counter=0;function useUniqueId(t=null){let r=wrappedUseId(),n=useRef5(t||r||null);return null===n.current&&(n.current=""+counter++),null!=t?t:n.current}function PanelWithForwardedRef({children:t,className:r="",collapsedSize:n,collapsible:i,defaultSize:a,forwardedRef:o,id:s,maxSize:l,minSize:u,onCollapse:d,onExpand:c,onResize:h,order:f,style:p,tagName:m="div",...g}){let b=useContext(PanelGroupContext);if(null===b)throw Error("Panel components must be rendered within a PanelGroup container");let{collapsePanel:y,expandPanel:_,getPanelSize:v,getPanelStyle:A,groupId:w,isPanelCollapsed:x,reevaluatePanelConstraints:E,registerPanel:S,resizePanel:C,unregisterPanel:I}=b,T=useUniqueId(s),k=useRef5({callbacks:{onCollapse:d,onExpand:c,onResize:h},constraints:{collapsedSize:n,collapsible:i,defaultSize:a,maxSize:l,minSize:u},id:T,idIsFromProps:void 0!==s,order:f});useRef5({didLogMissingDefaultSizeWarning:!1}),useIsomorphicLayoutEffect(()=>{let{callbacks:t,constraints:r}=k.current,o={...r};k.current.id=T,k.current.idIsFromProps=void 0!==s,k.current.order=f,t.onCollapse=d,t.onExpand=c,t.onResize=h,r.collapsedSize=n,r.collapsible=i,r.defaultSize=a,r.maxSize=l,r.minSize=u,o.collapsedSize===r.collapsedSize&&o.collapsible===r.collapsible&&o.maxSize===r.maxSize&&o.minSize===r.minSize||E(k.current,o)}),useIsomorphicLayoutEffect(()=>{let t=k.current;return S(t),()=>{I(t)}},[f,T,S,I]),useImperativeHandle(o,()=>({collapse:()=>{y(k.current)},expand:t=>{_(k.current,t)},getId:()=>T,getSize:()=>v(k.current),isCollapsed:()=>x(k.current),isExpanded:()=>!x(k.current),resize:t=>{C(k.current,t)}}),[y,_,v,x,T,C]);let P=A(k.current,a);return createElement(m,{...g,children:t,className:r,id:s,style:{...P,...p},"data-panel":"","data-panel-collapsible":i||void 0,"data-panel-group-id":w,"data-panel-id":T,"data-panel-size":parseFloat(""+P.flexGrow).toFixed(1)})}var Panel=forwardRef((t,r)=>createElement(PanelWithForwardedRef,{...t,forwardedRef:r}));PanelWithForwardedRef.displayName="Panel",Panel.displayName="forwardRef(Panel)";var currentCursorStyle=null,styleElement=null;function getCursorStyle(t,r){if(r){let t=!!(r&EXCEEDED_VERTICAL_MIN),n=!!(r&EXCEEDED_VERTICAL_MAX);if(r&EXCEEDED_HORIZONTAL_MIN)return t?"se-resize":n?"ne-resize":"e-resize";if(r&EXCEEDED_HORIZONTAL_MAX)return t?"sw-resize":n?"nw-resize":"w-resize";if(t)return"s-resize";if(n)return"n-resize"}switch(t){case"horizontal":return"ew-resize";case"intersection":return"move";case"vertical":return"ns-resize"}}function resetGlobalCursorStyle(){null!==styleElement&&(document.head.removeChild(styleElement),currentCursorStyle=null,styleElement=null)}function setGlobalCursorStyle(t,r){let n=getCursorStyle(t,r);currentCursorStyle!==n&&(currentCursorStyle=n,null===styleElement&&(styleElement=document.createElement("style"),document.head.appendChild(styleElement)),styleElement.innerHTML=`*{cursor: ${n}!important;}`)}function isKeyDown(t){return"keydown"===t.type}function isPointerEvent(t){return t.type.startsWith("pointer")}function isMouseEvent(t){return t.type.startsWith("mouse")}function getResizeEventCoordinates(t){if(isPointerEvent(t)){if(t.isPrimary)return{x:t.clientX,y:t.clientY}}else if(isMouseEvent(t))return{x:t.clientX,y:t.clientY};return{x:1/0,y:1/0}}function getInputType(){if("function"==typeof matchMedia)return matchMedia("(pointer:coarse)").matches?"coarse":"fine"}function intersects(t,r,n){return n?t.x<r.x+r.width&&t.x+t.width>r.x&&t.y<r.y+r.height&&t.y+t.height>r.y:t.x<=r.x+r.width&&t.x+t.width>=r.x&&t.y<=r.y+r.height&&t.y+t.height>=r.y}function compare(t,r){let n;if(t===r)throw Error("Cannot compare node with itself");let i={a:get_ancestors(t),b:get_ancestors(r)};for(;i.a.at(-1)===i.b.at(-1);)t=i.a.pop(),r=i.b.pop(),n=t;assert(n,"Stacking order can only be calculated for elements with a common ancestor");let a=get_z_index(find_stacking_context(i.a)),o=get_z_index(find_stacking_context(i.b));if(a===o){let t=n.childNodes,r={a:i.a.at(-1),b:i.b.at(-1)},a=t.length;for(;a--;){let n=t[a];if(n===r.a)return 1;if(n===r.b)return -1}}return Math.sign(a-o)}var props=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function is_flex_item(t){var r;let n=getComputedStyle(null!=(r=get_parent(t))?r:t).display;return"flex"===n||"inline-flex"===n}function creates_stacking_context(t){let r=getComputedStyle(t);return"fixed"===r.position||!("auto"===r.zIndex||"static"===r.position&&!is_flex_item(t))||1>+r.opacity||"transform"in r&&"none"!==r.transform||"webkitTransform"in r&&"none"!==r.webkitTransform||"mixBlendMode"in r&&"normal"!==r.mixBlendMode||"filter"in r&&"none"!==r.filter||"webkitFilter"in r&&"none"!==r.webkitFilter||"isolation"in r&&"isolate"===r.isolation||!!props.test(r.willChange)||"touch"===r.webkitOverflowScrolling}function find_stacking_context(t){let r=t.length;for(;r--;){let n=t[r];if(assert(n,"Missing node"),creates_stacking_context(n))return n}return null}function get_z_index(t){return t&&Number(getComputedStyle(t).zIndex)||0}function get_ancestors(t){let r=[];for(;t;)r.push(t),t=get_parent(t);return r}function get_parent(t){let{parentNode:r}=t;return r&&r instanceof ShadowRoot?r.host:r}var EXCEEDED_HORIZONTAL_MIN=1,EXCEEDED_HORIZONTAL_MAX=2,EXCEEDED_VERTICAL_MIN=4,EXCEEDED_VERTICAL_MAX=8,isCoarsePointer="coarse"===getInputType(),intersectingHandles=[],isPointerDown=!1,ownerDocumentCounts=new Map,panelConstraintFlags=new Map,registeredResizeHandlers=new Set;function registerResizeHandle(t,r,n,i,a){var o;let{ownerDocument:s}=r,l={direction:n,element:r,hitAreaMargins:i,setResizeHandlerState:a},u=null!=(o=ownerDocumentCounts.get(s))?o:0;return ownerDocumentCounts.set(s,u+1),registeredResizeHandlers.add(l),updateListeners(),function(){var r;panelConstraintFlags.delete(t),registeredResizeHandlers.delete(l);let n=null!=(r=ownerDocumentCounts.get(s))?r:1;if(ownerDocumentCounts.set(s,n-1),updateListeners(),1===n&&ownerDocumentCounts.delete(s),intersectingHandles.includes(l)){let t=intersectingHandles.indexOf(l);t>=0&&intersectingHandles.splice(t,1),updateCursor()}}}function handlePointerDown(t){let{target:r}=t,{x:n,y:i}=getResizeEventCoordinates(t);isPointerDown=!0,recalculateIntersectingHandles({target:r,x:n,y:i}),updateListeners(),intersectingHandles.length>0&&(updateResizeHandlerStates("down",t),t.preventDefault(),t.stopPropagation())}function handlePointerMove(t){let{x:r,y:n}=getResizeEventCoordinates(t);if(0===t.buttons&&(isPointerDown=!1,updateResizeHandlerStates("up",t)),!isPointerDown){let{target:i}=t;recalculateIntersectingHandles({target:i,x:r,y:n})}updateResizeHandlerStates("move",t),updateCursor(),intersectingHandles.length>0&&t.preventDefault()}function handlePointerUp(t){let{target:r}=t,{x:n,y:i}=getResizeEventCoordinates(t);panelConstraintFlags.clear(),isPointerDown=!1,intersectingHandles.length>0&&t.preventDefault(),updateResizeHandlerStates("up",t),recalculateIntersectingHandles({target:r,x:n,y:i}),updateCursor(),updateListeners()}function recalculateIntersectingHandles({target:t,x:r,y:n}){intersectingHandles.splice(0);let i=null;t instanceof HTMLElement&&(i=t),registeredResizeHandlers.forEach(t=>{let{element:a,hitAreaMargins:o}=t,s=a.getBoundingClientRect(),{bottom:l,left:u,right:d,top:c}=s,h=isCoarsePointer?o.coarse:o.fine;if(r>=u-h&&r<=d+h&&n>=c-h&&n<=l+h){if(null!==i&&a!==i&&!a.contains(i)&&!i.contains(a)&&compare(i,a)>0){let t=i,r=!1;for(;t&&!t.contains(a);){if(intersects(t.getBoundingClientRect(),s,!0)){r=!0;break}t=t.parentElement}if(r)return}intersectingHandles.push(t)}})}function reportConstraintsViolation(t,r){panelConstraintFlags.set(t,r)}function updateCursor(){let t=!1,r=!1;intersectingHandles.forEach(n=>{let{direction:i}=n;"horizontal"===i?t=!0:r=!0});let n=0;panelConstraintFlags.forEach(t=>{n|=t}),t&&r?setGlobalCursorStyle("intersection",n):t?setGlobalCursorStyle("horizontal",n):r?setGlobalCursorStyle("vertical",n):resetGlobalCursorStyle()}function updateListeners(){ownerDocumentCounts.forEach((t,r)=>{let{body:n}=r;n.removeEventListener("contextmenu",handlePointerUp),n.removeEventListener("pointerdown",handlePointerDown),n.removeEventListener("pointerleave",handlePointerMove),n.removeEventListener("pointermove",handlePointerMove)}),window.removeEventListener("pointerup",handlePointerUp),window.removeEventListener("pointercancel",handlePointerUp),registeredResizeHandlers.size>0&&(isPointerDown?(intersectingHandles.length>0&&ownerDocumentCounts.forEach((t,r)=>{let{body:n}=r;t>0&&(n.addEventListener("contextmenu",handlePointerUp),n.addEventListener("pointerleave",handlePointerMove),n.addEventListener("pointermove",handlePointerMove))}),window.addEventListener("pointerup",handlePointerUp),window.addEventListener("pointercancel",handlePointerUp)):ownerDocumentCounts.forEach((t,r)=>{let{body:n}=r;t>0&&(n.addEventListener("pointerdown",handlePointerDown,{capture:!0}),n.addEventListener("pointermove",handlePointerMove))}))}function updateResizeHandlerStates(t,r){registeredResizeHandlers.forEach(n=>{let{setResizeHandlerState:i}=n;i(t,intersectingHandles.includes(n),r)})}function useForceUpdate(){let[t,r]=useState7(0);return useCallback2(()=>r(t=>t+1),[])}function assert(t,r){if(!t)throw import_console_browserify.default.error(r),Error(r)}var PRECISION=10;function fuzzyCompareNumbers(t,r,n=PRECISION){return t.toFixed(n)===r.toFixed(n)?0:t>r?1:-1}function fuzzyNumbersEqual$1(t,r,n=PRECISION){return 0===fuzzyCompareNumbers(t,r,n)}function fuzzyNumbersEqual(t,r,n){return 0===fuzzyCompareNumbers(t,r,n)}function fuzzyLayoutsEqual(t,r,n){if(t.length!==r.length)return!1;for(let i=0;i<t.length;i++)if(!fuzzyNumbersEqual(t[i],r[i],n))return!1;return!0}function resizePanel({panelConstraints:t,panelIndex:r,size:n}){let i=t[r];assert(null!=i,`Panel constraints not found for index ${r}`);let{collapsedSize:a=0,collapsible:o,maxSize:s=100,minSize:l=0}=i;return 0>fuzzyCompareNumbers(n,l)&&(n=o&&0>fuzzyCompareNumbers(n,(a+l)/2)?a:l),n=parseFloat((n=Math.min(s,n)).toFixed(PRECISION))}function adjustLayoutByDelta({delta:t,initialLayout:r,panelConstraints:n,pivotIndices:i,prevLayout:a,trigger:o}){if(fuzzyNumbersEqual(t,0))return r;let s=[...r],[l,u]=i;assert(null!=l,"Invalid first pivot index"),assert(null!=u,"Invalid second pivot index");let d=0;if("keyboard"===o){{let i=t<0?u:l,a=n[i];assert(a,`Panel constraints not found for index ${i}`);let{collapsedSize:o=0,collapsible:s,minSize:d=0}=a;if(s){let n=r[i];if(assert(null!=n,`Previous layout not found for panel index ${i}`),fuzzyNumbersEqual(n,o)){let r=d-n;fuzzyCompareNumbers(r,Math.abs(t))>0&&(t=t<0?0-r:r)}}}{let i=t<0?l:u,a=n[i];assert(a,`No panel constraints found for index ${i}`);let{collapsedSize:o=0,collapsible:s,minSize:d=0}=a;if(s){let n=r[i];if(assert(null!=n,`Previous layout not found for panel index ${i}`),fuzzyNumbersEqual(n,d)){let r=n-o;fuzzyCompareNumbers(r,Math.abs(t))>0&&(t=t<0?0-r:r)}}}}{let i=t<0?1:-1,a=t<0?u:l,o=0;for(;;){let t=r[a];if(assert(null!=t,`Previous layout not found for panel index ${a}`),o+=resizePanel({panelConstraints:n,panelIndex:a,size:100})-t,(a+=i)<0||a>=n.length)break}let s=Math.min(Math.abs(t),Math.abs(o));t=t<0?0-s:s}{let i=t<0?l:u;for(;i>=0&&i<n.length;){let a=Math.abs(t)-Math.abs(d),o=r[i];assert(null!=o,`Previous layout not found for panel index ${i}`);let l=resizePanel({panelConstraints:n,panelIndex:i,size:o-a});if(!fuzzyNumbersEqual(o,l)&&(d+=o-l,s[i]=l,d.toPrecision(3).localeCompare(Math.abs(t).toPrecision(3),void 0,{numeric:!0})>=0))break;t<0?i--:i++}}if(fuzzyLayoutsEqual(a,s))return a;{let i=t<0?u:l,a=r[i];assert(null!=a,`Previous layout not found for panel index ${i}`);let o=a+d,c=resizePanel({panelConstraints:n,panelIndex:i,size:o});if(s[i]=c,!fuzzyNumbersEqual(c,o)){let r=o-c,i=t<0?u:l;for(;i>=0&&i<n.length;){let a=s[i];assert(null!=a,`Previous layout not found for panel index ${i}`);let o=resizePanel({panelConstraints:n,panelIndex:i,size:a+r});if(fuzzyNumbersEqual(a,o)||(r-=o-a,s[i]=o),fuzzyNumbersEqual(r,0))break;t>0?i--:i++}}}return fuzzyNumbersEqual(s.reduce((t,r)=>r+t,0),100)?s:a}function calculateAriaValues({layout:t,panelsArray:r,pivotIndices:n}){let i=0,a=100,o=0,s=0,l=n[0];return assert(null!=l,"No pivot index found"),r.forEach((t,r)=>{let{constraints:n}=t,{maxSize:u=100,minSize:d=0}=n;r===l?(i=d,a=u):(o+=d,s+=u)}),{valueMax:Math.min(a,100-o),valueMin:Math.max(i,100-s),valueNow:t[l]}}function getResizeHandleElementsForGroup(t,r=document){return Array.from(r.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${t}"]`))}function getResizeHandleElementIndex(t,r,n=document){let i=getResizeHandleElementsForGroup(t,n).findIndex(t=>t.getAttribute("data-panel-resize-handle-id")===r);return null!=i?i:null}function determinePivotIndices(t,r,n){let i=getResizeHandleElementIndex(t,r,n);return null!=i?[i,i+1]:[-1,-1]}function getPanelGroupElement(t,r=document){var n;return r instanceof HTMLElement&&(null==r||null==(n=r.dataset)?void 0:n.panelGroupId)==t?r:r.querySelector(`[data-panel-group][data-panel-group-id="${t}"]`)||null}function getResizeHandleElement(t,r=document){return r.querySelector(`[data-panel-resize-handle-id="${t}"]`)||null}function getResizeHandlePanelIds(t,r,n,i=document){var a,o,s,l;let u=getResizeHandleElement(r,i),d=getResizeHandleElementsForGroup(t,i),c=u?d.indexOf(u):-1;return[null!=(a=null==(o=n[c])?void 0:o.id)?a:null,null!=(s=null==(l=n[c+1])?void 0:l.id)?s:null]}function useWindowSplitterPanelGroupBehavior({committedValuesRef:t,eagerValuesRef:r,groupId:n,layout:i,panelDataArray:a,panelGroupElement:o,setLayout:s}){useRef5({didWarnAboutMissingResizeHandle:!1}),useIsomorphicLayoutEffect(()=>{if(!o)return;let t=getResizeHandleElementsForGroup(n,o);for(let r=0;r<a.length-1;r++){let{valueMax:n,valueMin:o,valueNow:s}=calculateAriaValues({layout:i,panelsArray:a,pivotIndices:[r,r+1]}),l=t[r];if(null==l);else{let t=a[r];assert(t,`No panel data found for index "${r}"`),l.setAttribute("aria-controls",t.id),l.setAttribute("aria-valuemax",""+Math.round(n)),l.setAttribute("aria-valuemin",""+Math.round(o)),l.setAttribute("aria-valuenow",null!=s?""+Math.round(s):"")}}return()=>{t.forEach((t,r)=>{t.removeAttribute("aria-controls"),t.removeAttribute("aria-valuemax"),t.removeAttribute("aria-valuemin"),t.removeAttribute("aria-valuenow")})}},[n,i,a,o]),useEffect7(()=>{if(!o)return;let t=r.current;assert(t,"Eager values not found");let{panelDataArray:a}=t;assert(null!=getPanelGroupElement(n,o),`No group found for id "${n}"`);let l=getResizeHandleElementsForGroup(n,o);assert(l,`No resize handles found for group id "${n}"`);let u=l.map(t=>{let r=t.getAttribute("data-panel-resize-handle-id");assert(r,"Resize handle element has no handle id attribute");let[l,u]=getResizeHandlePanelIds(n,r,a,o);if(null==l||null==u)return()=>{};let d=t=>{if(!t.defaultPrevented&&"Enter"===t.key){t.preventDefault();let u=a.findIndex(t=>t.id===l);if(u>=0){let t=a[u];assert(t,`No panel data found for index ${u}`);let l=i[u],{collapsedSize:d=0,collapsible:c,minSize:h=0}=t.constraints;if(null!=l&&c){let t=adjustLayoutByDelta({delta:fuzzyNumbersEqual(l,d)?h-d:d-l,initialLayout:i,panelConstraints:a.map(t=>t.constraints),pivotIndices:determinePivotIndices(n,r,o),prevLayout:i,trigger:"keyboard"});i!==t&&s(t)}}}};return t.addEventListener("keydown",d),()=>{t.removeEventListener("keydown",d)}});return()=>{u.forEach(t=>t())}},[o,t,r,n,i,a,s])}function areEqual(t,r){if(t.length!==r.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==r[n])return!1;return!0}function getResizeEventCursorPosition(t,r){let n="horizontal"===t,{x:i,y:a}=getResizeEventCoordinates(r);return n?i:a}function calculateDragOffsetPercentage(t,r,n,i,a){let o="horizontal"===n,s=getResizeHandleElement(r,a);assert(s,`No resize handle element found for id "${r}"`);let l=s.getAttribute("data-panel-group-id");assert(l,"Resize handle element has no group id attribute");let{initialCursorPosition:u}=i,d=getResizeEventCursorPosition(n,t),c=getPanelGroupElement(l,a);assert(c,`No group element found for id "${l}"`);let h=c.getBoundingClientRect();return(d-u)/(o?h.width:h.height)*100}function calculateDeltaPercentage(t,r,n,i,a,o){if(isKeyDown(t)){let r="horizontal"===n,i=0;i=t.shiftKey?100:null!=a?a:10;let o=0;switch(t.key){case"ArrowDown":o=r?0:i;break;case"ArrowLeft":o=r?-i:0;break;case"ArrowRight":o=r?i:0;break;case"ArrowUp":o=r?0:-i;break;case"End":o=100;break;case"Home":o=-100}return o}return null==i?0:calculateDragOffsetPercentage(t,r,n,i,o)}function calculateUnsafeDefaultLayout({panelDataArray:t}){let r=Array(t.length),n=t.map(t=>t.constraints),i=0,a=100;for(let o=0;o<t.length;o++){let t=n[o];assert(t,`Panel constraints not found for index ${o}`);let{defaultSize:s}=t;null!=s&&(i++,r[o]=s,a-=s)}for(let o=0;o<t.length;o++){let s=n[o];assert(s,`Panel constraints not found for index ${o}`);let{defaultSize:l}=s;if(null!=l)continue;let u=a/(t.length-i);i++,r[o]=u,a-=u}return r}function callPanelCallbacks(t,r,n){r.forEach((r,i)=>{let a=t[i];assert(a,`Panel data not found for index ${i}`);let{callbacks:o,constraints:s,id:l}=a,{collapsedSize:u=0,collapsible:d}=s,c=n[l];if(null==c||r!==c){n[l]=r;let{onCollapse:t,onExpand:i,onResize:a}=o;a&&a(r,c),d&&(t||i)&&(!i||null!=c&&!fuzzyNumbersEqual$1(c,u)||fuzzyNumbersEqual$1(r,u)||i(),!t||null!=c&&fuzzyNumbersEqual$1(c,u)||!fuzzyNumbersEqual$1(r,u)||t())}})}function compareLayouts(t,r){if(t.length!==r.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!=r[n])return!1;return!0}function computePanelFlexBoxStyle({defaultSize:t,dragState:r,layout:n,panelData:i,panelIndex:a,precision:o=3}){let s=n[a];return{flexBasis:0,flexGrow:null==s?null!=t?t.toPrecision(o):"1":1===i.length?"1":s.toPrecision(o),flexShrink:1,overflow:"hidden",pointerEvents:null!==r?"none":void 0}}function debounce(t,r=10){let n=null;return(...i)=>{null!==n&&clearTimeout(n),n=setTimeout(()=>{t(...i)},r)}}function initializeDefaultStorage(t){try{if("undefined"==typeof localStorage)throw Error("localStorage not supported in this environment");t.getItem=t=>localStorage.getItem(t),t.setItem=(t,r)=>{localStorage.setItem(t,r)}}catch(r){import_console_browserify.default.error(r),t.getItem=()=>null,t.setItem=()=>{}}}function getPanelGroupKey(t){return`react-resizable-panels:${t}`}function getPanelKey(t){return t.map(t=>{let{constraints:r,id:n,idIsFromProps:i,order:a}=t;return i?n:a?`${a}:${JSON.stringify(r)}`:JSON.stringify(r)}).sort((t,r)=>t.localeCompare(r)).join(",")}function loadSerializedPanelGroupState(t,r){try{let n=getPanelGroupKey(t),i=r.getItem(n);if(i){let t=JSON.parse(i);if("object"==typeof t&&null!=t)return t}}catch(t){}return null}function loadPanelGroupState(t,r,n){var i,a;return null!=(a=(null!=(i=loadSerializedPanelGroupState(t,n))?i:{})[getPanelKey(r)])?a:null}function savePanelGroupState(t,r,n,i,a){var o;let s=getPanelGroupKey(t),l=getPanelKey(r),u=null!=(o=loadSerializedPanelGroupState(t,a))?o:{};u[l]={expandToSizes:Object.fromEntries(n.entries()),layout:i};try{a.setItem(s,JSON.stringify(u))}catch(t){import_console_browserify.default.error(t)}}function validatePanelGroupLayout({layout:t,panelConstraints:r}){let n=[...t],i=n.reduce((t,r)=>t+r,0);if(n.length!==r.length)throw Error(`Invalid ${r.length} panel layout: ${n.map(t=>`${t}%`).join(", ")}`);if(!fuzzyNumbersEqual(i,100))for(let t=0;t<r.length;t++){let r=n[t];assert(null!=r,`No layout data found for index ${t}`);let a=100/i*r;n[t]=a}let a=0;for(let t=0;t<r.length;t++){let i=n[t];assert(null!=i,`No layout data found for index ${t}`);let o=resizePanel({panelConstraints:r,panelIndex:t,size:i});i!=o&&(a+=i-o,n[t]=o)}if(!fuzzyNumbersEqual(a,0))for(let t=0;t<r.length;t++){let i=n[t];assert(null!=i,`No layout data found for index ${t}`);let o=resizePanel({panelConstraints:r,panelIndex:t,size:i+a});if(i!==o&&(a-=o-i,n[t]=o,fuzzyNumbersEqual(a,0)))break}return n}var LOCAL_STORAGE_DEBOUNCE_INTERVAL=100,defaultStorage={getItem:t=>(initializeDefaultStorage(defaultStorage),defaultStorage.getItem(t)),setItem:(t,r)=>{initializeDefaultStorage(defaultStorage),defaultStorage.setItem(t,r)}},debounceMap={};function PanelGroupWithForwardedRef({autoSaveId:t=null,children:r,className:n="",direction:i,forwardedRef:a,id:o=null,onLayout:s=null,keyboardResizeBy:l=null,storage:u=defaultStorage,style:d,tagName:c="div",...h}){let f=useUniqueId(o),p=useRef5(null),[m,g]=useState7(null),[b,y]=useState7([]),_=useForceUpdate(),v=useRef5({}),A=useRef5(new Map),w=useRef5(0),x=useRef5({autoSaveId:t,direction:i,dragState:m,id:f,keyboardResizeBy:l,onLayout:s,storage:u}),E=useRef5({layout:b,panelDataArray:[],panelDataArrayChanged:!1});useRef5({didLogIdAndOrderWarning:!1,didLogPanelConstraintsWarning:!1,prevPanelIds:[]}),useImperativeHandle(a,()=>({getId:()=>x.current.id,getLayout:()=>{let{layout:t}=E.current;return t},setLayout:t=>{let{onLayout:r}=x.current,{layout:n,panelDataArray:i}=E.current,a=validatePanelGroupLayout({layout:t,panelConstraints:i.map(t=>t.constraints)});areEqual(n,a)||(y(a),E.current.layout=a,r&&r(a),callPanelCallbacks(i,a,v.current))}}),[]),useIsomorphicLayoutEffect(()=>{x.current.autoSaveId=t,x.current.direction=i,x.current.dragState=m,x.current.id=f,x.current.onLayout=s,x.current.storage=u}),useWindowSplitterPanelGroupBehavior({committedValuesRef:x,eagerValuesRef:E,groupId:f,layout:b,panelDataArray:E.current.panelDataArray,setLayout:y,panelGroupElement:p.current}),useEffect7(()=>{let{panelDataArray:r}=E.current;if(t){if(0===b.length||b.length!==r.length)return;let n=debounceMap[t];null==n&&(n=debounce(savePanelGroupState,LOCAL_STORAGE_DEBOUNCE_INTERVAL),debounceMap[t]=n),n(t,[...r],new Map(A.current),b,u)}},[t,b,u]),useEffect7(()=>{});let S=useCallback2(t=>{let{onLayout:r}=x.current,{layout:n,panelDataArray:i}=E.current;if(t.constraints.collapsible){let a=i.map(t=>t.constraints),{collapsedSize:o=0,panelSize:s,pivotIndices:l}=panelDataHelper(i,t,n);if(assert(null!=s,`Panel size not found for panel "${t.id}"`),!fuzzyNumbersEqual$1(s,o)){A.current.set(t.id,s);let u=adjustLayoutByDelta({delta:findPanelDataIndex(i,t)===i.length-1?s-o:o-s,initialLayout:n,panelConstraints:a,pivotIndices:l,prevLayout:n,trigger:"imperative-api"});compareLayouts(n,u)||(y(u),E.current.layout=u,r&&r(u),callPanelCallbacks(i,u,v.current))}}},[]),C=useCallback2((t,r)=>{let{onLayout:n}=x.current,{layout:i,panelDataArray:a}=E.current;if(t.constraints.collapsible){let o=a.map(t=>t.constraints),{collapsedSize:s=0,panelSize:l=0,minSize:u=0,pivotIndices:d}=panelDataHelper(a,t,i),c=null!=r?r:u;if(fuzzyNumbersEqual$1(l,s)){let r=A.current.get(t.id),s=null!=r&&r>=c?r:c,u=adjustLayoutByDelta({delta:findPanelDataIndex(a,t)===a.length-1?l-s:s-l,initialLayout:i,panelConstraints:o,pivotIndices:d,prevLayout:i,trigger:"imperative-api"});compareLayouts(i,u)||(y(u),E.current.layout=u,n&&n(u),callPanelCallbacks(a,u,v.current))}}},[]),I=useCallback2(t=>{let{layout:r,panelDataArray:n}=E.current,{panelSize:i}=panelDataHelper(n,t,r);return assert(null!=i,`Panel size not found for panel "${t.id}"`),i},[]),T=useCallback2((t,r)=>{let{panelDataArray:n}=E.current,i=findPanelDataIndex(n,t);return computePanelFlexBoxStyle({defaultSize:r,dragState:m,layout:b,panelData:n,panelIndex:i})},[m,b]),k=useCallback2(t=>{let{layout:r,panelDataArray:n}=E.current,{collapsedSize:i=0,collapsible:a,panelSize:o}=panelDataHelper(n,t,r);return assert(null!=o,`Panel size not found for panel "${t.id}"`),!0===a&&fuzzyNumbersEqual$1(o,i)},[]),P=useCallback2(t=>{let{layout:r,panelDataArray:n}=E.current,{collapsedSize:i=0,collapsible:a,panelSize:o}=panelDataHelper(n,t,r);return assert(null!=o,`Panel size not found for panel "${t.id}"`),!a||fuzzyCompareNumbers(o,i)>0},[]),R=useCallback2(t=>{let{panelDataArray:r}=E.current;r.push(t),r.sort((t,r)=>{let n=t.order,i=r.order;return null==n&&null==i?0:null==n?-1:null==i?1:n-i}),E.current.panelDataArrayChanged=!0,_()},[_]);useIsomorphicLayoutEffect(()=>{if(E.current.panelDataArrayChanged){E.current.panelDataArrayChanged=!1;let{autoSaveId:t,onLayout:r,storage:n}=x.current,{layout:i,panelDataArray:a}=E.current,o=null;if(t){let r=loadPanelGroupState(t,a,n);r&&(A.current=new Map(Object.entries(r.expandToSizes)),o=r.layout)}null==o&&(o=calculateUnsafeDefaultLayout({panelDataArray:a}));let s=validatePanelGroupLayout({layout:o,panelConstraints:a.map(t=>t.constraints)});areEqual(i,s)||(y(s),E.current.layout=s,r&&r(s),callPanelCallbacks(a,s,v.current))}}),useIsomorphicLayoutEffect(()=>{let t=E.current;return()=>{t.layout=[]}},[]);let O=useCallback2(t=>function(r){r.preventDefault();let n=p.current;if(!n)return()=>null;let{direction:i,dragState:a,id:o,keyboardResizeBy:s,onLayout:l}=x.current,{layout:u,panelDataArray:d}=E.current,{initialLayout:c}=null!=a?a:{},h=determinePivotIndices(o,t,n),f=calculateDeltaPercentage(r,t,i,a,s,n),m="horizontal"===i;"rtl"===document.dir&&m&&(f=-f);let g=adjustLayoutByDelta({delta:f,initialLayout:null!=c?c:u,panelConstraints:d.map(t=>t.constraints),pivotIndices:h,prevLayout:u,trigger:isKeyDown(r)?"keyboard":"mouse-or-touch"}),b=!compareLayouts(u,g);(isPointerEvent(r)||isMouseEvent(r))&&w.current!=f&&(w.current=f,reportConstraintsViolation(t,b?0:m?f<0?EXCEEDED_HORIZONTAL_MIN:EXCEEDED_HORIZONTAL_MAX:f<0?EXCEEDED_VERTICAL_MIN:EXCEEDED_VERTICAL_MAX)),b&&(y(g),E.current.layout=g,l&&l(g),callPanelCallbacks(d,g,v.current))},[]),M=useCallback2((t,r)=>{let{onLayout:n}=x.current,{layout:i,panelDataArray:a}=E.current,o=a.map(t=>t.constraints),{panelSize:s,pivotIndices:l}=panelDataHelper(a,t,i);assert(null!=s,`Panel size not found for panel "${t.id}"`);let u=adjustLayoutByDelta({delta:findPanelDataIndex(a,t)===a.length-1?s-r:r-s,initialLayout:i,panelConstraints:o,pivotIndices:l,prevLayout:i,trigger:"imperative-api"});compareLayouts(i,u)||(y(u),E.current.layout=u,n&&n(u),callPanelCallbacks(a,u,v.current))},[]),j=useCallback2((t,r)=>{let{layout:n,panelDataArray:i}=E.current,{collapsedSize:a=0,collapsible:o}=r,{collapsedSize:s=0,collapsible:l,maxSize:u=100,minSize:d=0}=t.constraints,{panelSize:c}=panelDataHelper(i,t,n);null!=c&&(o&&l&&fuzzyNumbersEqual$1(c,a)?fuzzyNumbersEqual$1(a,s)||M(t,s):c<d?M(t,d):c>u&&M(t,u))},[M]),N=useCallback2((t,r)=>{let{direction:n}=x.current,{layout:i}=E.current;if(!p.current)return;let a=getResizeHandleElement(t,p.current);assert(a,`Drag handle element not found for id "${t}"`);let o=getResizeEventCursorPosition(n,r);g({dragHandleId:t,dragHandleRect:a.getBoundingClientRect(),initialCursorPosition:o,initialLayout:i})},[]),B=useCallback2(()=>{g(null)},[]),L=useCallback2(t=>{let{panelDataArray:r}=E.current,n=findPanelDataIndex(r,t);n>=0&&(r.splice(n,1),delete v.current[t.id],E.current.panelDataArrayChanged=!0,_())},[_]),D=useMemo5(()=>({collapsePanel:S,direction:i,dragState:m,expandPanel:C,getPanelSize:I,getPanelStyle:T,groupId:f,isPanelCollapsed:k,isPanelExpanded:P,reevaluatePanelConstraints:j,registerPanel:R,registerResizeHandle:O,resizePanel:M,startDragging:N,stopDragging:B,unregisterPanel:L,panelGroupElement:p.current}),[S,m,i,C,I,T,f,k,P,j,R,O,M,N,B,L]),U={display:"flex",flexDirection:"horizontal"===i?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return createElement(PanelGroupContext.Provider,{value:D},createElement(c,{...h,children:r,className:n,id:o,ref:p,style:{...U,...d},"data-panel-group":"","data-panel-group-direction":i,"data-panel-group-id":f}))}var PanelGroup=forwardRef((t,r)=>createElement(PanelGroupWithForwardedRef,{...t,forwardedRef:r}));function findPanelDataIndex(t,r){return t.findIndex(t=>t===r||t.id===r.id)}function panelDataHelper(t,r,n){let i=findPanelDataIndex(t,r),a=i===t.length-1?[i-1,i]:[i,i+1],o=n[i];return{...r.constraints,panelSize:o,pivotIndices:a}}function useWindowSplitterResizeHandlerBehavior({disabled:t,handleId:r,resizeHandler:n,panelGroupElement:i}){useEffect7(()=>{if(t||null==n||null==i)return;let a=getResizeHandleElement(r,i);if(null==a)return;let o=t=>{if(!t.defaultPrevented)switch(t.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":t.preventDefault(),n(t);break;case"F6":{t.preventDefault();let n=a.getAttribute("data-panel-group-id");assert(n,`No group element found for id "${n}"`);let o=getResizeHandleElementsForGroup(n,i),s=getResizeHandleElementIndex(n,r,i);assert(null!==s,`No resize element found for id "${r}"`),o[t.shiftKey?s>0?s-1:o.length-1:s+1<o.length?s+1:0].focus()}}};return a.addEventListener("keydown",o),()=>{a.removeEventListener("keydown",o)}},[i,t,r,n])}function PanelResizeHandle({children:t=null,className:r="",disabled:n=!1,hitAreaMargins:i,id:a,onBlur:o,onDragging:s,onFocus:l,style:u={},tabIndex:d=0,tagName:c="div",...h}){var f,p;let m=useRef5(null),g=useRef5({onDragging:s});useEffect7(()=>{g.current.onDragging=s});let b=useContext(PanelGroupContext);if(null===b)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");let{direction:y,groupId:_,registerResizeHandle:v,startDragging:A,stopDragging:w,panelGroupElement:x}=b,E=useUniqueId(a),[S,C]=useState7("inactive"),[I,T]=useState7(!1),[k,P]=useState7(null),R=useRef5({state:S});useIsomorphicLayoutEffect(()=>{R.current.state=S}),useEffect7(()=>{if(n)P(null);else{let t=v(E);P(()=>t)}},[n,E,v]);let O=null!=(f=null==i?void 0:i.coarse)?f:15,M=null!=(p=null==i?void 0:i.fine)?p:5;return useEffect7(()=>{if(n||null==k)return;let t=m.current;return assert(t,"Element ref not attached"),registerResizeHandle(E,t,y,{coarse:O,fine:M},(t,r,n)=>{if(r)switch(t){case"down":{C("drag"),A(E,n);let{onDragging:t}=g.current;t&&t(!0);break}case"move":{let{state:t}=R.current;"drag"!==t&&C("hover"),k(n);break}case"up":{C("hover"),w();let{onDragging:t}=g.current;t&&t(!1)}}else C("inactive")})},[O,y,n,M,v,E,k,A,w]),useWindowSplitterResizeHandlerBehavior({disabled:n,handleId:E,resizeHandler:k,panelGroupElement:x}),createElement(c,{...h,children:t,className:r,id:a,onBlur:()=>{T(!1),null==o||o()},onFocus:()=>{T(!0),null==l||l()},ref:m,role:"separator",style:{touchAction:"none",userSelect:"none",...u},tabIndex:d,"data-panel-group-direction":y,"data-panel-group-id":_,"data-resize-handle":"","data-resize-handle-active":"drag"===S?"pointer":I?"keyboard":void 0,"data-resize-handle-state":S,"data-panel-resize-handle-enabled":!n,"data-panel-resize-handle-id":E})}PanelGroupWithForwardedRef.displayName="PanelGroup",PanelGroup.displayName="forwardRef(PanelGroup)",PanelResizeHandle.displayName="PanelResizeHandle";var import_jsx_runtime19=__toESM(require_jsx_runtime()),Describer=t=>{let{uiContext:r}=t,n=r.screenshotBase64,i=(0,import_react10.useRef)(null),[a,o]=(0,import_react10.useState)([]),[s,l]=(0,import_react10.useState)(),[u,d]=(0,import_react10.useState)(),[c,h]=(0,import_react10.useState)(!1),[f,p]=(0,import_react10.useState)(),m=useStaticPageAgent(r);(0,import_react10.useEffect)(()=>{let t=i.current;if(!t||!n)return;let r=t.getContext("2d");if(!r)return;let a=new Image;a.onload=()=>{t.width=a.width,t.height=a.height,r.drawImage(a,0,0)},a.src=n},[n]);let g="";return u?g=u:f&&!f.verifyResult?.pass?g=`Locate failed with prompt: ${f.prompt}`:f?g=f.deepThink?`Deep think: ${f.prompt}`:f.prompt:c&&(g="Loading..."),(0,import_jsx_runtime19.jsx)("div",{className:"image-describer",children:(0,import_jsx_runtime19.jsxs)(PanelGroup,{autoSaveId:"describer-layout",direction:"horizontal",children:[(0,import_jsx_runtime19.jsx)(Panel,{defaultSize:32,maxSize:60,minSize:20,style:{paddingRight:"24px"},children:(0,import_jsx_runtime19.jsxs)("div",{className:"form-part context-panel",children:[(0,import_jsx_runtime19.jsx)("h3",{children:"Screenshot"}),(0,import_jsx_runtime19.jsx)("div",{className:"form-sub-title",children:"Click on the screenshot, Midscene will help you describe the element at the clicked point."}),(0,import_jsx_runtime19.jsx)(Blackboard,{uiContext:{...r,tree:{node:null,children:[]}},highlightPoints:a,highlightRect:s,onCanvasClick:async t=>{if(m){h(!0),d(void 0),p(void 0),o([]),l(void 0);try{let r=[t[0],t[1]];o([r]);let n=await m?.describeElementAtPoint(r);import_console_browserify.default.log("describe result",n),p(n),n.verifyResult?.rect&&l(n.verifyResult.rect)}catch(t){d(t.message)}finally{h(!1)}}else import_console_browserify.default.error("agent is not initialized")},hideController:!0})]})}),(0,import_jsx_runtime19.jsx)(PanelResizeHandle,{className:"panel-resize-handle"}),(0,import_jsx_runtime19.jsx)(Panel,{children:(0,import_jsx_runtime19.jsx)(PlaygroundResultView,{result:{result:g,error:u||null},loading:c,serverValid:!0,serviceMode:"In-Browser",replayScriptsInfo:null,replayCounter:0,loadingProgressText:""})})]})})}},9084:function(t,r,n){var i=n(1549),a=n(8082),o=n(8409),s=n(7966),l=n(5222),u=n(247),d=n(2957),c=n(9576),h=n(6327),f=n(3636),p=n(4465),m=n(4194),g=n(2726),b=n(3876),y=n(3648),_=n(4838),v=n(8941);let A=t=>(0,i.jsx)("span",{className:"status-dot",style:{color:t},children:"●"}),w=t=>{var r,n,a;let{devices:o,loadingDevices:s,selectedDeviceId:u,onDeviceSelect:d,socketRef:h,scrcpyPlayerRef:f}=t,[p,g]=(0,m.useState)(!1),w=(0,m.useRef)(null),[x,E]=c.ZP.useMessage(),S=(0,l.useServerValid)(!0),C=(0,m.useCallback)(t=>{t!==w.current&&h.current&&h.current.connected&&(g(!1),d(t),w.current=t)},[d,h]),I=(0,m.useCallback)(()=>{f.current&&(f.current.disconnectDevice(),x.info("Device disconnected"))},[f,x]),T=!!u&&(null==(r=o.find(t=>t.id===u))?void 0:r.status.toLowerCase())!=="device";return(0,m.useEffect)(()=>{T&&u&&I()},[T,u,I,x]),(0,i.jsxs)("div",{className:"device-header",children:[E,(0,i.jsxs)("div",{className:"device-title-container",children:[(0,i.jsx)("h2",{className:"device-title",children:"Device"}),(0,i.jsx)(y.Z,{trigger:["click"],placement:"bottomLeft",open:p,onOpenChange:g,dropdownRender:()=>(0,i.jsxs)("div",{className:"device-dropdown",children:[(0,i.jsx)("div",{className:"dropdown-header",children:(0,i.jsx)("span",{className:"dropdown-title",children:"Devices list"})}),(0,i.jsxs)("div",{className:"device-list",children:[o.map(t=>(0,i.jsx)("div",{onClick:()=>{"device"===t.status.toLowerCase()&&C(t.id)},className:`device-list-item ${"device"===t.status.toLowerCase()&&u===t.id?"selected":""} ${"device"!==t.status.toLowerCase()?"offline":""}`,children:(0,i.jsxs)("div",{className:"device-item-content",children:[(0,i.jsx)("div",{className:"device-item-icon-container",children:(0,i.jsx)(b.Z,{className:"device-item-icon"})}),(0,i.jsxs)("div",{className:"device-item-info",children:[(0,i.jsx)("div",{className:"device-item-name",children:t.name||t.id}),(0,i.jsxs)("div",{className:"device-item-status",children:[(0,i.jsx)("div",{className:"status-badge",children:"device"===t.status.toLowerCase()?(0,i.jsxs)(i.Fragment,{children:[A("#52c41a"),(0,i.jsx)("span",{className:"status-text",children:"Online"})]}):(0,i.jsxs)(i.Fragment,{children:[A("#f5222d"),(0,i.jsx)("span",{className:"status-text",children:"Offline"})]})}),(0,i.jsx)(_.Z,{type:"vertical",className:"status-divider"}),(0,i.jsxs)("div",{className:"device-id-container",children:["Device ID: ",t.id]})]})]}),"device"===t.status.toLowerCase()&&u===t.id&&(0,i.jsx)("div",{className:"current-device-indicator",children:"Current device"})]})},t.id)),0===o.length&&(0,i.jsx)("div",{className:"device-list-empty",children:"No devices found"})]})]}),children:(0,i.jsxs)(v.ZP,{className:"device-dropdown-button",children:[(0,i.jsxs)("div",{className:"device-icon-container",children:[(0,i.jsx)(b.Z,{className:"device-icon"}),u&&S&&(0,i.jsx)("div",{className:"status-indicator",children:(null==(n=o.find(t=>t.id===u))?void 0:n.status.toLowerCase())==="device"?(0,i.jsx)(i.Fragment,{children:A("#52c41a")}):(0,i.jsx)(i.Fragment,{children:A("#f5222d")})})]}),u&&!T&&S?(0,i.jsx)("span",{className:"device-name",children:(null==(a=o.find(t=>t.id===u))?void 0:a.name)||u}):(0,i.jsx)("span",{className:"device-name no-device",children:"No device"}),(0,i.jsx)("span",{className:"dropdown-arrow",children:"▼"})]})})]})]})};var x=n(7379),E=n(2882),S=n(1138),C=n(2686),I=n(2688),T=n(1547),k=n(6112),P=n(8275),R=n(3405);let O=t=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...t,children:(0,i.jsx)("path",{fill:"#000",fillOpacity:.25,fillRule:"evenodd",d:"M9.68 2c1.2-1.2 3.2-1.28 4.4-.08s1.12 3.2-.08 4.4l-2.16 2.16c-.24.24-.56.24-.8 0s-.24-.56 0-.8l2.16-2.16c.8-.8.8-2.08.08-2.8s-2-.72-2.8.08L8.32 4.96c-.24.24-.56.24-.8 0s-.24-.56 0-.8zM5.6 13.2l2.16-2.16c.24-.24.56-.24.8 0s.24.56 0 .8L6.4 14c-1.2 1.2-3.12 1.36-4.4.08-1.36-1.28-1.2-3.2.08-4.4l2.16-2.16c.24-.24.56-.24.8 0s.24.56 0 .8l-2.16 2.16c-.8.8-.88 2-.08 2.8s2 .72 2.8-.08m4.64-8.24c.24-.24.64-.24.96 0 .24.24.24.64 0 .96L5.92 11.2c-.24.24-.64.24-.96 0-.24-.24-.24-.64 0-.96z",clipRule:"evenodd"})}),M=t=>(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...t,children:[(0,i.jsxs)("g",{fill:"#606266",clipPath:"url(#screenshot_svg__a)",children:[(0,i.jsx)("path",{d:"m4.883 2.663-.858 2.001h-2.69v8.673h13.341V4.664H11.32l-.859-2zm-1.738.667.858-2.001h7.338l.858 2.001h2.477a1.334 1.334 0 0 1 1.334 1.334v8.673a1.335 1.335 0 0 1-1.334 1.334H1.334A1.334 1.334 0 0 1 0 13.337V4.664A1.334 1.334 0 0 1 1.334 3.33z"}),(0,i.jsx)("path",{d:"M8.005 10.001a1.334 1.334 0 1 0 0-2.668 1.334 1.334 0 0 0 0 2.668m0 1.335a2.668 2.668 0 1 1 0-5.337 2.668 2.668 0 0 1 0 5.337m3.336-6.004h.667q.667 0 .667.667 0 .666-.667.667h-.667q-.667 0-.667-.667t.667-.667"})]}),(0,i.jsx)("defs",{children:(0,i.jsx)("clipPath",{id:"screenshot_svg__a",children:(0,i.jsx)("path",{fill:"#fff",d:"M0 0h16v16H0z"})})})]}),j=t=>(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16",...t,children:(0,i.jsx)("path",{fill:"#FF4550",d:"M14.08 1.92C12.88.72 10.88.8 9.68 2L7.52 4.16c-.24.24-.24.56 0 .8s.56.24.8 0l2.16-2.16c.8-.8 2.08-.8 2.8-.08s.72 2-.08 2.8l-2.16 2.16c-.24.24-.24.56 0 .8s.56.24.8 0L14 6.32c1.2-1.2 1.28-3.2.08-4.4m-6.32 9.12L5.6 13.2c-.8.8-2 .88-2.8.08s-.72-2 .08-2.8l2.16-2.16c.24-.24.24-.56 0-.8s-.56-.24-.8 0L2.08 9.68C.8 10.88.64 12.8 2 14.08c1.28 1.28 3.2 1.12 4.4-.08l2.16-2.16c.24-.24.24-.56 0-.8s-.56-.24-.8 0M5.92 4.96c-.24-.24-.64-.24-.96 0-.24.24-.24.64 0 .96l5.28 5.28c.24.24.64.24.96 0 .24-.24.24-.64 0-.96z"})}),{Text:N}=T.Z,B=(0,m.forwardRef)((t,r)=>{let{serverUrl:n,maxSize:a=1024,autoConnect:o=!0,autoReconnect:s=!0,reconnectInterval:u=5e3,onConnectionStatusChange:d}=t,[h,b]=(0,m.useState)(!1),[y,A]=(0,m.useState)(!1),[w,T]=(0,m.useState)(null),[B,L]=(0,m.useState)(""),D=(0,m.useRef)(null),U=(0,m.useRef)(null),F=(0,m.useRef)(null),z=(0,m.useRef)(null),G=(0,m.useRef)(null),H=(0,m.useRef)(null),q=(0,l.useServerValid)(!0),V=(0,m.useCallback)(t=>{if(t)try{for(;t.firstChild;)try{t.removeChild(t.firstChild)}catch(r){if(console.warn("Failed to remove child, skipping:",r),t.firstChild){t.innerHTML="";break}}}catch(r){console.error("Error clearing container:",r);try{t.innerHTML=""}catch(t){console.error("Failed to reset innerHTML:",t)}}},[]),W=(0,m.useCallback)(()=>{if(!F.current||!U.current||!w)return;let t=U.current,r=F.current,n=t.clientWidth,i=t.clientHeight,{width:a,height:o}=w,s=i-40,l=a/o,u=n,d=n/l;d>s&&(d=s,u=s*l),r.width=a,r.height=o,r.style.width=`${u}px`,r.style.height=`${d}px`,r.style.marginTop="20px",r.style.marginBottom="20px"},[w]);(0,m.useEffect)(()=>{let t=()=>{W()};return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[W]),(0,m.useEffect)(()=>{W()},[w,W]);let $=async()=>{if(C.P.isSupported){let t=new C.P;return{renderer:t,element:t.canvas}}let t=new I.I;return{renderer:t,element:t.canvas}},K=async t=>{if(!S.h.isSupported)throw Error("Current browser does not support WebCodecs API, please use the latest version of Chrome/Edge browser");let{renderer:r,element:n}=await $();if(F.current=n,U.current){let t=U.current.querySelector(".canvas-wrapper");t&&(V(t),t.appendChild(F.current))}return new S.h({codec:t,renderer:r})},Z=t=>{let r=!1,n=[],i=new TransformStream({transform(t,i){let a={type:t.type,data:new Uint8Array(t.data),timestamp:t.timestamp};"configuration"===a.type?(i.enqueue(a),r=!0,n.length>0&&(n.forEach(t=>i.enqueue(t)),n=[])):"data"===a.type?r?i.enqueue(a):n.push(a):i.enqueue(a)}});return new ReadableStream({start(t){let r=!1,n=n=>{if(!r)try{t.enqueue(n)}catch(t){console.error("error occurred while enqueuing video data:",t),r=!0,o()}},i=n=>{console.error("stream error:",n),r||(t.error(Error(n.message)),r=!0,o())},a=()=>{r||(t.close(),r=!0,o())},o=()=>{D.current&&(D.current.off("video-data",n),D.current.off("error",i),D.current.off("disconnect",a))};return D.current&&(D.current.on("video-data",n),D.current.on("error",i),D.current.on("disconnect",a)),()=>{r=!0,o()}}}).pipeThrough(i)},X=async()=>{if(z.current)try{let t=await z.current.snapshot();if(t){let r=URL.createObjectURL(t),n=document.createElement("a");n.href=r,n.download=`screenshot_${new Date().toISOString().replace(/:/g,"-")}.png`,n.click(),URL.revokeObjectURL(r)}}catch(t){console.error("screenshot failed:",t),alert("screenshot failed")}},Y=(0,m.useCallback)(()=>{if(z.current)try{z.current.dispose(),z.current=null}catch(t){console.error("Error disposing decoder:",t)}U.current&&V(U.current.querySelector(".canvas-wrapper")),D.current&&(D.current.disconnect(),D.current=null),G.current&&(clearTimeout(G.current),G.current=null),H.current&&(clearTimeout(H.current),H.current=null),A(!1),b(!1),T(null)},[V]);(0,m.useImperativeHandle)(r,()=>({disconnectDevice:Y}),[Y]);let J=(0,m.useCallback)(async()=>{try{if(Y(),A(!1),b(!0),T(null),await new Promise(t=>setTimeout(t,150)),!n){console.error("Cannot connect: missing server URL"),b(!1),null==d||d(!1);return}let t=()=>{H.current&&(clearTimeout(H.current),H.current=null),H.current=setTimeout(()=>{var r;if(null==(r=D.current)?void 0:r.connected)try{D.current.emit("connect-device",{maxSize:a}),t()}catch(t){console.error("Failed to request connection:",t),null==d||d(!1),c.ZP.error("connection request failed, please refresh the page")}else{null==d||d(!1);try{D.current&&setTimeout(()=>{D.current&&D.current.connect()},500)}catch(t){console.error("Failed to reconnect:",t),c.ZP.error("reconnection failed, please refresh the page")}}},5e3)};if(D.current)D.current.connected?(D.current.emit("connect-device",{maxSize:a}),t()):D.current.connect();else try{D.current=(0,g.io)(n,{withCredentials:!0,reconnection:!0,reconnectionAttempts:5,reconnectionDelay:1e3,timeout:1e4}),D.current.on("connect",()=>{var r,n;null==d||d(!0),(null==(r=D.current)?void 0:r.id)&&L(D.current.id),G.current&&(clearTimeout(G.current),G.current=null),null==(n=D.current)||n.emit("connect-device",{maxSize:a}),t()}),D.current.on("video-metadata",async t=>{try{if(H.current&&(clearTimeout(H.current),H.current=null),z.current)try{z.current.dispose(),z.current=null}catch(t){console.error("Error disposing old decoder:",t)}if(U.current){let t=U.current.querySelector(".canvas-wrapper");V(t)}let r=(null==t?void 0:t.codec)?t.codec:E.W.H264;if(z.current=await K(r),!z.current)throw Error("Failed to create decoder");z.current.sizeChanged(t=>{let{width:r,height:n}=t;T({width:r,height:n})}),Z(t).pipeTo(z.current.writable).catch(t=>{console.error("video stream processing error:",t),null==d||d(!1)}),A(!0),b(!1),null==d||d(!0)}catch(t){console.error("Failed to initialize decoder:",t),b(!1),null==d||d(!1)}}),D.current.on("error",t=>{console.error("server error:",t),c.ZP.error("server error"),b(!1),null==d||d(!1),H.current&&(clearTimeout(H.current),H.current=null)}),D.current.on("disconnect",()=>{A(!1),null==d||d(!1),H.current&&(clearTimeout(H.current),H.current=null),z.current&&(z.current.dispose(),z.current=null),U.current&&V(U.current.querySelector(".canvas-wrapper")),s&&!G.current&&(G.current=setTimeout(()=>{G.current=null,J()},u))})}catch(t){console.error("Failed to create socket connection:",t),b(!1),null==d||d(!1),s&&!G.current&&(G.current=setTimeout(()=>{G.current=null,J()},u))}}catch(t){b(!1),null==d||d(!1),console.error(`Failed to connect: ${t.message}`),c.ZP.error("connection failed"),s&&!G.current&&(G.current=setTimeout(()=>{G.current=null,J()},u))}},[n,a,s,u,d,Y]);return(0,m.useEffect)(()=>{if(o&&!y&&!h){let t=setTimeout(()=>{J()},300);return()=>clearTimeout(t)}},[o,y,h,J]),(0,m.useEffect)(()=>()=>{if(null==d||d(!1),z.current)try{z.current.dispose(),z.current=null}catch(t){console.error("Error disposing decoder during unmount:",t)}if(U.current)try{let t=U.current.querySelector(".canvas-wrapper");t&&(t.innerHTML="")}catch(t){console.error("Error clearing canvas wrapper during unmount:",t)}D.current&&(D.current.disconnect(),D.current=null),G.current&&(clearTimeout(G.current),G.current=null),H.current&&(clearTimeout(H.current),H.current=null)},[d]),(0,i.jsx)("div",{className:"scrcpy-container",children:(0,i.jsxs)(k.Z,{children:[y&&(0,i.jsxs)("div",{className:"header-bar",children:[(0,i.jsxs)("div",{className:"header-left",children:[(0,i.jsx)(N,{style:{fontWeight:600,fontSize:12},children:"Screen Projection"}),(0,i.jsx)(P.Z,{placement:"bottom",title:`Device ID: ${B||"Unknown"}`,children:(0,i.jsx)(x.Z,{})})]}),(0,i.jsx)("div",{className:"screen-info",children:(0,i.jsxs)(N,{type:"secondary",children:["size : ",null==w?void 0:w.width,"\xd7",null==w?void 0:w.height]})}),(0,i.jsxs)("div",{className:"header-right",children:[(0,i.jsx)(P.Z,{placement:"bottom",title:"Screenshot",children:(0,i.jsx)(v.ZP,{icon:(0,i.jsx)(M,{}),onClick:X})}),(0,i.jsx)(_.Z,{type:"vertical",style:{margin:"0 16px"}}),(0,i.jsx)(P.Z,{placement:"bottom",title:"Connect Device",children:(0,i.jsx)(v.ZP,{disabled:y,style:{backgroundColor:"#fff"},icon:(0,i.jsx)(O,{}),onClick:J})}),y&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(_.Z,{type:"vertical",style:{margin:"0 16px"}}),(0,i.jsx)(P.Z,{title:"Disconnect Device",children:(0,i.jsx)(v.ZP,{icon:(0,i.jsx)(j,{}),onClick:Y})})]})]})]}),(0,i.jsx)(f.Z,{gutter:[16,16],children:(0,i.jsx)(p.Z,{span:24,children:(0,i.jsx)("div",{className:"video-section",children:(0,i.jsxs)("div",{ref:U,className:"video-container",children:[(0,i.jsx)("div",{className:"canvas-wrapper"}),!y&&q&&(0,i.jsxs)("div",{className:"empty-state",children:[(0,i.jsx)("div",{className:"empty-state-icon",children:"\uD83D\uDCF1"}),(0,i.jsx)("div",{className:"empty-state-text",children:h?"Connecting to device...":"No device connected"}),!h&&(0,i.jsx)(v.ZP,{type:"primary",onClick:()=>{J()},children:"Connect now"}),h&&(0,i.jsx)("div",{className:"loading-spinner",children:(0,i.jsx)(R.Z,{size:"large"})})]}),!q&&(0,i.jsx)("span",{children:"Please launch playground server!"})]})})})})]})})}),{Content:L}=u.Z,D=`http://localhost:${o.SCRCPY_SERVER_PORT}`;function U(){let[t]=d.Z.useForm(),r=d.Z.useWatch("type",t),[n,a]=(0,m.useState)(!1),[o,b]=(0,m.useState)(null),[y,_]=(0,m.useState)(!1),[v,A]=(0,m.useState)([]),[x,E]=(0,m.useState)(!0),S=(0,m.useRef)(null),[C,I]=c.ZP.useMessage(),[T,k]=(0,m.useState)(!1),[P,R]=(0,m.useState)({result:void 0,dump:null,reportHTML:null,error:null}),[O,M]=(0,m.useState)(0),[j,N]=(0,m.useState)(null),{config:U,deepThink:F}=(0,l.useEnvConfig)(),[z,G]=(0,m.useState)(""),H=(0,m.useRef)(null),q=(0,m.useRef)(null),V=Object.keys(U||{}).length>=1,W=(0,l.useServerValid)(!0),$=(0,m.useRef)(null),K=(0,m.useRef)(null),Z=(0,m.useCallback)(()=>{q.current&&(clearInterval(q.current),q.current=null)},[]);(0,m.useEffect)(()=>{let t=(0,g.io)(D,{withCredentials:!0,reconnectionAttempts:5,reconnectionDelay:1e3,timeout:5e3});t.on("connect",()=>{t.emit("get-devices")}),t.on("disconnect",t=>{E(!0)}),t.on("devices-list",t=>{A(t.devices),t.currentDeviceId&&(b(t.currentDeviceId),1===t.devices.length&&X(t.devices[0].id,!0)),E(!1)}),t.on("global-device-switched",t=>{b(t.deviceId)}),t.on("connect_error",t=>{console.error("Socket.IO connection error:",t),C.error("Waiting for device server connection, please try again later"),E(!1)}),t.on("error",t=>{console.error("Socket.IO error:",t),C.error(`Error occurred while communicating with the server: ${t.message||"Unknown error"}`)}),$.current=t;let r=setTimeout(()=>{t.connected&&t.emit("get-devices")},2e3);return()=>{clearTimeout(r),t.disconnect()}},[C]);let X=(0,m.useCallback)(function(t){let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(t!==S.current){if(!$.current||!$.current.connected)return void C.warning("Waiting for device server connection, please try again later");_(!1),k(!1),R(null),N(null),a(!1),Z(),setTimeout(()=>{if(b(t),S.current=t,E(!0),$.current){$.current.emit("switch-device",t);let n=setTimeout(()=>{E(!1),C.error("Device switch timeout, please try again")},1e4);$.current.once("device-switched",()=>{clearTimeout(n),E(!1),setTimeout(()=>{_(!0),r||C.success(`Device selected: ${t}`)},500)}),$.current.once("error",t=>{clearTimeout(n),E(!1),C.error(`Device switch failed: ${t.message}`)})}else E(!1),C.error("Socket connection lost, please refresh the page")},500)}},[C,Z]),Y=(0,m.useCallback)(t=>{Z(),q.current=setInterval(async()=>{try{let r=await (0,l.getTaskProgress)(t);r.tip&&G(r.tip)}catch(t){console.error("Failed to poll task progress:",t)}},500)},[Z]);(0,m.useEffect)(()=>()=>{Z()},[Z]);let J=(0,m.useCallback)(t=>{k(t),t&&o&&!y&&setTimeout(()=>{_(!0)},100)},[o]);(0,m.useEffect)(()=>{if(y){let t=setTimeout(()=>{o===S.current&&_(!1)},800);return()=>clearTimeout(t)}},[y,o]),(0,m.useEffect)(()=>{(0,s.overrideAIConfig)(U),(0,l.overrideServerConfig)(U)},[U]);let Q=(0,m.useCallback)(async()=>{if(!o)return void C.warning("Please select a device first");if(!T)return void C.warning("Waiting for connection establishment, please try again later");a(!0),R(null),N(null),G("");let{type:r,prompt:n}=t.getFieldsValue(),i=Date.now().toString();H.current=i,Y(i);try{let t=await (0,l.requestPlaygroundServer)(o,r,n,{requestId:i,deepThink:F});if(Z(),R(t),a(!1),!t)throw Error("server returned empty response");if((null==t?void 0:t.dump)&&!["aiQuery","aiAssert"].includes(r)){let r=(0,l.allScriptsFromDump)(t.dump);N(r),M(t=>t+1)}else N(null);C.success("Command executed")}catch(t){Z(),a(!1),console.error("execute command error:",t),C.error(`Command execution failed: ${t instanceof Error?t.message:"Unknown error"}`)}},[o,C,T,t,Y,Z,F]),ee=()=>{R(null),N(null),a(!1)},et=(0,m.useCallback)(async()=>{Z(),a(!1),ee(),H.current&&await (0,l.cancelTask)(H.current),C.info("Operation stopped")},[C,Z]);return(0,i.jsxs)(h.ZP,{theme:(0,l.globalThemeConfig)(),children:[I,(0,i.jsx)(u.Z,{className:"app-container playground-container vertical-mode",children:(0,i.jsx)(L,{className:"app-content",children:(0,i.jsx)("div",{className:"app-grid-layout",children:(0,i.jsxs)(f.Z,{className:"app-grid-layout",children:[(0,i.jsx)(p.Z,{className:"app-panel left-panel",children:(0,i.jsxs)("div",{className:"panel-content left-panel-content",children:[(0,i.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"10px"},children:[(0,i.jsx)(l.Logo,{}),(0,i.jsx)(l.EnvConfig,{})]}),(0,i.jsx)("h2",{children:"Command input"}),(0,i.jsx)(d.Z,{form:t,className:"command-form",children:(0,i.jsxs)("div",{className:"form-content",children:[(0,i.jsx)("div",{className:"command-input-wrapper",children:(0,i.jsx)(l.PromptInput,{runButtonEnabled:!!o&&V,form:t,serviceMode:"Server",selectedType:r,dryMode:!1,stoppable:n,loading:n,onRun:Q,onStop:et})}),(0,i.jsx)("div",{className:"result-container",style:P?{}:{border:"1px solid #0000001f",borderRadius:"8px"},children:(0,i.jsx)(l.PlaygroundResultView,{result:P,loading:n,serverValid:W,serviceMode:"Server",replayScriptsInfo:j,replayCounter:O,loadingProgressText:z,verticalMode:!1,notReadyMessage:(0,i.jsxs)("span",{children:["Don't worry, just one more step to launch the playground server.",(0,i.jsx)("br",{}),(0,i.jsx)("strong",{children:"npx --yes @midscene/android-playground"})]})})})]})})]})}),(0,i.jsx)(p.Z,{className:"app-panel right-panel",children:(0,i.jsxs)("div",{className:"panel-content right-panel-content",children:[(0,i.jsx)(w,{devices:v,loadingDevices:x,selectedDeviceId:o,onDeviceSelect:X,socketRef:$,scrcpyPlayerRef:K}),(0,i.jsx)(B,{ref:K,serverUrl:D,autoConnect:y,onConnectionStatusChange:J})]})})]})})})})]})}let F=document.getElementById("root");F&&a.createRoot(F).render((0,i.jsx)(U,{}))},7752:function(t,r,n){n.r(r),n.d(r,{default:()=>i});let i={}}},__webpack_module_cache__={};function __webpack_require__(t){var r=__webpack_module_cache__[t];if(void 0!==r)return r.exports;var n=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.m=__webpack_modules__,(()=>{__webpack_require__.n=t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return __webpack_require__.d(r,{a:r}),r}})(),(()=>{var t,r=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__;__webpack_require__.t=function(n,i){if(1&i&&(n=this(n)),8&i||"object"==typeof n&&n&&(4&i&&n.__esModule||16&i&&"function"==typeof n.then))return n;var a=Object.create(null);__webpack_require__.r(a);var o={};t=t||[null,r({}),r([]),r(r)];for(var s=2&i&&n;"object"==typeof s&&!~t.indexOf(s);s=r(s))Object.getOwnPropertyNames(s).forEach(t=>{o[t]=()=>n[t]});return o.default=()=>n,__webpack_require__.d(a,o),a}})(),(()=>{__webpack_require__.d=(t,r)=>{for(var n in r)__webpack_require__.o(r,n)&&!__webpack_require__.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})}})(),(()=>{__webpack_require__.u=t=>"static/js/async/"+t+".834644b5.js"})(),(()=>{__webpack_require__.g=(()=>{if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(t){if("object"==typeof window)return window}})()})(),(()=>{__webpack_require__.o=(t,r)=>Object.prototype.hasOwnProperty.call(t,r)})(),(()=>{__webpack_require__.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}})(),(()=>{var t=[];__webpack_require__.O=(r,n,i,a)=>{if(n){a=a||0;for(var o=t.length;o>0&&t[o-1][2]>a;o--)t[o]=t[o-1];t[o]=[n,i,a];return}for(var s=1/0,o=0;o<t.length;o++){for(var[n,i,a]=t[o],l=!0,u=0;u<n.length;u++)(!1&a||s>=a)&&Object.keys(__webpack_require__.O).every(t=>__webpack_require__.O[t](n[u]))?n.splice(u--,1):(l=!1,a<s&&(s=a));if(l){t.splice(o--,1);var d=i();void 0!==d&&(r=d)}}return r}})(),(()=>{__webpack_require__.p="/"})(),(()=>{__webpack_require__.rv=()=>"1.3.12"})(),(()=>{__webpack_require__.b=document.baseURI||self.location.href;var t={980:0};__webpack_require__.O.j=r=>0===t[r];var r=(r,n)=>{var i,a,[o,s,l]=n,u=0;if(o.some(r=>0!==t[r])){for(i in s)__webpack_require__.o(s,i)&&(__webpack_require__.m[i]=s[i]);if(l)var d=l(__webpack_require__)}for(r&&r(n);u<o.length;u++)a=o[u],__webpack_require__.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return __webpack_require__.O(d)},n=self.webpackChunkandroid_playground=self.webpackChunkandroid_playground||[];n.forEach(r.bind(null,0)),n.push=r.bind(null,n.push.bind(n))})(),(()=>{__webpack_require__.ruid="bundler=rspack@1.3.12"})();var __webpack_exports__=__webpack_require__.O(void 0,["361","770"],function(){return __webpack_require__(9084)});__webpack_exports__=__webpack_require__.O(__webpack_exports__)})();
|
|
907
|
-
//# sourceMappingURL=index.
|
|
907
|
+
//# sourceMappingURL=index.7cf27480.js.map
|