From 68a5d6ea09809e57e355207f2f48b765bf350a1d Mon Sep 17 00:00:00 2001 From: ienaga Date: Thu, 3 Sep 2026 01:31:18 +0900 Subject: [PATCH] #54 update packages --- package-lock.json | 1590 +++++++++++++++++++++++++----------- package.json | 8 +- public/assets/js/next2d.js | 15 +- 3 files changed, 1123 insertions(+), 490 deletions(-) diff --git a/package-lock.json b/package-lock.json index 325dd373..8c3ca128 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,21 @@ { "name": "next2d-web-site", - "version": "2.1.3", + "version": "2.1.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "next2d-web-site", - "version": "2.1.3", + "version": "2.1.4", "license": "Next2D", "dependencies": { - "@astrojs/markdown-remark": "^7.2.2" + "@astrojs/markdown-remark": "^7.3.0" }, "devDependencies": { - "@astrojs/sitemap": "^3.7.3", + "@astrojs/sitemap": "^3.7.4", "@playwright/test": "^1.62.1", "aos": "^2.3.4", - "astro": "^7.2.2", + "astro": "^7.2.10", "bootstrap": "^5.3.8", "bootstrap-icons": "^1.13.1", "purgecss": "^8.0.0", @@ -24,30 +24,30 @@ } }, "node_modules/@astrojs/compiler-binding": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding/-/compiler-binding-0.3.2.tgz", - "integrity": "sha512-8w/9CWmYrAJJ8N0SY3O43ws2BgxoW6u3QsD8u2mE140lMYAlwh+tlNoUeSBq22wVheFuiBbR212l6ixZ2IIgCQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding/-/compiler-binding-0.4.0.tgz", + "integrity": "sha512-x2RjDUuWfwLNtc3mjAdSRInwqh/rqbLar9cm/5FOMbHvmYZB7yfKewzSclAxWjIZsypJDXv1lhaP2WG+P8TK3g==", "dev": true, "license": "MIT", "engines": { "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@astrojs/compiler-binding-darwin-arm64": "0.3.2", - "@astrojs/compiler-binding-darwin-x64": "0.3.2", - "@astrojs/compiler-binding-linux-arm64-gnu": "0.3.2", - "@astrojs/compiler-binding-linux-arm64-musl": "0.3.2", - "@astrojs/compiler-binding-linux-x64-gnu": "0.3.2", - "@astrojs/compiler-binding-linux-x64-musl": "0.3.2", - "@astrojs/compiler-binding-wasm32-wasi": "0.3.2", - "@astrojs/compiler-binding-win32-arm64-msvc": "0.3.2", - "@astrojs/compiler-binding-win32-x64-msvc": "0.3.2" + "@astrojs/compiler-binding-darwin-arm64": "0.4.0", + "@astrojs/compiler-binding-darwin-x64": "0.4.0", + "@astrojs/compiler-binding-linux-arm64-gnu": "0.4.0", + "@astrojs/compiler-binding-linux-arm64-musl": "0.4.0", + "@astrojs/compiler-binding-linux-x64-gnu": "0.4.0", + "@astrojs/compiler-binding-linux-x64-musl": "0.4.0", + "@astrojs/compiler-binding-wasm32-wasi": "0.4.0", + "@astrojs/compiler-binding-win32-arm64-msvc": "0.4.0", + "@astrojs/compiler-binding-win32-x64-msvc": "0.4.0" } }, "node_modules/@astrojs/compiler-binding-darwin-arm64": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-arm64/-/compiler-binding-darwin-arm64-0.3.2.tgz", - "integrity": "sha512-MM8tn8CSimcfytaOla4b6acN8mKWiL/rlAA1fpT3/Wl7dNGSE4y8FjTN/zJVNnb63CsLWG5zZwCt01TXtDKh9g==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-arm64/-/compiler-binding-darwin-arm64-0.4.0.tgz", + "integrity": "sha512-ZVUwHundaQyFNjE6uoa0usaC0WOCitDCLS/4mdb4rOiJXwVUuKJBMxI5WMzXLWmamsXtK/Z//ifLXvV5Yeh4Hw==", "cpu": [ "arm64" ], @@ -62,9 +62,9 @@ } }, "node_modules/@astrojs/compiler-binding-darwin-x64": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-x64/-/compiler-binding-darwin-x64-0.3.2.tgz", - "integrity": "sha512-2lXOlzf8xb7jLomRsf/aswh61/NnGusynB2OwFkK6k4pmOtpfXMYnG0PLfXrEvxXYj69NdCnmUYXtHDd+JOOag==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-x64/-/compiler-binding-darwin-x64-0.4.0.tgz", + "integrity": "sha512-FI6G8AY8u6fR1SI/QRR5yGMwtvZwP34CDmZpZ5HwJGa50UM1VISTLhqkhV4a476pmgd25X1Aur2dqw6hUnrlKA==", "cpu": [ "x64" ], @@ -79,9 +79,9 @@ } }, "node_modules/@astrojs/compiler-binding-linux-arm64-gnu": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-gnu/-/compiler-binding-linux-arm64-gnu-0.3.2.tgz", - "integrity": "sha512-BmU3kWj7qnLrd4vzm49zFEPJ5oFnn1tCT4Vt9hZbqdU5Cmb8GZl7fn6VFsnNfe7B18a2gIFtVzbLINtYl5kBjQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-gnu/-/compiler-binding-linux-arm64-gnu-0.4.0.tgz", + "integrity": "sha512-lB9gLFJK7m82EnjaU8nlRBEfcwGNeHidW3sSjODTUjMNaoewVuUz9fwwdY5M4jiSXIqWLH3yl6TX8FTDKA74Sw==", "cpu": [ "arm64" ], @@ -99,9 +99,9 @@ } }, "node_modules/@astrojs/compiler-binding-linux-arm64-musl": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-musl/-/compiler-binding-linux-arm64-musl-0.3.2.tgz", - "integrity": "sha512-f0heT9ZZEseSu5bHCeb80eL2DH07ArE6U9xi1WT/PEusNjzPmEr3GJsjG1tRLo5VYUUYX7h3ScaqGmGrMOVGmw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-musl/-/compiler-binding-linux-arm64-musl-0.4.0.tgz", + "integrity": "sha512-HPbvWqbxFxyaoQJhLxCaSjtYBx9KBo7JGVzEFZCmMl968a2PsSH0UfiODYgYPXofTOIsIH2aoCcrHXML0IA3ig==", "cpu": [ "arm64" ], @@ -119,9 +119,9 @@ } }, "node_modules/@astrojs/compiler-binding-linux-x64-gnu": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-gnu/-/compiler-binding-linux-x64-gnu-0.3.2.tgz", - "integrity": "sha512-M8fOUt0itRpqiGyoEA/ij184s8O+hqbCz3+YozRusOOM3osgGljpDThhbKAJjqh82wOo6FioQ4w8PBvU1XMD5Q==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-gnu/-/compiler-binding-linux-x64-gnu-0.4.0.tgz", + "integrity": "sha512-tQKolMxoJ/+0AmLWm1PmJ/i+z3i10ZU1bNuVjEDulCf48azEMtUNjTZgHJ5MPtpYRNc7dlETr8QujUfduzoC7Q==", "cpu": [ "x64" ], @@ -139,9 +139,9 @@ } }, "node_modules/@astrojs/compiler-binding-linux-x64-musl": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-musl/-/compiler-binding-linux-x64-musl-0.3.2.tgz", - "integrity": "sha512-/Kebk8sO6HnLeSd691JkaAPfN7CqR9/KEXmWvyNPkaKNGmj8rTZ/lf2uXtnPu92Lan84UrKdIKVPy1fSo2encQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-musl/-/compiler-binding-linux-x64-musl-0.4.0.tgz", + "integrity": "sha512-5v5YymudsxMHp3NBLCS8BUlu5CRqeLtWD9cKS/4nIhIEHCbpz9okmVV6I0HWqmBAPhWYcDa3vw/vltYPrOQCTA==", "cpu": [ "x64" ], @@ -159,9 +159,9 @@ } }, "node_modules/@astrojs/compiler-binding-wasm32-wasi": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-wasm32-wasi/-/compiler-binding-wasm32-wasi-0.3.2.tgz", - "integrity": "sha512-pUA6xbcOSB7DhfzIArB8BCAkFfAIqriiR7zl5zOStd6oU2G0kIKj+GUdGnyXyhfiv881Hffyk5tC0mR18sDjDw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-wasm32-wasi/-/compiler-binding-wasm32-wasi-0.4.0.tgz", + "integrity": "sha512-m/phuH3x3PREvv1OnkM44NoPh4MatUadix1fB1u5SvMLCyDTUZykDJbKnWf1cjnYmHdlB8HcjTjl6JrCqAIXcw==", "cpu": [ "wasm32" ], @@ -169,16 +169,16 @@ "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^1.2.0" + "@napi-rs/wasm-runtime": "^1.2.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@astrojs/compiler-binding-win32-arm64-msvc": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-arm64-msvc/-/compiler-binding-win32-arm64-msvc-0.3.2.tgz", - "integrity": "sha512-ESruf+6Qkl1trHUFxI6GSf6t52j8yN2kCNSzMWdzt7V/T09tFHrYzrVaJQohb2C9bJUH76pNvX6Zb51+xCQc9Q==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-arm64-msvc/-/compiler-binding-win32-arm64-msvc-0.4.0.tgz", + "integrity": "sha512-B9zYf3okEY83kM8gydlpH2BHP00w4ifxPqlYlWrgTwuD6wnkrJDCwBlgy1q31cERjCJRXN1lrE2VmkLvFjv/6g==", "cpu": [ "arm64" ], @@ -193,9 +193,9 @@ } }, "node_modules/@astrojs/compiler-binding-win32-x64-msvc": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-x64-msvc/-/compiler-binding-win32-x64-msvc-0.3.2.tgz", - "integrity": "sha512-wzzVrEbOwbsLWOdEbocskjMRx2aZPxJ7ZbmL+jnpBamFwmigm+2M/wzuM6JWncocgYwLic1csSpalBh96kQKXA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-x64-msvc/-/compiler-binding-win32-x64-msvc-0.4.0.tgz", + "integrity": "sha512-zB0Nrv0dGc0zZWPGDRmmETTPhDRqyZjAjk+gWMlVrJX5U89obpB3VUUE1ZiHxOCN5LQojeLK6O8L/dnoHolvNQ==", "cpu": [ "x64" ], @@ -210,22 +210,22 @@ } }, "node_modules/@astrojs/compiler-rs": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler-rs/-/compiler-rs-0.3.2.tgz", - "integrity": "sha512-xlx/T7JovIKduu4ucbTQUxQ5+Q8wxkHxhLjnZk3VlJbhbQ9RLvvuDk1p2YYFYFQ5y14dVm3FGGO4isQXa4F+Tg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler-rs/-/compiler-rs-0.4.0.tgz", + "integrity": "sha512-koVikeon1kreEy+/JzLQRy3vzHHQVOjycs4degg4vFufKApZOwMZvSSAEztYNhmcQVfNVsVZZI4cEge3cexAbQ==", "dev": true, "license": "MIT", "dependencies": { - "@astrojs/compiler-binding": "0.3.2" + "@astrojs/compiler-binding": "0.4.0" }, "engines": { "node": ">=22.12.0" } }, "node_modules/@astrojs/internal-helpers": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.2.tgz", - "integrity": "sha512-yt7fMgPYqSM4Tmr+taTW6Per+hjJ8Pk6lA1PAcDyqzOt8HzJ6Kje5WzCxA2Sd+9wsUW7uhkLeoTMK0cXPwH9rQ==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.11.0.tgz", + "integrity": "sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.4", @@ -239,15 +239,19 @@ } }, "node_modules/@astrojs/markdown-remark": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.2.2.tgz", - "integrity": "sha512-FGfmK84zSNcrsBd0dl1gXE9JvZYElp8EXQa2jpHVAxG4deGKAp43wspxFupjADJX7MSsMRHwYCnfT6EyVmgeFQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.3.0.tgz", + "integrity": "sha512-mRwn2W2PKkOj8XEAiD3b9RIF4qq6FKB6U4c98GxFLkEJH7uA6ZZv8TiqVjJSPMANLb1NtwBTgkY+KO4mTXnT/Q==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.10.2", + "@astrojs/internal-helpers": "0.11.0", "@astrojs/prism": "4.0.2", + "@mdx-js/mdx": "^3.1.1", + "acorn": "^8.16.0", + "estree-util-visit": "^2.0.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", + "hast-util-to-html": "^9.0.5", "hast-util-to-text": "^4.0.2", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", @@ -256,6 +260,7 @@ "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", + "source-map": "^0.7.6", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", @@ -264,17 +269,16 @@ } }, "node_modules/@astrojs/markdown-satteri": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-satteri/-/markdown-satteri-0.3.5.tgz", - "integrity": "sha512-CvWVEFAbay7YO+i9SaqDJubipA5ckiVB89QWoMJ5XC0m5CtFg8JwZ7Kau6X9sYY7FZURH0w2l03ISH2jOS/RDQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-satteri/-/markdown-satteri-0.4.0.tgz", + "integrity": "sha512-wykOOW9KsUVcZweOpY/CeXpdKcCKZy6fQbdcteWFuI75+sQCiqxYM7VKsGa5b+aGl3cYQscFY37rsbbyal5MRw==", "dev": true, "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.10.2", + "@astrojs/internal-helpers": "0.11.0", "@astrojs/prism": "4.0.2", "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "satteri": "^0.9.1" + "satteri": "^0.10.3" } }, "node_modules/@astrojs/prism": { @@ -290,14 +294,13 @@ } }, "node_modules/@astrojs/sitemap": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.3.tgz", - "integrity": "sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.4.tgz", + "integrity": "sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==", "dev": true, "license": "MIT", "dependencies": { "sitemap": "^9.0.0", - "stream-replace-string": "^2.0.0", "zod": "^4.3.6" } }, @@ -368,9 +371,9 @@ } }, "node_modules/@bruits/satteri-darwin-arm64": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.9.5.tgz", - "integrity": "sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.10.5.tgz", + "integrity": "sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==", "cpu": [ "arm64" ], @@ -382,9 +385,9 @@ ] }, "node_modules/@bruits/satteri-darwin-x64": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-x64/-/satteri-darwin-x64-0.9.5.tgz", - "integrity": "sha512-6T26Z5Kf3cFW2PSlk9p7zT7yVxvuBSiJvYyz9u8KjYwMTqZyIDOj2wDyNpxKV4+6yUVG7rddq2QwvG/8LJA2+Q==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-x64/-/satteri-darwin-x64-0.10.5.tgz", + "integrity": "sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==", "cpu": [ "x64" ], @@ -396,9 +399,9 @@ ] }, "node_modules/@bruits/satteri-linux-arm64-gnu": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-gnu/-/satteri-linux-arm64-gnu-0.9.5.tgz", - "integrity": "sha512-u51id17uJwNEMK9nBlICsq6U31c+XVqQueVBkwRIzZG+gMpS8TOJctt5h5Wz33Z8xnMdTd+adtACVz0yHgGuOA==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-gnu/-/satteri-linux-arm64-gnu-0.10.5.tgz", + "integrity": "sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==", "cpu": [ "arm64" ], @@ -413,9 +416,9 @@ ] }, "node_modules/@bruits/satteri-linux-arm64-musl": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-musl/-/satteri-linux-arm64-musl-0.9.5.tgz", - "integrity": "sha512-v39HxiwGC5Rqm01HksP6+5Y+xKLPlsuVFgIgpEAo+SiQ22c+mJVhS3u7Z6ePAKdhL5NJoK1xq70kLz3L13AhpQ==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-musl/-/satteri-linux-arm64-musl-0.10.5.tgz", + "integrity": "sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==", "cpu": [ "arm64" ], @@ -430,9 +433,9 @@ ] }, "node_modules/@bruits/satteri-linux-x64-gnu": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-gnu/-/satteri-linux-x64-gnu-0.9.5.tgz", - "integrity": "sha512-F3uO8uFp3pAP5ZGXttwvh57GS7s0lL953tnNdyI2gRyP4kOOkp6pyGojNJzCjkDvWI2Cvb9iNrKok3aqQPauAw==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-gnu/-/satteri-linux-x64-gnu-0.10.5.tgz", + "integrity": "sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==", "cpu": [ "x64" ], @@ -447,9 +450,9 @@ ] }, "node_modules/@bruits/satteri-linux-x64-musl": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-musl/-/satteri-linux-x64-musl-0.9.5.tgz", - "integrity": "sha512-bicEqglLlz++mWyADaZoP0JY20s4vDfLjaPYgQqC+NI4zZLTOOg1T4GB8aqtc822Pqji8SQBmSrTb7CrP8i08Q==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-musl/-/satteri-linux-x64-musl-0.10.5.tgz", + "integrity": "sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==", "cpu": [ "x64" ], @@ -464,9 +467,9 @@ ] }, "node_modules/@bruits/satteri-wasm32-wasi": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@bruits/satteri-wasm32-wasi/-/satteri-wasm32-wasi-0.9.5.tgz", - "integrity": "sha512-zauAuMwfPnKPUkd4AFixRFpXdgKwP2mKgxrIIo2gJzW0/ZneF9dbHnLkojSpaBnCCp7VUL1hIi5WWZvB1CqmAQ==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-wasm32-wasi/-/satteri-wasm32-wasi-0.10.5.tgz", + "integrity": "sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==", "cpu": [ "wasm32" ], @@ -476,7 +479,7 @@ "dependencies": { "@emnapi/core": "1.11.1", "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" + "@napi-rs/wasm-runtime": "^1.2.3" }, "engines": { "node": ">=14.0.0" @@ -517,9 +520,9 @@ } }, "node_modules/@bruits/satteri-win32-arm64-msvc": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-arm64-msvc/-/satteri-win32-arm64-msvc-0.9.5.tgz", - "integrity": "sha512-SrfE7NEsgZjBvU3c+RR6oQRu0ToXY5uVJEbieXEF0YTctIV2zAVlbaMjWLts074QCgh3a+XHWkR/lWh2VH2LUg==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-arm64-msvc/-/satteri-win32-arm64-msvc-0.10.5.tgz", + "integrity": "sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==", "cpu": [ "arm64" ], @@ -531,9 +534,9 @@ ] }, "node_modules/@bruits/satteri-win32-x64-msvc": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-x64-msvc/-/satteri-win32-x64-msvc-0.9.5.tgz", - "integrity": "sha512-5Kw9ZAtTGS8WHizyn+CJhjjfIQrw+7jcZodpmpXJjefnO15M8UexIi6JR2E5thyvsmHyhL6ZDDMUNR4bKJPd4g==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-x64-msvc/-/satteri-win32-x64-msvc-0.10.5.tgz", + "integrity": "sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==", "cpu": [ "x64" ], @@ -1077,9 +1080,9 @@ } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.3.tgz", - "integrity": "sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.4.tgz", + "integrity": "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==", "cpu": [ "arm64" ], @@ -1096,13 +1099,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.3.2" + "@img/sharp-libvips-darwin-arm64": "1.3.3" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.3.tgz", - "integrity": "sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.4.tgz", + "integrity": "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==", "cpu": [ "x64" ], @@ -1119,13 +1122,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.3.2" + "@img/sharp-libvips-darwin-x64": "1.3.3" } }, "node_modules/@img/sharp-freebsd-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.3.tgz", - "integrity": "sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.4.tgz", + "integrity": "sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -1133,7 +1136,7 @@ "freebsd" ], "dependencies": { - "@img/sharp-wasm32": "0.35.3" + "@img/sharp-wasm32": "0.35.4" }, "engines": { "node": ">=20.9.0" @@ -1143,9 +1146,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.2.tgz", - "integrity": "sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.3.tgz", + "integrity": "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==", "cpu": [ "arm64" ], @@ -1160,9 +1163,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.2.tgz", - "integrity": "sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.3.tgz", + "integrity": "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==", "cpu": [ "x64" ], @@ -1177,9 +1180,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.2.tgz", - "integrity": "sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.3.tgz", + "integrity": "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==", "cpu": [ "arm" ], @@ -1197,9 +1200,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.2.tgz", - "integrity": "sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.3.tgz", + "integrity": "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==", "cpu": [ "arm64" ], @@ -1217,9 +1220,9 @@ } }, "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.2.tgz", - "integrity": "sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.3.tgz", + "integrity": "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==", "cpu": [ "ppc64" ], @@ -1237,9 +1240,9 @@ } }, "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.2.tgz", - "integrity": "sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.3.tgz", + "integrity": "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==", "cpu": [ "riscv64" ], @@ -1257,9 +1260,9 @@ } }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.2.tgz", - "integrity": "sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.3.tgz", + "integrity": "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==", "cpu": [ "s390x" ], @@ -1277,9 +1280,9 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.2.tgz", - "integrity": "sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.3.tgz", + "integrity": "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==", "cpu": [ "x64" ], @@ -1297,9 +1300,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.2.tgz", - "integrity": "sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.3.tgz", + "integrity": "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==", "cpu": [ "arm64" ], @@ -1317,9 +1320,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.2.tgz", - "integrity": "sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.3.tgz", + "integrity": "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==", "cpu": [ "x64" ], @@ -1337,9 +1340,9 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.3.tgz", - "integrity": "sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.4.tgz", + "integrity": "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==", "cpu": [ "arm" ], @@ -1359,13 +1362,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.3.2" + "@img/sharp-libvips-linux-arm": "1.3.3" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.3.tgz", - "integrity": "sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.4.tgz", + "integrity": "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==", "cpu": [ "arm64" ], @@ -1385,13 +1388,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.3.2" + "@img/sharp-libvips-linux-arm64": "1.3.3" } }, "node_modules/@img/sharp-linux-ppc64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.3.tgz", - "integrity": "sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.4.tgz", + "integrity": "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==", "cpu": [ "ppc64" ], @@ -1411,13 +1414,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.3.2" + "@img/sharp-libvips-linux-ppc64": "1.3.3" } }, "node_modules/@img/sharp-linux-riscv64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.3.tgz", - "integrity": "sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.4.tgz", + "integrity": "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==", "cpu": [ "riscv64" ], @@ -1437,13 +1440,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.3.2" + "@img/sharp-libvips-linux-riscv64": "1.3.3" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.3.tgz", - "integrity": "sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.4.tgz", + "integrity": "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==", "cpu": [ "s390x" ], @@ -1463,13 +1466,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.3.2" + "@img/sharp-libvips-linux-s390x": "1.3.3" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.3.tgz", - "integrity": "sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.4.tgz", + "integrity": "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==", "cpu": [ "x64" ], @@ -1489,13 +1492,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.3.2" + "@img/sharp-libvips-linux-x64": "1.3.3" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.3.tgz", - "integrity": "sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.4.tgz", + "integrity": "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==", "cpu": [ "arm64" ], @@ -1515,13 +1518,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.3.2" + "@img/sharp-libvips-linuxmusl-arm64": "1.3.3" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.3.tgz", - "integrity": "sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.4.tgz", + "integrity": "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==", "cpu": [ "x64" ], @@ -1541,18 +1544,18 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.3.2" + "@img/sharp-libvips-linuxmusl-x64": "1.3.3" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.3.tgz", - "integrity": "sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.4.tgz", + "integrity": "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==", "dev": true, "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { - "@emnapi/runtime": "^1.11.1" + "@emnapi/runtime": "^1.11.3" }, "engines": { "node": ">=20.9.0" @@ -1562,9 +1565,9 @@ } }, "node_modules/@img/sharp-webcontainers-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.3.tgz", - "integrity": "sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.4.tgz", + "integrity": "sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==", "cpu": [ "wasm32" ], @@ -1572,7 +1575,7 @@ "license": "Apache-2.0", "optional": true, "dependencies": { - "@img/sharp-wasm32": "0.35.3" + "@img/sharp-wasm32": "0.35.4" }, "engines": { "node": ">=20.9.0" @@ -1582,9 +1585,9 @@ } }, "node_modules/@img/sharp-win32-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.3.tgz", - "integrity": "sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.4.tgz", + "integrity": "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==", "cpu": [ "arm64" ], @@ -1602,9 +1605,9 @@ } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.3.tgz", - "integrity": "sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.4.tgz", + "integrity": "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==", "cpu": [ "ia32" ], @@ -1622,9 +1625,9 @@ } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.3.tgz", - "integrity": "sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.4.tgz", + "integrity": "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==", "cpu": [ "x64" ], @@ -1642,12 +1645,49 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", "dev": true, "license": "MIT" }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/@napi-rs/wasm-runtime": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.3.tgz", @@ -1716,9 +1756,9 @@ "license": "MIT" }, "node_modules/@oxc-project/types": { - "version": "0.144.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.144.0.tgz", - "integrity": "sha512-nuhZIOLuI6TFQ32I/WnUx+SCPY7SdSKwgnFHydAuoS1+Z4BRcaP+RRJmGzl9lw+0OFF7UmaESf7KQRXaNLHypg==", + "version": "0.147.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.147.0.tgz", + "integrity": "sha512-IJ3s6ltHLp45S0bh7phkX+gJO7A1Wuz2EaqpAhb8WjqDwbzMiWKHhyyT42tskaWjEYXtHtVCPpnBJVT9+dcRLg==", "dev": true, "license": "MIT", "funding": { @@ -1753,10 +1793,27 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.6.tgz", + "integrity": "sha512-b+jTcARdTiFLI6jB4a5XjTm0RWd6KcRfQj/I2356fxUZemiho9zQLxo0RtCuMDAyKcLo6cEltkgbQp6d1+sjjQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.4.tgz", - "integrity": "sha512-jHC2cnyKz5xU2fhECtFl8OZ83cYNt13GZQD+0uMJ/X3o+ijmd56okHhTUwxVSHPx1IRVIJEZ1/1pPzeLCU6XKA==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.6.tgz", + "integrity": "sha512-lkWU8ZJaRk9q3CIEY1Tc7vIFALp3Xw5NfGJo2hQg5oIqNgxWi1zI+IiDEK3r70BF5Dzol1tcXsnzsRc8NLhG+Q==", "cpu": [ "arm64" ], @@ -1771,9 +1828,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.4.tgz", - "integrity": "sha512-Dc5mPD8F5F/FS8i01syd7FTF6yB2fVthH/TRkjwJkzUK6EpoxHtqvZQP5Zwq80/5z19TWYHIg1KOHboCgVx/aQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.6.tgz", + "integrity": "sha512-dgR56NYnvAszm7Ob1B2/Vn0e8bUQYZH2UjVaMMtMVOCKFSfjhfLmuA/9+O+F+ajUdG6B/bSssrKW6JJYASa8jA==", "cpu": [ "arm64" ], @@ -1788,9 +1845,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.4.tgz", - "integrity": "sha512-fpDm4oBo6SqLvWUYCmFhdde3U9KH2fRNNMeAnAPAIwxRL345xutL0EtEUcuoxsoazdJGv/MuDBQHlCDrtbvqOg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.6.tgz", + "integrity": "sha512-vpVxFvUCFioJqug7OTvqptkc4yb8UX0AwfDmJpaR/0sWz+BUmqSVAf7c8JkUgnN8YLspb4a/N6NhTyMAmdyQ7Q==", "cpu": [ "x64" ], @@ -1805,9 +1862,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.4.tgz", - "integrity": "sha512-rSJoreDE/HoIzoaib6MTp5jQtCTdMHKIvItAKT/ImS6Y6Ww76oUaeMyp4Vc/fAgd/ehji068IxetHXAnqUwN9A==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.6.tgz", + "integrity": "sha512-h1wG6Y6K3JlRswxsI64qQJqBAy4vrLuHgRbc8CZMGSWTOFRY6ghMApM1NKzB2I0n5xV1fjkE18SuVl2QpLeNpA==", "cpu": [ "x64" ], @@ -1822,9 +1879,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.4.tgz", - "integrity": "sha512-/jm8OGHgn7oGaJu3i/qZI9spUGcJ+y/lk43ttQ/iO1tOd9NissG6o97bighBCiL+BKRngmcDuR6ikfwYdJmVuQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.6.tgz", + "integrity": "sha512-tbCiqub0q2MVWJKgF5PoAlNWCtQydiOYSLIkd8sByqK/6MMYLJRcSXSYodqYtd0O+Fw7QaVmKKlS4oL94YRZ0w==", "cpu": [ "arm" ], @@ -1839,9 +1896,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.4.tgz", - "integrity": "sha512-tIP06BeD9EqvECBrPZ+sqdPlYrT+aYaAiu1wYziVx5elRK/ftm33JxVDy2bXGbr6J0CrtirCkR87/X5a2euEng==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.6.tgz", + "integrity": "sha512-oxK9+baEBPhZG5HB4URY+uU04zJWeZlH6Tb9rB5DK4DF9XR1uXNLXt5Q5ZsugTKayNCNLhkcwz/ye74hRI98dg==", "cpu": [ "arm64" ], @@ -1859,9 +1916,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.4.tgz", - "integrity": "sha512-Ql1Q0EQqVThvn9VAVlwNzsUvbSFtCMGjLpRRi4pk5i7NZZ4n5ISiLMjHYtus4VQ2PvkSw24zyaCVsiS+sXPj1w==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.6.tgz", + "integrity": "sha512-muWCk27FVBEZtv0MsK8gnfSmgczA8KQ0uRVJbTABKhkRfQc38aUrcb7fhi3BNiyseFmgcRsoMfQsSNJ+DbZdSw==", "cpu": [ "arm64" ], @@ -1879,9 +1936,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.4.tgz", - "integrity": "sha512-GjbjXD4XXfN19D0LZNbmiCBUoDiRACsYHr0yaIbbn8aFsXjHZifcYqu/W5Er5X2X990WjHXFrxarn5chzItorQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.6.tgz", + "integrity": "sha512-eWDoSfU7Co2qj3vgB3Dt4lj1mG6CoWbcJQkRMP3XJplyCMtuaq3LHvPFjS9QIPvMGWVadJC04Xiy0IdcVPtnwQ==", "cpu": [ "ppc64" ], @@ -1899,9 +1956,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.4.tgz", - "integrity": "sha512-p5WR0NOwaRmJ/B1b6IjEFLLivwEsf3PrdBIhRbhTCQisbo2SvHHpG4ELB/+FgQNnB88LTOF86upmJmbvZdQ2lw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.6.tgz", + "integrity": "sha512-2bWNjRSIayvupRKxXUY2tWG9fYdoUlTqWywHRvE8Eq3GvuQ+f2HeIkve697fIt+IQs/PV8yFsdWuhp1aJ1PdnA==", "cpu": [ "s390x" ], @@ -1919,9 +1976,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.4.tgz", - "integrity": "sha512-4/GyVjmhR+Tc6HLJvwc1sOhPqAZtySiSMesOZyX6JQ5XBxoTDEMKQzvo07NIK6nTon/SivlZqvhzvuVBNQhObQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.6.tgz", + "integrity": "sha512-KekI0gS0wLxe1UBSQSjenBVwou/JkcQPDzBPICGZjxUv9k3RteHDPBQaiOicZUFKRIH2wKEimGwVpnJsbPzu7w==", "cpu": [ "x64" ], @@ -1939,9 +1996,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.4.tgz", - "integrity": "sha512-l9eeLsCNvPpmSXUej0etw/J1eqV0Jj1D5G/xG6YTijmE6dkv6E2QezgWbTfQk63v952DPqrjOCoiqxq7Bw0YUQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.6.tgz", + "integrity": "sha512-TvtPnfVr+HtyGiDmPK4VWmlNm7QhNNAcK5Q9A7aOXsI8545yCyaoMaicXrFZ72JzeYjaUVk7yT243zT0jzjFKQ==", "cpu": [ "x64" ], @@ -1959,9 +2016,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.4.tgz", - "integrity": "sha512-e0F355MSTMm3+UOqtV3L24gFUp2N5m1f8L/7d56deik6va+AXdrt9F8LbzGpeWGWRbZEDq4m8NVnJDeBtf9DZg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.6.tgz", + "integrity": "sha512-iOo0VEay2XFhaCcH0sps5XIimkSuOnNaZrf6+ZkoSOQBJPKNU48RkmJv0/lSpipexu5P+ouFgafe5IGr/DiQfg==", "cpu": [ "arm64" ], @@ -1976,9 +2033,9 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.4.tgz", - "integrity": "sha512-AWLi0uBRYh6QlE7OKhiz+phZC0qwtij2QZmhmOdsLdFn64m7oMpooE9ICE3lhm9xMb4SpDo2WbHcxX1iFLFtqw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.6.tgz", + "integrity": "sha512-y5NTmmasMS455JlOCO4ZM9krIchv3Mvm1crL1iUPGOPgEzSkves9n0SdC5Sjz6+qWDFhd8/JpfWMH8NSWNHe+A==", "cpu": [ "arm64" ], @@ -1993,9 +2050,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.4.tgz", - "integrity": "sha512-UwSDJOg3dqCAejWdxclJjCsh3Qq4vLYMDxmyHqo1btz3stK2VqgwNd3mm5tuIwzSlGIQ/1H9Hr+Zn09mrezNqQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.6.tgz", + "integrity": "sha512-np8iZSLfXlAD4kWhiyq/u0Yt8oZDtRQ8lGhQaCXo2rl37KNjeU0GjJuwr4P3oeZ++ROfofsKNBqR5LTO8aXyWQ==", "cpu": [ "x64" ], @@ -2140,14 +2197,12 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, "license": "MIT" }, "node_modules/@types/estree-jsx": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "*" @@ -2171,6 +2226,12 @@ "@types/unist": "*" } }, + "node_modules/@types/mdx": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.14.tgz", + "integrity": "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==", + "license": "MIT" + }, "node_modules/@types/ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", @@ -2553,11 +2614,32 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz", - "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.4.0.tgz", + "integrity": "sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==", "license": "ISC" }, + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/am-i-vibing": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/am-i-vibing/-/am-i-vibing-0.4.0.tgz", @@ -2571,22 +2653,6 @@ "am-i-vibing": "dist/cli.mjs" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -2659,16 +2725,25 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, "node_modules/astro": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/astro/-/astro-7.2.2.tgz", - "integrity": "sha512-OvLWCpXpb43lVYcWzSBJ0sk44qcEYYRZCjadtalLfAwb2RaC3P/zT+blZykBw/o6suw6sQQkn00ugN36akD8Mw==", + "version": "7.2.10", + "resolved": "https://registry.npmjs.org/astro/-/astro-7.2.10.tgz", + "integrity": "sha512-uPtD+nK6kQXugyq4kiMPwj9OI3Sae6HSerA5X+fuv2CPaDwxmokFPPFlGRKIAXH0QAKu+zot2q6yrLG61wFmqg==", "dev": true, "license": "MIT", "dependencies": { - "@astrojs/compiler-rs": "^0.3.2", - "@astrojs/internal-helpers": "0.10.2", - "@astrojs/markdown-satteri": "0.3.5", + "@astrojs/compiler-rs": "^0.4.0", + "@astrojs/internal-helpers": "0.11.0", + "@astrojs/markdown-satteri": "0.4.0", "@astrojs/telemetry": "3.3.3", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", @@ -2681,11 +2756,11 @@ "common-ancestor-path": "^2.0.0", "cookie": "^2.0.1", "devalue": "^5.8.1", - "diff": "^8.0.3", + "diff": "^9.0.0", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.28.0", - "find-process": "^2.1.1", + "find-proc": "0.1.0", "flattie": "^1.1.1", "fontace": "~0.4.1", "get-tsconfig": "5.0.0-beta.4", @@ -2712,7 +2787,7 @@ "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", "ultrahtml": "^1.6.0", - "unifont": "~0.7.4", + "unifont": "~0.7.5", "unstorage": "^1.17.5", "vite": "^8.0.13", "vitefu": "^1.1.2", @@ -2733,10 +2808,10 @@ "url": "https://opencollective.com/astrodotbuild" }, "optionalDependencies": { - "sharp": "^0.34.0 || ^0.35.0" + "sharp": "^0.35.4" }, "peerDependencies": { - "@astrojs/markdown-remark": "7.2.2" + "@astrojs/markdown-remark": "^7.3.0" }, "peerDependenciesMeta": { "@astrojs/markdown-remark": { @@ -2831,23 +2906,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/character-entities": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", @@ -2878,6 +2936,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chokidar": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", @@ -2927,26 +2995,16 @@ "node": ">=6" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -2958,13 +3016,13 @@ } }, "node_modules/commander": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", - "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, "license": "MIT", "engines": { - "node": ">=20" + "node": ">=18" } }, "node_modules/common-ancestor-path": { @@ -3009,17 +3067,17 @@ } }, "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", + "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "css-what": "^7.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "nth-check": "^2.1.1" }, "funding": { "url": "https://github.com/sponsors/fb55" @@ -3040,9 +3098,9 @@ } }, "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", + "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -3165,9 +3223,9 @@ } }, "node_modules/devalue": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.9.0.tgz", - "integrity": "sha512-RWrqdArjvPbsATEhOPUo6Wndc/iWnkWKlhIrdlF3zMMYo/c3CVtoaVAyLtWxz5h8nSlkHzxnzV2uLydPXmtF+A==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.9.2.tgz", + "integrity": "sha512-po4PAY5c53tw5XMocSnf8A/5OHhbbUftpr93aEN6BBoAdntUmK7vu7wOATqvt7cXO7m1Cl4gMVn6p7n6n4mj0w==", "dev": true, "license": "MIT" }, @@ -3185,9 +3243,9 @@ } }, "node_modules/diff": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", - "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -3289,12 +3347,44 @@ } }, "node_modules/es-module-lexer": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", - "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", "dev": true, "license": "MIT" }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/esbuild": { "version": "0.28.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", @@ -3349,6 +3439,97 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.1.tgz", + "integrity": "sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/eventemitter3": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", @@ -3407,9 +3588,9 @@ } }, "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz", + "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==", "dev": true, "license": "ISC", "dependencies": { @@ -3447,19 +3628,14 @@ "node": ">=8" } }, - "node_modules/find-process": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/find-process/-/find-process-2.1.1.tgz", - "integrity": "sha512-SrQDx3QhlmHM90iqn9rdjCQcw/T+WlpOkHFsjoRgB+zTpDfltNA1VSNYeYELwhUTJy12UFxqjWhmhOrJc+o4sA==", + "node_modules/find-proc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/find-proc/-/find-proc-0.1.0.tgz", + "integrity": "sha512-OaOpEYv2PiQ7SQ5LIrl+deA1XaWcxEjnpM6VuWXTUvn+teIXxeFTLDmu18/zDQpFmHN4o3oDBX+BT0AGwEhemg==", "dev": true, "license": "MIT", - "dependencies": { - "chalk": "~4.1.2", - "commander": "^14.0.3", - "loglevel": "^1.9.2" - }, - "bin": { - "find-process": "dist/cjs/bin/find-process.js" + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, "node_modules/flattie": { @@ -3563,16 +3739,6 @@ "uncrypto": "^0.1.3" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/hast-util-from-html": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", @@ -3662,6 +3828,34 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-html": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", @@ -3685,6 +3879,33 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-parse5": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", @@ -3774,6 +3995,12 @@ "dev": true, "license": "BSD-2-Clause" }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, "node_modules/iron-webcrypto": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", @@ -3784,10 +4011,44 @@ "url": "https://github.com/sponsors/brc-dd" } }, - "node_modules/is-docker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-4.0.0.tgz", - "integrity": "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==", + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-4.0.0.tgz", + "integrity": "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==", "dev": true, "license": "MIT", "bin": { @@ -3823,6 +4084,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3846,9 +4117,9 @@ } }, "node_modules/js-yaml": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", - "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", "funding": [ { "type": "github", @@ -4161,20 +4432,6 @@ "dev": true, "license": "MIT" }, - "node_modules/loglevel": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", - "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -4196,9 +4453,9 @@ } }, "node_modules/magic-string": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.2.0.tgz", - "integrity": "sha512-ptco+HFxTLgjafSLim2LojBSwfg5feBjd+SqyiwdGkzC38UPdZy3zgrHMI2CoTf5fJL38tbHMYWVzIH8BxGqJw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.2.3.tgz", + "integrity": "sha512-Bpb0W2TbLKOZ7vJnOUnVRGq3WL2p+ISV29M6hYPL1AFCpyKZpdr5ytiXoTSSxRVhg8YW7f65+6gbG8WG6PCa/g==", "dev": true, "license": "MIT", "dependencies": { @@ -4217,6 +4474,18 @@ "source-map-js": "^1.2.1" } }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -4383,6 +4652,83 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-phrasing": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", @@ -4659,6 +5005,108 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromark-factory-destination": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", @@ -4702,6 +5150,33 @@ "micromark-util-types": "^2.0.0" } }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "node_modules/micromark-factory-space": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", @@ -4903,6 +5378,31 @@ ], "license": "MIT" }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "node_modules/micromark-util-html-tag-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", @@ -5205,9 +5705,9 @@ } }, "node_modules/p-limit": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.1.tgz", - "integrity": "sha512-0trZaiG7Y7kN/Egy9a8j47t9osC0Tch4PaIWd9yGF6bvmlk7muExRvGNYb8sXBwEKMoNKsbNN9P8EefuQekE4Q==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.2.tgz", + "integrity": "sha512-Ll0w3fU24vYpXoZmjjZIee6bJQDgG0oAyo1PdmFYI8UDwJJddaHAypxIH9avUu+t+lSsAwKVsb1jDCMIIChliw==", "dev": true, "license": "MIT", "dependencies": { @@ -5257,6 +5757,31 @@ "dev": true, "license": "MIT" }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, "node_modules/parse-latin": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", @@ -5302,9 +5827,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "license": "MIT", "engines": { "node": ">=12" @@ -5433,16 +5958,6 @@ "purgecss": "bin/purgecss.js" } }, - "node_modules/purgecss/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5485,6 +6000,73 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", @@ -5524,6 +6106,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/rehype-stringify": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", @@ -5557,6 +6154,20 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-parse": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", @@ -5703,13 +6314,13 @@ } }, "node_modules/rolldown": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.4.tgz", - "integrity": "sha512-rSr7irW0K7QRWzjdJXqZowkcRdDtjRduh43rBltnVKd0VFq839l1lJoDvGJb6gl7+4rTTCrPWu+YfujUL8Ug7w==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.6.tgz", + "integrity": "sha512-vMM4q3aixf46GiF1Kok8jDPFsEpXgFWGjUHXNkNHNm+Y2adXAG2dbX91jkti3i0ZRsOlcmbuzAz1poObSHCmUA==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.144.0", + "@oxc-project/types": "=0.147.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -5719,20 +6330,21 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.2.4", - "@rolldown/binding-darwin-arm64": "1.2.4", - "@rolldown/binding-darwin-x64": "1.2.4", - "@rolldown/binding-freebsd-x64": "1.2.4", - "@rolldown/binding-linux-arm-gnueabihf": "1.2.4", - "@rolldown/binding-linux-arm64-gnu": "1.2.4", - "@rolldown/binding-linux-arm64-musl": "1.2.4", - "@rolldown/binding-linux-ppc64-gnu": "1.2.4", - "@rolldown/binding-linux-s390x-gnu": "1.2.4", - "@rolldown/binding-linux-x64-gnu": "1.2.4", - "@rolldown/binding-linux-x64-musl": "1.2.4", - "@rolldown/binding-openharmony-arm64": "1.2.4", - "@rolldown/binding-win32-arm64-msvc": "1.2.4", - "@rolldown/binding-win32-x64-msvc": "1.2.4" + "@rolldown/binding-android-arm-eabi": "1.2.6", + "@rolldown/binding-android-arm64": "1.2.6", + "@rolldown/binding-darwin-arm64": "1.2.6", + "@rolldown/binding-darwin-x64": "1.2.6", + "@rolldown/binding-freebsd-x64": "1.2.6", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.6", + "@rolldown/binding-linux-arm64-gnu": "1.2.6", + "@rolldown/binding-linux-arm64-musl": "1.2.6", + "@rolldown/binding-linux-ppc64-gnu": "1.2.6", + "@rolldown/binding-linux-s390x-gnu": "1.2.6", + "@rolldown/binding-linux-x64-gnu": "1.2.6", + "@rolldown/binding-linux-x64-musl": "1.2.6", + "@rolldown/binding-openharmony-arm64": "1.2.6", + "@rolldown/binding-win32-arm64-msvc": "1.2.6", + "@rolldown/binding-win32-x64-msvc": "1.2.6" } }, "node_modules/run-parallel": { @@ -5760,27 +6372,27 @@ } }, "node_modules/satteri": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/satteri/-/satteri-0.9.5.tgz", - "integrity": "sha512-ZuWVl+vnM64y+/TtX8Kosv2c00W+hLQiiwnEL6H0UKVVrxFqMw4D2CJHHQaouVd89OAhtBBfjWLqhKi3TVUV4w==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/satteri/-/satteri-0.10.5.tgz", + "integrity": "sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==", "dev": true, "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.5", - "@types/hast": "^3.0.4", + "@types/hast": "^3.0.5", "@types/mdast": "^4.0.4", "@types/unist": "^3.0.3" }, "optionalDependencies": { - "@bruits/satteri-darwin-arm64": "0.9.5", - "@bruits/satteri-darwin-x64": "0.9.5", - "@bruits/satteri-linux-arm64-gnu": "0.9.5", - "@bruits/satteri-linux-arm64-musl": "0.9.5", - "@bruits/satteri-linux-x64-gnu": "0.9.5", - "@bruits/satteri-linux-x64-musl": "0.9.5", - "@bruits/satteri-wasm32-wasi": "0.9.5", - "@bruits/satteri-win32-arm64-msvc": "0.9.5", - "@bruits/satteri-win32-x64-msvc": "0.9.5" + "@bruits/satteri-darwin-arm64": "0.10.5", + "@bruits/satteri-darwin-x64": "0.10.5", + "@bruits/satteri-linux-arm64-gnu": "0.10.5", + "@bruits/satteri-linux-arm64-musl": "0.10.5", + "@bruits/satteri-linux-x64-gnu": "0.10.5", + "@bruits/satteri-linux-x64-musl": "0.10.5", + "@bruits/satteri-wasm32-wasi": "0.10.5", + "@bruits/satteri-win32-arm64-msvc": "0.10.5", + "@bruits/satteri-win32-x64-msvc": "0.10.5" } }, "node_modules/sax": { @@ -5807,9 +6419,9 @@ } }, "node_modules/sharp": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.3.tgz", - "integrity": "sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==", + "version": "0.35.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.4.tgz", + "integrity": "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -5825,31 +6437,31 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.35.3", - "@img/sharp-darwin-x64": "0.35.3", - "@img/sharp-freebsd-wasm32": "0.35.3", - "@img/sharp-libvips-darwin-arm64": "1.3.2", - "@img/sharp-libvips-darwin-x64": "1.3.2", - "@img/sharp-libvips-linux-arm": "1.3.2", - "@img/sharp-libvips-linux-arm64": "1.3.2", - "@img/sharp-libvips-linux-ppc64": "1.3.2", - "@img/sharp-libvips-linux-riscv64": "1.3.2", - "@img/sharp-libvips-linux-s390x": "1.3.2", - "@img/sharp-libvips-linux-x64": "1.3.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.3.2", - "@img/sharp-libvips-linuxmusl-x64": "1.3.2", - "@img/sharp-linux-arm": "0.35.3", - "@img/sharp-linux-arm64": "0.35.3", - "@img/sharp-linux-ppc64": "0.35.3", - "@img/sharp-linux-riscv64": "0.35.3", - "@img/sharp-linux-s390x": "0.35.3", - "@img/sharp-linux-x64": "0.35.3", - "@img/sharp-linuxmusl-arm64": "0.35.3", - "@img/sharp-linuxmusl-x64": "0.35.3", - "@img/sharp-webcontainers-wasm32": "0.35.3", - "@img/sharp-win32-arm64": "0.35.3", - "@img/sharp-win32-ia32": "0.35.3", - "@img/sharp-win32-x64": "0.35.3" + "@img/sharp-darwin-arm64": "0.35.4", + "@img/sharp-darwin-x64": "0.35.4", + "@img/sharp-freebsd-wasm32": "0.35.4", + "@img/sharp-libvips-darwin-arm64": "1.3.3", + "@img/sharp-libvips-darwin-x64": "1.3.3", + "@img/sharp-libvips-linux-arm": "1.3.3", + "@img/sharp-libvips-linux-arm64": "1.3.3", + "@img/sharp-libvips-linux-ppc64": "1.3.3", + "@img/sharp-libvips-linux-riscv64": "1.3.3", + "@img/sharp-libvips-linux-s390x": "1.3.3", + "@img/sharp-libvips-linux-x64": "1.3.3", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.3", + "@img/sharp-libvips-linuxmusl-x64": "1.3.3", + "@img/sharp-linux-arm": "0.35.4", + "@img/sharp-linux-arm64": "0.35.4", + "@img/sharp-linux-ppc64": "0.35.4", + "@img/sharp-linux-riscv64": "0.35.4", + "@img/sharp-linux-s390x": "0.35.4", + "@img/sharp-linux-x64": "0.35.4", + "@img/sharp-linuxmusl-arm64": "0.35.4", + "@img/sharp-linuxmusl-x64": "0.35.4", + "@img/sharp-webcontainers-wasm32": "0.35.4", + "@img/sharp-win32-arm64": "0.35.4", + "@img/sharp-win32-ia32": "0.35.4", + "@img/sharp-win32-x64": "0.35.4" }, "peerDependenciesMeta": { "@types/node": { @@ -5915,6 +6527,15 @@ "url": "https://github.com/sponsors/cyyynthia" } }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -5935,13 +6556,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/stream-replace-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", - "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==", - "dev": true, - "license": "MIT" - }, "node_modules/stringify-entities": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", @@ -5956,33 +6570,38 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" } }, "node_modules/svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.2.tgz", - "integrity": "sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.1.0.tgz", + "integrity": "sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==", "dev": true, "license": "MIT", "dependencies": { "commander": "^11.1.0", - "css-select": "^5.1.0", + "css-select": "^6.0.0", "css-tree": "^3.0.1", - "css-what": "^6.1.0", + "css-what": "^7.0.0", "csso": "^5.0.5", "picocolors": "^1.1.1", - "sax": "^1.5.0" + "sax": "1.6.1" }, "bin": { "svgo": "bin/svgo.js" @@ -6147,9 +6766,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.0.tgz", - "integrity": "sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==", + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.1.tgz", + "integrity": "sha512-YQ3WlbqjYMmNpdvDH64jAgLjxuAR9+649calDWhbshYaeQGO2bR4nI94ORJmwI3J9YhoKQnpyGOK+0zlWS5N5Q==", "dev": true, "license": "MIT", "engines": { @@ -6248,6 +6867,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-remove-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", @@ -6464,16 +7096,16 @@ } }, "node_modules/vite": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.1.tgz", - "integrity": "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.2.tgz", + "integrity": "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==", "dev": true, "license": "MIT", "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", - "postcss": "^8.5.25", - "rolldown": "~1.2.1", + "postcss": "^8.5.26", + "rolldown": "~1.2.4", "tinyglobby": "^0.2.17" }, "bin": { @@ -6490,7 +7122,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.4.0", + "@vitejs/devtools": "^0.4.0 || ^0.5.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", @@ -6617,9 +7249,9 @@ } }, "node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.5.4.tgz", + "integrity": "sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==", "dev": true, "license": "MIT", "funding": { diff --git a/package.json b/package.json index 56280126..03e50f59 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "next2d-web-site", "type": "module", "description": "Next2D project provides a WebGL/WebGPU 2D rendering engine, animation tools for creating animations, and a framework to support team development.", - "version": "2.1.3", + "version": "2.1.4", "author": "Toshiyuki Ienaga", "license": "Next2D", "scripts": { @@ -15,10 +15,10 @@ "test:visual:update": "playwright test --update-snapshots" }, "devDependencies": { - "@astrojs/sitemap": "^3.7.3", + "@astrojs/sitemap": "^3.7.4", "@playwright/test": "^1.62.1", "aos": "^2.3.4", - "astro": "^7.2.2", + "astro": "^7.2.10", "bootstrap": "^5.3.8", "bootstrap-icons": "^1.13.1", "purgecss": "^8.0.0", @@ -29,6 +29,6 @@ "lodash": "^4.17.21" }, "dependencies": { - "@astrojs/markdown-remark": "^7.2.2" + "@astrojs/markdown-remark": "^7.3.0" } } diff --git a/public/assets/js/next2d.js b/public/assets/js/next2d.js index 745a3b4d..7276ed4f 100644 --- a/public/assets/js/next2d.js +++ b/public/assets/js/next2d.js @@ -1,10 +1,11 @@ -var e=`__next2d__`,t=Math.min(2,window.devicePixelRatio),n=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},r=document.createElement(`canvas`);r.width=r.height=1;var i=r.getContext(`2d`),a=null,o=e=>{a=e},s=null,c=e=>{s=e},l=()=>s,u=()=>a,d=new Float32Array([1,0,0,1,0,0]),f=new Float32Array([1,0,0,1,0,0]),p={x:0,y:0,pointer:``,hit:null},m=null,h=e=>{m=e},g=()=>m,_=(e,t=1)=>{let n=``;n+=`-webkit-tap-highlight-color: rgba(0,0,0,0);`,n+=`backface-visibility: hidden;`,n+=`touch-action: none;`,n+=`user-select: none;`,n+=`-webkit-user-select: none;`,n+=`-webkit-touch-callout: none;`,t>1&&(n+=`transform: scale(${1/t});`),e.width=1,e.height=1,e.setAttribute(`style`,n)},v="\"use strict\";(function(){let e=2048,t=t=>{e=Math.max(2048,t/2)},n=4,r=e=>{n=e},i,a=e=>{i=e;let t=e.getParameter(e.SCISSOR_BOX);t&&t.length>=4&&(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=t[3])},o=new Int32Array(4),s=(e,t,n,r)=>{o[0]=e,o[1]=t,o[2]=n,o[3]=r,i.scissor(e,t,n,r)},c,l=e=>{c=e},u=!1,d=()=>{u||(u=!0,i.enable(i.SCISSOR_TEST))},f=()=>{u&&(u=!1,i.disable(i.SCISSOR_TEST))},p=!1,m=()=>{p||(p=!0,i.enable(i.STENCIL_TEST))},h=()=>{p&&(p=!1,i.disable(i.STENCIL_TEST))},g=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},_=[],v=(...e)=>{let t=_.pop()||[];return e.length&&t.push(...e),t},y=(e=null)=>{e&&(e.length&&=0,_.push(e))},b=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),x=[],S=(e=0,t=0,n=0,r=0)=>{let i=x.pop()||new Float32Array(4);return i[0]=e,i[1]=t,i[2]=n,i[3]=r,i},C=e=>{x.push(e)},w=[],T=(e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0)=>{let l=w.pop()||new Float32Array(9);return l[0]=e,l[1]=t,l[2]=n,l[3]=r,l[4]=i,l[5]=a,l[6]=o,l[7]=s,l[8]=c,l},E=e=>{w.push(e)},D=[],O=(e=0,t=0,n=0,r=0,i=0,a=0)=>{let o=D.pop()||new Float32Array(6);return o[0]=e,o[1]=t,o[2]=n,o[3]=r,o[4]=i,o[5]=a,o},k=e=>{D.push(e)},A=e=>{let t=1/(e[0]*e[4]-e[3]*e[1]),n=e[3]*e[7]-e[4]*e[6],r=e[1]*e[6]-e[0]*e[7];return T(e[4]*t,0-e[1]*t,0,0-e[3]*t,e[0]*t,0,n*t,r*t,1)},j=0,M=0,N=(e,t)=>{j=e,M=t},P=e=>{let t=-819.2*e[0]-819.2*e[2]+e[4],n=819.2*e[0]-819.2*e[2]+e[4],r=-819.2*e[0]+819.2*e[2]+e[4],i=-819.2*e[1]-819.2*e[3]+e[5],a=819.2*e[1]-819.2*e[3]+e[5],o=-819.2*e[1]+819.2*e[3]+e[5],s=r-t,c=o-i,l=Math.sqrt(s*s+c*c);l?(s/=l,c/=l):(s=0,c=0);let u=(n-t)*s+(a-i)*c;return S(t+u*s,i+u*c,n,a)},F=1,I=e=>{F=e},ee=(e,t)=>{let n=e[0],r=e[1],i=e[2],a=e[3],o=e[4],s=e[5],c=t[0],l=t[1],u=t[2],d=t[3],f=t[4],p=t[5];return O(n*c+i*l,r*c+a*l,n*u+i*d,r*u+a*d,n*f+i*p+o,r*f+a*p+s)},L=()=>typeof crypto?.randomUUID==`function`?crypto.randomUUID():`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)}),R=v(),z=v(),te=(e=!1)=>{let t=e?6:9;R.length>=t&&z.push(R.slice(0)),R.length=0;let n=[];for(let e=0;e=t&&n.push(r)}return z.length=0,n},ne=()=>{for(R.length=0;z.length;)y(z.pop())},re=(e,t,n)=>{R.push(e,t,n)},ie=(e,t)=>{let n=R.length,r=+R[n-3],i=+R[n-2];return e===r&&t===i},ae=()=>{if(R.length<3){R.length=0;return}z.push(R.slice(0)),R.length=0},oe=(e,t)=>{if(!R.length){re(e,t,!1);return}ie(e,t)||(ae(),re(e,t,!1))},se=(e,t)=>{R.length||oe(e,t),!ie(e,t)&&re(e,t,!1)},ce=(e,t,n,r)=>{R.length||oe(0,0),!ie(n,r)&&(re(e,t,!0),re(n,r,!1))},le=()=>{if(R.length<7)return;let e=+R[0],t=+R[1];ie(e,t)||re(e,t,!1)},B=new Float32Array(64),ue=0,de=.5,fe=(e,t,n,r,i,a,o,s)=>{let c=3*n-2*e-o,l=3*r-2*t-s,u=3*i-2*o-e,d=3*a-2*s-t;return Math.max(c*c+l*l,u*u+d*d)},pe=(e,t,n,r,i,a,o,s)=>{let c=fe(e,t,n,r,i,a,o,s);if(c{B.length{ue=e},ge=[],_e=0,ve=()=>{_e=0},V=()=>(_e>=ge.length&&ge.push(new Float32Array(8)),ge[_e++]),ye=(e,t,n,r,i,a,o,s,c,l,u)=>{let d=1-c,f=d*e+c*n,p=d*t+c*r,m=d*n+c*i,h=d*r+c*a,g=d*i+c*o,_=d*a+c*s,v=d*f+c*m,y=d*p+c*h,b=d*m+c*g,x=d*h+c*_,S=d*v+c*b,C=d*y+c*x;l[0]=e,l[1]=t,l[2]=f,l[3]=p,l[4]=v,l[5]=y,l[6]=S,l[7]=C,u[0]=S,u[1]=C,u[2]=b,u[3]=x,u[4]=g,u[5]=_,u[6]=o,u[7]=s},be=(e,t,n,r,i,a,o,s,c,l)=>{let u=(3*n+3*i-e-o)*.25,d=(3*r+3*a-t-s)*.25;c[l]=u,c[l+1]=d,c[l+2]=o,c[l+3]=s},xe=new Float32Array(8),Se=new Float32Array(8),Ce=(e,t,n,r,i,a,o,s)=>{let c=pe(e,t,n,r,i,a,o,s),l=c*4;me(l);let u=0;if(c<=2)ye(e,t,n,r,i,a,o,s,.5,xe,Se),be(xe[0],xe[1],xe[2],xe[3],xe[4],xe[5],xe[6],xe[7],B,u),u+=4,be(Se[0],Se[1],Se[2],Se[3],Se[4],Se[5],Se[6],Se[7],B,u),u+=4;else if(c<=4){ve();let c=V(),l=V();ye(e,t,n,r,i,a,o,s,.5,c,l);let d=V(),f=V(),p=V(),m=V();ye(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],.5,d,f),ye(l[0],l[1],l[2],l[3],l[4],l[5],l[6],l[7],.5,p,m),be(d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7],B,u),u+=4,be(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],B,u),u+=4,be(p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],B,u),u+=4,be(m[0],m[1],m[2],m[3],m[4],m[5],m[6],m[7],B,u),u+=4}else{ve();let c=V(),l=V();ye(e,t,n,r,i,a,o,s,.5,c,l);let d=V(),f=V(),p=V(),m=V();ye(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],.5,d,f),ye(l[0],l[1],l[2],l[3],l[4],l[5],l[6],l[7],.5,p,m);let h=V(),g=V(),_=V(),v=V(),y=V(),b=V(),x=V(),S=V();ye(d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7],.5,h,g),ye(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],.5,_,v),ye(p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],.5,y,b),ye(m[0],m[1],m[2],m[3],m[4],m[5],m[6],m[7],.5,x,S),be(h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],B,u),u+=4,be(g[0],g[1],g[2],g[3],g[4],g[5],g[6],g[7],B,u),u+=4,be(_[0],_[1],_[2],_[3],_[4],_[5],_[6],_[7],B,u),u+=4,be(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],B,u),u+=4,be(y[0],y[1],y[2],y[3],y[4],y[5],y[6],y[7],B,u),u+=4,be(b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7],B,u),u+=4,be(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],B,u),u+=4,be(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],B,u),u+=4}return he(u/4),{buffer:B,count:ue}},we=(e,t,n,r,i,a)=>{if(R.length||oe(0,0),ie(i,a))return;let o=R.length,s=+R[o-3],c=+R[o-2],l=Ce(s,c,e,t,n,r,i,a),u=l.buffer,d=l.count;for(let e=0;e{let r=n,i=n*.5522847498307936;we(e+r,t+i,e+i,t+r,e,t+r),we(e-i,t+r,e-r,t+i,e-r,t),we(e-r,t-i,e-i,t-r,e,t-r),we(e+i,t-r,e+r,t-i,e+r,t)},Ee=(e,t,n,r,i)=>{e.$clearColorR=g(t,0,1,0),e.$clearColorG=g(n,0,1,0),e.$clearColorB=g(r,0,1,0),e.$clearColorA=g(i,0,1,0)},De=(e,t,n,r)=>{i.clearColor(e,t,n,r),i.clear(i.COLOR_BUFFER_BIT|i.STENCIL_BUFFER_BIT),i.clearColor(0,0,0,0)},Oe=[],ke=e=>{let t=-1,n=Oe.length;for(;Math.abs(n-t)>1;){let r=Math.floor((n+t)/2);e<=Oe[r].area?n=r:t=r}return n},Ae=e=>{if(Oe.indexOf(e)>-1)return;let t=ke(e.area);e.dirty=!0,Oe.splice(t,0,e)},je=-1,Me=e=>{je=e},Ne=[null,null,null],Pe=new Map,Fe=0,Ie=(e,t)=>e*65536+t,Le=(e,t)=>{let n=Pe.get(Ie(e,t));if(!n||!n.length)return null;--Fe;let r=n.pop();return r.pooled=!1,r},Re=e=>{if(e.pooled)return!0;if(Fe>=32)return!1;let t=Ie(e.width,e.height),n=Pe.get(t);return n||(n=[],Pe.set(t,n)),n.length>=4?!1:(e.pooled=!0,e.dirty=!0,n.push(e),++Fe,!0)},H=e=>{for(let t=0;t{if(!(ze.indexOf(e)>-1)){if(ze.length>10){i.deleteRenderbuffer(e.resource);return}e.dirty=!0,ze.push(e)}},Ve=[],He,Ue=e=>{He=e.createFramebuffer()},We=null,Ge=e=>{We=e.createFramebuffer()},Ke=null,qe=e=>{Ke=e.createFramebuffer(),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,Ke)},Je=null,Ye=e=>{Je=e},Xe=!1,Ze=e=>{Xe=e},Qe=null,$e=null,et=null,tt=null,nt=e=>{$e=e.createFramebuffer(),Qe=e.createFramebuffer(),et=e.createFramebuffer(),tt=e.createBuffer(),e.bindBuffer(e.PIXEL_PACK_BUFFER,tt)},rt=(e,t=!0)=>{e.msaa?(Ae(e.color),e.color=null,e.stencil=null):(t&&H(e.texture),e.texture=null,Be(e.stencil),e.stencil=null),Ve.push(e)},it=0,at=()=>({id:it++,width:0,height:0,clipLevel:0,msaa:!1,mask:!1,color:null,texture:null,stencil:null}),ot=()=>{let e={id:0,resource:i.createRenderbuffer(),width:0,height:0,area:0,dirty:!1};return{resource:i.createRenderbuffer(),stencil:e,width:0,height:0,area:0,dirty:!1}},st=e=>{if(!Oe.length)return ot();let t=ke(e);if(t{e=Math.max(256,b(e)),t=Math.max(256,b(t));let r=st(e*t);return(r.width({id:lt++,resource:i.createRenderbuffer(),width:0,height:0,area:0,dirty:!1}),dt=(e,t)=>{if(!ze.length)return ut();let n=-1,r=1/0;for(let i=0;i=e&&a.height>=t&&a.area{let n=dt(e,t);return(n.width!==e||n.height!==t)&&(n.width=e,n.height=t,n.area=e*t,n.dirty=!1,i.bindRenderbuffer(i.RENDERBUFFER,n.resource),i.renderbufferStorage(i.RENDERBUFFER,i.STENCIL_INDEX8,e,t)),n},pt=0,mt=(e,t)=>({id:pt++,resource:i.createTexture(),width:e,height:t,area:e*t,smooth:!1,dirty:!1,pooled:!1}),ht=(e,t=!1)=>{je!==i.TEXTURE0&&(Me(i.TEXTURE0),i.activeTexture(i.TEXTURE0)),Ne[0]=e,i.bindTexture(i.TEXTURE_2D,e.resource),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,t?i.LINEAR:i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,t?i.LINEAR:i.NEAREST),i.texStorage2D(i.TEXTURE_2D,1,i.RGBA8,e.width,e.height)},gt=(e,t=!1)=>{if(je!==i.TEXTURE0&&(Me(i.TEXTURE0),i.activeTexture(i.TEXTURE0)),Ne[0]=e,i.bindTexture(i.TEXTURE_2D,e.resource),e.smooth!==t){e.smooth=t;let n=t?i.LINEAR:i.NEAREST;i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,n),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,n)}},_t=(e,t,n=!1,r=!0)=>{if(r){let r=Le(e,t);if(r)return gt(r,n),r}let i=mt(e,t);return ht(i,n),i},vt=(e,t,n=!1)=>{let r=Ve.length?Ve.pop():at();return r.width=e,r.height=t,n?(r.msaa=!0,r.texture=null,r.color=ct(e,t),r.stencil=r.color.stencil):(r.msaa=!1,r.texture=_t(e,t),r.color=null,r.stencil=ft(e,t)),r.mask=!1,r.clipLevel=0,r},yt=()=>{Ye(null),Xe&&(Ze(!1),i.bindFramebuffer(i.FRAMEBUFFER,null))},bt=(t=1)=>{let n=mt(e,e);return i.activeTexture(i.TEXTURE3),i.bindTexture(i.TEXTURE_2D_ARRAY,n.resource),i.texParameteri(i.TEXTURE_2D_ARRAY,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D_ARRAY,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D_ARRAY,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D_ARRAY,i.TEXTURE_MAG_FILTER,i.NEAREST),i.texStorage3D(i.TEXTURE_2D_ARRAY,1,i.RGBA8,n.width,n.height,t),i.activeTexture(je===-1?i.TEXTURE0:je),n},xt=Number.MAX_VALUE,St=-Number.MAX_VALUE,Ct=0,wt=e=>{Ct=e},Tt=[],Et=()=>Tt,Dt=()=>{let t=Tt[Ct];return t||(t=vt(e,e,!0),Tt[Ct]=t),t},Ot=[],kt=null,At=0,jt=[],Mt=e=>{jt[e]=!0},Nt=e=>!!jt[e],Pt=e=>{jt[e]=!1},Ft=()=>(kt||(kt=bt(1),At=1),kt),It=t=>{if(!kt){At=Math.max(1,t),kt=bt(At);return}if(!(t<=At)){i.deleteTexture(kt.resource),kt=bt(t),At=t;for(let t=0;t{let t=Lt[e];return t||(t=new Float32Array([xt,xt,St,St]),Lt[e]=t),t},zt=()=>{for(let e=0;e{Bt=e},Ht=()=>{Ot.length=0,wt(0);let e=Et();for(let t=0;t{if(e.clearArraysInstanced(),e.$stackAttachmentObject.length)for(let t=0;t{d(),s(e,t,n,r),i.clear(i.COLOR_BUFFER_BIT|i.STENCIL_BUFFER_BIT),f()},Gt=(e,t,n=null,r=!1)=>{je!==t&&(Me(t),i.activeTexture(t));let a=Ne[e];if(a!==n&&(a===null||n===null||a.id!==n.id)&&(Ne[e]=n,i.bindTexture(i.TEXTURE_2D,n?n.resource:null),n&&n.smooth!==r)){n.smooth=r;let e=r?i.LINEAR:i.NEAREST;i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,e)}},Kt=(e,t=!1)=>{Gt(2,i.TEXTURE2,null),Gt(1,i.TEXTURE1,null),Gt(0,i.TEXTURE0,e,t)},qt=e=>{Ye(e),Xe||(Ze(!0),i.bindFramebuffer(i.FRAMEBUFFER,He)),e.msaa?(i.bindRenderbuffer(i.RENDERBUFFER,e.color.resource),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,e.color.resource)):(Kt(e.texture),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,e.texture.resource,0),Gt(0,i.TEXTURE0,null)),i.bindRenderbuffer(i.RENDERBUFFER,e.stencil.resource),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.STENCIL_ATTACHMENT,i.RENDERBUFFER,e.stencil.resource)},Jt=()=>{let e=c.currentAttachmentObject;if(!e)return;let t=e.clipLevel,n=0;for(let e=0;e{Yt=e},Zt=()=>Yt,Qt=new Map,$t=new Map,en=e=>{!e&&Zt()?(Xt(!1),h(),f()):e&&!Zt()&&(Xt(!0),m(),Jt())},tn=(e,t)=>{let n=Je;if(n&&t.id===n.id)return;qt(t),(!n||n.width!==t.width||n.height!==t.height)&&(N(t.width,t.height),i.viewport(0,0,t.width,t.height));let r=t.msaa?t.color:t.stencil,a=t.texture;(r.dirty||a&&a.dirty)&&(r.dirty=!1,a&&(a.dirty=!1),e.clearRect(0,0,t.width,t.height)),en(t.mask)},nn=e=>{e.$stack.push(T(...e.$matrix))},rn=e=>{if(!e.$stack.length)return;let t=e.$stack.pop();e.$matrix[0]=t[0],e.$matrix[1]=t[1],e.$matrix[3]=t[3],e.$matrix[4]=t[4],e.$matrix[6]=t[6],e.$matrix[7]=t[7],E(t)},an=(e,t,n,r,i,a,o)=>{e[0]=t,e[1]=n,e[3]=r,e[4]=i,e[6]=a,e[7]=o},on=(e,t,n,r,i,a,o)=>{let s=e.$matrix[0],c=e.$matrix[1],l=e.$matrix[3],u=e.$matrix[4],d=e.$matrix[6],f=e.$matrix[7];e.$matrix[0]=t*s+n*l,e.$matrix[1]=t*c+n*u,e.$matrix[3]=r*s+i*l,e.$matrix[4]=r*c+i*u,e.$matrix[6]=a*s+o*l+d,e.$matrix[7]=a*c+o*u+f},sn=e=>{e.globalAlpha=1,e.globalCompositeOperation=`normal`,e.imageSmoothingEnabled=!1},cn=e=>{e.$fillStyle.fill(1),e.$strokeStyle.fill(1)},ln=(e,t,n,r)=>{d(),s(e,t,n+1,r+1),i.clear(i.COLOR_BUFFER_BIT|i.STENCIL_BUFFER_BIT),s(e,t,n,r)},un=()=>{f()},dn=(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{let p=e.length-5;for(let m=3;m(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),pn=new Float32Array(128),mn=0,hn=()=>pn,gn=()=>mn,_n=e=>{let t=e.length+mn;if(t>pn.length){let n=new Float32Array(fn(t));mn>0&&n.set(pn.subarray(0,mn)),n.set(e,mn),pn=n}else pn.set(e,mn);mn+=e.length},vn=[],yn=[],bn=()=>{yn.length=0,mn=0,vn.length=0},xn=new Float32Array(32),Sn=e=>(xn.length{let n=t===`fill`?c.$fillStyle:c.$strokeStyle,r=n[0],i=n[1],a=n[2],o=n[3],s=c.$matrix,l=j,u=M,d=s[0]/l,f=s[3]/l,p=s[6]/l,m=s[1]/u,h=s[4]/u,g=s[7]/u,_=0;for(let t=0;t{let t=te();if(!t.length)return;yn.push(e);let n=Cn(t);_n(n.buffer),vn.push(n.indexCount)},Tn=[],En=(e,t,n,r,i,a)=>{let o=te();if(!o.length)return;yn.push(e===0?`linear`:`radial`);let s=Cn(o);_n(s.buffer),vn.push(s.indexCount),Tn.push(t,n,r,i),e===1&&Tn.push(a)},Dn=(e,t,n)=>{let r=Math.sqrt(e*e+t*t);return{x:-(t/r)*n,y:e/r*n}},On=(e,t,n)=>{let r={x:t.x-e.x,y:t.y-e.y},i=Dn(r.x,r.y,n),a={x:e.x+i.x,y:e.y+i.y},o={x:t.x+i.x,y:t.y+i.y},s={x:e.x-i.x,y:e.y-i.y},c={x:t.x-i.x,y:t.y-i.y};return[a.x,a.y,!1,o.x,o.y,!1,c.x,c.y,!1,s.x,s.y,!1,a.x,a.y,!1]},kn=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}),An=(e,t,n,r=.5)=>{let i=kn(e,t,r),a=kn(t,n,r),o=kn(i,a,r);return[[e,i,o],[o,a,n]]},jn=(e,t,n,r=4)=>{let i=[[e,t,n]];for(let e=0;e({x:(1-e)**2*t.x+2*(1-e)*e*n.x+e**2*r.x,y:(1-e)**2*t.y+2*(1-e)*e*n.y+e**2*r.y}),Nn=(e,t,n,r)=>({x:2*(1-e)*(n.x-t.x)+2*e*(r.x-n.x),y:2*(1-e)*(n.y-t.y)+2*e*(r.y-n.y)}),Pn=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:{x:e.x/t,y:e.y/t}},Fn=(e,t,n,r)=>{let i=[0,.5,1],a=[];for(let o=0;o{let i=jn(e,t,n,5),a=[],o=[];for(let e=0;e{let i=[];for(let a=0;a1e-4||i.push(o,s)}return i},Rn=new OffscreenCanvas(1,1).getContext(`2d`),zn=(e,t)=>{Rn.beginPath(),Rn.moveTo(t[0],t[1]);for(let e=3;e{let a=i?0:r.length-1,o=i?r.length-1:r.length-2,s=r[a].length>15,c=r[o].length>15;if(s&&c)return;let l=Ln(e,t,n,r[a]),u=Ln(e,t,n,r[o]),d=zn(l,r[o]);if(!d)return;let f=zn(u,r[a]);if(!f)return;let p=Math.atan2(d[1]-t,d[0]-e),m=Math.atan2(f[1]-t,f[0]-e)-p;m>Math.PI?m-=2*Math.PI:m<-Math.PI&&(m+=2*Math.PI);let h=Math.abs(m);if(h<.1||h>Math.PI-.1)return;let g=m/8,_=[e,t,!1];for(let r=0;r<=8;r++){let i=p+r*g,a=e+n*Math.cos(i),o=t+n*Math.sin(i);_.push(a,o,!1)}r.splice(-1,0,_)},Vn=(e,t,n,r,i=!1)=>{let a=i?0:r.length-1,o=i?r.length-1:r.length-2,s=r[a].length>15,c=r[o].length>15;if(s&&c)return;let l=Ln(e,t,n,r[a]),u=Ln(e,t,n,r[o]);if(l[0]===u[0]&&l[1]===u[1]||l[0]===u[2]&&l[1]===u[3])return;let d=zn(l,r[o]);if(!d)return;let f=zn(u,r[a]);f&&r.splice(-1,0,[e,t,!1,d[0],d[1],!1,f[0],f[1],!1,e,t,!1])},Hn=(e,t,n)=>{for(let r=0;r<2;++r){let i=0,a=0,o=0,s=0;r===0?(i=e[0],a=e[1],o=e[3],s=e[4]):(i=e[e.length-3],a=e[e.length-2],o=e[e.length-6],s=e[e.length-5]);let c=o-i,l=s-a,u=Math.atan2(l,c),d=u+Math.PI/2,f=u-Math.PI/2,p=(f-d)/16,m=[];for(let e=0;e<=16;e++){let n=f+p*e,r=i+t*Math.cos(n),o=a+t*Math.sin(n);m.push(r,o,!1)}r===0?n.unshift(m):n.push(m)}},Un=(e,t,n)=>{for(let r=0;r<2;++r){let i=0,a=0,o=0,s=0;r===0?(i=e[0],a=e[1],o=e[3],s=e[4]):(i=e[e.length-3],a=e[e.length-2],o=e[e.length-6],s=e[e.length-5]);let c=-(o-i),l=-(s-a),u=Math.sqrt(c*c+l*l);if(u===0)continue;let d=c/u,f=l/u,p=i+t*d,m=a+t*f,h=-f,g=d,_=[p+t*d+t*h,m+t*f+t*g,!1,p+t*d-t*h,m+t*f-t*g,!1,p-t*d-t*h,m-t*f-t*g,!1,p+t*d+t*h,m+t*f+t*g,!1,p-t*d-t*h,m-t*f-t*g,!1,p-t*d+t*h,m-t*f+t*g,!1];r===0?n.unshift(_):n.push(_)}},Wn=(e,t,n,r,i,a=!1)=>{let o=a?0:i.length-1,s=a?i.length-1:i.length-2,c=i[o].length>15,l=i[s].length>15;if(c&&l)return;let u=Ln(e.x,e.y,r,i[o]),d=Ln(e.x,e.y,r,i[s]);if(u[0]===d[0]&&u[1]===d[1]||u[0]===d[2]&&u[1]===d[3])return;let f=zn(u,i[s]);if(!f)return;let p=zn(d,i[o]);if(!p)return;let m=t.x-e.x,h=t.y-e.y,g=Math.hypot(m,h),_={x:m/g,y:h/g},v=n.x-e.x,y=n.y-e.y,b=Math.hypot(v,y),x={x:v/b,y:y/b},S=_.x,C=_.y,w=x.x,T=x.y,E=S*T-C*w;if(E===0){i.splice(-1,0,[e.x,e.y,!1,f[0],f[1],!1,p[0],p[1],!1]);return}let D=((p[0]-f[0])*T-(p[1]-f[1])*w)/E,O=f[0]+D*S,k=f[1]+D*C;i.splice(-1,0,[e.x,e.y,!1,f[0],f[1],!1,O,k,!1,e.x,e.y,!1,p[0],p[1],!1,O,k,!1])},Gn={x:0,y:0},Kn={x:0,y:0},qn={x:0,y:0},Jn={x:0,y:0},Yn=(e,t)=>{let n=Gn;n.x=e[0],n.y=e[1];let r=Kn;r.x=0,r.y=0;let i=qn;i.x=0,i.y=0;let a=Jn;a.x=0,a.y=0;let o=[];for(let s=3;s1)switch(c.joints){case 0:Vn(n.x,n.y,t,o);break;case 1:a.x=e[s-6],a.y=e[s-5],Wn(n,i,a,t,o);break;case 2:Bn(n.x,n.y,t,o)}n.x=i.x,n.y=i.y}let s=e[0],l=e[1],u=e[e.length-3],d=e[e.length-2],f=1e-4;if(Math.abs(s-u)1)switch(c.joints){case 0:Vn(s,l,t,o,!0);break;case 1:n.x=s,n.y=l,i.x=e[3],i.y=e[4],a.x=e[e.length-6],a.y=e[e.length-5],Wn(n,i,a,t,o,!0);break;case 2:Bn(s,l,t,o,!0)}else switch(c.caps){case 1:Hn(e,t,o);break;case 2:Un(e,t,o)}return o},Xn=e=>{let t=c.thickness/2,n=v();for(let r=0;r{let o=te(!0);if(!o.length)return;yn.push(e===0?`linear`:`radial`);let s=Xn(o);_n(s.buffer),vn.push(s.indexCount),Tn.push(t,n,r,i),e===1&&Tn.push(a)},Qn=new Map,$n=()=>{Qn.clear()},er=e=>{Qn.set(vn.length,e)},tr=()=>({id:L(),resource:i.createVertexArray(),vertexBuffer:i.createBuffer(),vertexLength:0}),nr,rr=e=>{nr&&nr.id===e.id||(nr=e,i.bindVertexArray(e.resource))},ir=()=>{let e=tr();rr(e),i.bindBuffer(i.ARRAY_BUFFER,e.vertexBuffer);let t=new Float32Array([0,0,1,0,1,1,0,0,1,1,0,1]);return i.bufferData(i.ARRAY_BUFFER,t,i.STATIC_DRAW),i.enableVertexAttribArray(0),i.vertexAttribPointer(0,2,i.FLOAT,!1,0,0),e},ar=[],or=new Float32Array([0,0,0,1,1,0,1,1]),sr,cr=e=>{sr=e.createBuffer()},lr,ur=e=>{lr=e},dr,fr=()=>(dr||=ir(),dr),pr=()=>{if(ar.length)return ar.pop();let e=tr();return rr(e),i.bindBuffer(i.ARRAY_BUFFER,e.vertexBuffer),i.enableVertexAttribArray(0),i.enableVertexAttribArray(1),i.enableVertexAttribArray(2),i.enableVertexAttribArray(3),i.enableVertexAttribArray(4),i.enableVertexAttribArray(5),i.vertexAttribPointer(0,2,i.FLOAT,!1,68,0),i.vertexAttribPointer(1,2,i.FLOAT,!1,68,8),i.vertexAttribPointer(2,4,i.FLOAT,!1,68,16),i.vertexAttribPointer(3,3,i.FLOAT,!1,68,32),i.vertexAttribPointer(4,3,i.FLOAT,!1,68,44),i.vertexAttribPointer(5,3,i.FLOAT,!1,68,56),e},mr=()=>{let e=pr();rr(e);let t=hn(),n=gn();return i.bindBuffer(i.ARRAY_BUFFER,e.vertexBuffer),e.vertexLength{ar.indexOf(e)>-1||ar.push(e)},gr=0,_r=(e,t)=>{let n=i.createProgram(),r=i.createShader(i.VERTEX_SHADER);i.shaderSource(r,e),i.compileShader(r);let a=i.createShader(i.FRAGMENT_SHADER);return i.shaderSource(a,t),i.compileShader(a),i.attachShader(n,r),i.attachShader(n,a),i.linkProgram(n),i.detachShader(n,r),i.detachShader(n,a),i.deleteShader(r),i.deleteShader(a),{id:gr++,resource:n}},vr=(e,t,n=!1)=>{let r=i.getProgramParameter(e,i.ACTIVE_UNIFORMS);for(let a=0;a{yr!==e.id&&(yr=e.id,i.useProgram(e.resource))},xr=e=>{for(let t of e.values())t.method!==void 0&&t.assign!==void 0&&(t.assign<0?t.method(t.array):t.assign>0&&(t.assign--,t.method(t.array)))};var Sr=class{_$programObject;_$uniformMap;highp;mediump;textures;constructor(e,t,n=!1){this._$programObject=_r(e,t),this._$uniformMap=new Map,vr(this._$programObject.resource,this._$uniformMap,n);let r=new Float32Array;this.highp=this._$uniformMap.get(`u_highp`)?.array??r,this.mediump=this._$uniformMap.get(`u_mediump`)?.array??r,this.textures=this._$uniformMap.get(`u_textures`)?.array??r}useProgram(){br(this._$programObject)}bindUniform(){xr(this._$uniformMap)}};let Cr=new Map,wr=()=>`\nvec2 applyMatrix(in vec2 vertex) {\n mat3 matrix = mat3(a_matrix0, a_matrix1, a_matrix2);\n return (matrix * vec3(vertex, 1.0)).xy;\n}`,Tr=e=>`\nvec2 applyMatrix(in vec2 vertex) {\n mat3 parent_matrix = mat3(\n u_highp[${e}].xyz,\n u_highp[${e+1}].xyz,\n u_highp[${e+2}].xyz\n );\n mat3 ancestor_matrix = mat3(\n u_highp[${e+3}].xyz,\n u_highp[${e+4}].xyz,\n u_highp[${e+5}].xyz\n );\n\n vec2 parent_offset = vec2(u_highp[${e+2}].w, u_highp[${e+3}].w);\n vec2 parent_size = vec2(u_highp[${e+4}].w, u_highp[${e+5}].w);\n vec4 grid_min = u_highp[${e+6}];\n vec4 grid_max = u_highp[${e+7}];\n\n vec2 position = (parent_matrix * vec3(vertex, 1.0)).xy;\n position = (position - parent_offset) / parent_size;\n\n vec4 ga = grid_min;\n vec4 gb = grid_max - grid_min;\n vec4 gc = vec4(1.0) - grid_max;\n\n vec2 pa = position;\n vec2 pb = position - grid_min.st;\n vec2 pc = position - grid_max.st;\n\n position = (ga.pq / ga.st) * min(pa, ga.st)\n + (gb.pq / gb.st) * clamp(pb, vec2(0.0), gb.st)\n + (gc.pq / gc.st) * max(vec2(0.0), pc);\n\n position = position * parent_size + parent_offset;\n position = (ancestor_matrix * vec3(position, 1.0)).xy;\n\n position = position + vec2(u_highp[${e+8}].x, u_highp[${e+8}].y);\n return position / vec2(u_highp[0].w, u_highp[1].w);\n}`,Er=()=>`layout (location = 1) in vec2 a_bezier;`,Dr=()=>`layout (location = 3) in vec3 a_matrix0;\nlayout (location = 4) in vec3 a_matrix1;\nlayout (location = 5) in vec3 a_matrix2;`,Or=()=>`out vec2 v_uv;`,kr=()=>`out vec2 v_bezier;`,Ar=()=>`\n mat3 uv_matrix = mat3(\n u_highp[0].xyz,\n u_highp[1].xyz,\n u_highp[2].xyz\n );\n mat3 inverse_matrix = mat3(\n u_highp[3].xyz,\n u_highp[4].xyz,\n vec3(u_highp[2].w, u_highp[3].w, u_highp[4].w)\n );\n v_uv = (inverse_matrix * uv_matrix * vec3(a_vertex, 1.0)).xy;`,jr=()=>`v_bezier = a_bezier;`,Mr=()=>`layout (location = 2) in vec4 a_color;`,Nr=()=>`out vec4 v_color;`,Pr=()=>`v_color = a_color;`,Fr=(e,t,n,r)=>{let i=n?Er():``,a=n?kr():t?Or():``,o=n?jr():t?Ar():``,s=r?Tr(t?5:0):wr(),c=n?``:Mr(),l=n?``:Nr(),u=n?``:Pr();return`#version 300 es\n\nlayout (location = 0) in vec2 a_vertex;\n${i}\n${c}\n${r?``:Dr()}\n\n${e>1?`uniform vec4 u_highp[${e}];`:``}\n${a}\n${l}\n${s}\n\nvoid main() {\n ${u}\n ${o}\n vec2 pos = applyMatrix(a_vertex);\n pos = pos * 2.0 - 1.0;\n gl_Position = vec4(pos.x, -pos.y, 0.0, 1.0);\n}`},Ir=()=>`#version 300 es\nlayout (location = 0) in vec2 a_vertex;\nvoid main() {\n vec2 pos = a_vertex * 2.0 - 1.0;\n gl_Position = vec4(pos.x, -pos.y, 0.0, 1.0);\n}`,Lr=()=>`#version 300 es\nprecision mediump float;\n\nin vec4 v_color;\nout vec4 o_color;\n\nvoid main() {\n o_color = vec4(v_color.rgb * v_color.a, v_color.a);\n}`,Rr=()=>`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\nuniform vec4 u_mediump[1];\n\nin vec2 v_uv;\nout vec4 o_color;\n\nvoid main() {\n vec2 uv = vec2(v_uv.x, u_mediump[0].y - v_uv.y) / u_mediump[0].xy;\n\n vec4 src = texture(u_texture, uv);\n o_color = src;\n}`,zr=()=>`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\nuniform vec4 u_mediump[1];\n\nin vec2 v_uv;\nout vec4 o_color;\n\nvoid main() {\n vec2 uv = fract(vec2(v_uv.x, -v_uv.y) / u_mediump[0].xy);\n\n vec4 src = texture(u_texture, uv);\n o_color = src;\n}`,Br=()=>`#version 300 es\nprecision mediump float;\n\nin vec2 v_bezier;\nout vec4 o_color;\n\nvoid main() {\n float f_val = v_bezier.x * v_bezier.x - v_bezier.y;\n\n float dx = dFdx(f_val);\n float dy = dFdy(f_val);\n\n float dist = f_val / length(vec2(dx, dy));\n float alpha = smoothstep(0.5, -0.5, dist);\n\n if (alpha > 0.001) {\n o_color = vec4(min(alpha, 1.0));\n } else {\n discard;\n }\n}`,Vr=()=>`#version 300 es\nprecision mediump float;\nout vec4 o_color;\nvoid main() {\n o_color = vec4(1.0);\n}`,Hr=e=>{let t=`m${e?`y`:`n`}`;if(Cr.has(t))return Cr.get(t);let n=new Sr(Fr(e?9:0,!1,!0,e),Br());return Cr.set(t,n),n},Ur=(e,t)=>{let n=e.highp;n[0]=t[0],n[1]=t[1],n[2]=0,n[4]=t[2],n[5]=t[3],n[6]=0,n[8]=t[4],n[9]=t[5],n[10]=1,n[12]=t[6],n[13]=t[7],n[14]=0,n[16]=t[8],n[17]=t[9],n[18]=0,n[20]=t[10],n[21]=t[11],n[22]=1,n[3]=j,n[7]=M,n[11]=t[12],n[15]=t[13],n[19]=t[14],n[23]=t[15],n[24]=t[16],n[25]=t[17],n[26]=t[18],n[27]=t[19],n[28]=t[20],n[29]=t[21],n[30]=t[22],n[31]=t[23],n[32]=t[24],n[33]=t[25]},Wr=`normal`,Gr=e=>{Wr=e},Kr=600,qr=e=>{Kr=e},Jr=()=>{Kr!==613&&(qr(613),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA))},Yr=(e,t,n,r)=>{e.useProgram(),e.bindUniform(),Jr(),rr(t),i.drawArrays(i.TRIANGLES,n,r)},Xr=()=>{let e=`rmnn`;if(Cr.has(e))return Cr.get(e);let t=new Sr(Ir(),Vr());return Cr.set(e,t),t},Zr=()=>{let e=c.currentAttachmentObject;if(!e)return;let t=1<{let e=c.currentAttachmentObject;if(!e)return;let t=Qt.get(e.clipLevel),n=t[0],r=t[1],a=t[2],o=t[3],l=Math.ceil(Math.abs(a-n)),u=Math.ceil(Math.abs(o-r));d(),s(n,e.height-r-u,l,u);let p=mr(),m=$t.get(e.clipLevel),h=0,g=null,_=vn.length;for(let t=0;t<_;t++){i.stencilMask(1<7&&(Zr(),m=e.clipLevel+1)}$t.set(e.clipLevel,m),hr(p),bn(),$n(),f()},$r=(e,t,n)=>{if(e.used)return e.left?.insert(t,n)||e.right?.insert(t,n)||null;if(t>e.w||n>e.h)return null;if(t===e.w&&n===e.h)return e.used=!0,e;let r=t+1,i=n+1,a=e.w-r,o=e.h-i;return a>o?(e.left=e.create(e.index,e.x,e.y,t,e.h),e.right=e.create(e.index,e.x+r,e.y,a,e.h)):(e.left=e.create(e.index,e.x,e.y,e.w,n),e.right=e.create(e.index,e.x,e.y+i,e.w,o)),e.used=!0,e.left.insert(t,n)},ei=(e,t,n,r,i)=>e.left?.dispose(t,n,r,i)?(!e.left.used&&!e.right?.used&&(e.left&&e.left.release(),e.right&&e.right.release(),e.left=e.right=null,e.used=!1),!0):e.right?.dispose(t,n,r,i)?(!e.right.used&&!e.left?.used&&(e.left&&e.left.release(),e.right&&e.right.release(),e.left=e.right=null,e.used=!1),!0):t===e.x&&n===e.y&&r===e.w&&i===e.h&&(e.used=!1,!0),ti=[];var ni=class e{index;x;y;w;h;left;right;used;constructor(e,t,n,r,i){this.index=e,this.x=t,this.y=n,this.w=r,this.h=i,this.left=null,this.right=null,this.used=!1}insert(e,t){return $r(this,e,t)}dispose(e,t,n,r){return ei(this,e,t,n,r)}create(t,n,r,i,a){let o=ti.length?ti.pop():new e(t,0,0,0,0);return o.index=t,o.x=n,o.y=r,o.w=i,o.h=a,o.left=null,o.right=null,o.used=!1,o}release(){this.left&&=(this.left.release(),null),this.right&&=(this.right.release(),null),this.used=!1,ti.push(this)}},ri=class{_$root;constructor(e,t,n){this._$root=new ni(e,0,0,t,n)}insert(e,t){return this._$root.insert(e,t)}dispose(e,t,n,r){return this._$root.dispose(e,t,n,r)}};let ii=(t,n)=>{let r=Ct;Ot[r]||(Ot[r]=new ri(r,e,e));let i=Ot[r].insert(t,n);if(i)return i;for(let e=0;e<10;e++){if(r===e)continue;wt(e);let i=Ot[e];if(!i)return ii(t,n);let a=i.insert(t,n);if(a)return a}return ii(t,n)},ai=e=>{let t=Ot[e.index];t&&t.dispose(e.x,e.y,e.w,e.h)},oi=()=>`\nfloat isInside(in vec2 uv) {\n return step(4.0, dot(step(vec4(0.0, uv.x, 0.0, uv.y), vec4(uv.x, 1.0, uv.y, 1.0)), vec4(1.0)));\n}`,si=e=>`\n vec4 mul = u_mediump[${e}];\n vec4 add = u_mediump[${e+1}];\n\n if (mul.x != 1.0 || mul.y != 1.0 || mul.z != 1.0 || mul.w != 1.0\n || add.x != 0.0 || add.y != 0.0 || add.z != 0.0\n ) {\n src.rgb /= max(0.0001, src.a);\n src = clamp(src * mul + add, 0.0, 1.0);\n src.rgb *= src.a;\n }\n`,ci=e=>`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\n${e?`uniform vec4 u_mediump[2];`:``}\n\nin vec2 v_coord;\nout vec4 o_color;\n\nvoid main() {\n vec4 src = texture(u_texture, v_coord);\n ${e?si(0):``}\n o_color = src;\n}`,li=()=>`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\n\nin vec2 v_coord;\nout vec4 o_color;\n\nvoid main() {\n vec4 src = texture(u_texture, v_coord);\n // ストレートアルファのソースをプリマルチプライドアルファへ変換して出力する。\n // アトラスはプリマルチプライ空間で構築され blendFunc(ONE, ONE_MINUS_SRC_ALPHA) で\n // 合成されるため、変換しないと透明部の白抜けや縁の白線が発生する。\n o_color = vec4(src.rgb * src.a, src.a);\n}`,ui=()=>`#version 300 es\nprecision mediump float;\n\nuniform mediump sampler2DArray u_texture;\n\nin vec4 v_mul;\nin vec4 v_add;\nin vec2 v_coord;\nout vec4 o_color;\n\nvoid main() {\n vec4 src = texture(u_texture, vec3(v_coord, v_add.w));\n\n if (v_mul.x != 1.0 || v_mul.y != 1.0 || v_mul.z != 1.0 || v_mul.w != 1.0\n || v_add.x != 0.0 || v_add.y != 0.0 || v_add.z != 0.0\n ) {\n src.rgb /= max(0.0001, src.a);\n src = clamp(src * v_mul + vec4(v_add.xyz, 0.0), 0.0, 1.0);\n src.rgb *= src.a;\n }\n\n o_color = src;\n}`,di=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),fi=new class{buffer;offset;constructor(){this.buffer=new Float32Array(256),this.offset=0}push(...e){this.buffer.length`#version 300 es\n\nlayout (location = 0) in vec2 a_vertex;\n\nout vec2 v_coord;\n\nvoid main() {\n v_coord = a_vertex;\n\n vec2 position = a_vertex * 2.0 - 1.0;\n gl_Position = vec4(position, 0.0, 1.0);\n}`,hi=()=>`#version 300 es\n\nlayout (location = 0) in vec2 a_vertex;\nuniform vec4 u_highp[3];\n\nout vec2 v_coord;\n\nvoid main() {\n v_coord = a_vertex;\n\n mat3 matrix = mat3(\n u_highp[0].x, u_highp[0].y, 0.0,\n u_highp[0].z, u_highp[0].w, 0.0,\n u_highp[1].x, u_highp[1].y, 1.0\n );\n\n vec2 size = u_highp[1].zw;\n vec2 viewport = vec2(u_highp[2].x, u_highp[2].y);\n\n vec2 position = vec2(a_vertex.x, 1.0 - a_vertex.y);\n position = position * size;\n position = (matrix * vec3(position, 1.0)).xy;\n position /= viewport;\n\n position = position * 2.0 - 1.0;\n gl_Position = vec4(position.x, -position.y, 0.0, 1.0);\n}`,gi=()=>`#version 300 es\n\nlayout (location = 0) in vec2 a_vertex;\nuniform vec4 u_highp[2];\n\nout vec2 v_coord;\n\nvoid main() {\n v_coord = a_vertex;\n\n vec2 offset = u_highp[0].xy;\n vec2 size = u_highp[0].zw;\n vec2 viewport = vec2(u_highp[1].x, u_highp[1].y);\n\n vec2 position = vec2(a_vertex.x, 1.0 - a_vertex.y);\n position = position * size + offset;\n position /= viewport;\n\n position = position * 2.0 - 1.0;\n gl_Position = vec4(position.x, -position.y, 0.0, 1.0);\n}`,_i=()=>`#version 300 es\n\nlayout (location = 0) in vec2 a_vertex;\nlayout (location = 1) in vec4 a_rect;\nlayout (location = 2) in vec4 a_size;\nlayout (location = 3) in vec2 a_offset;\nlayout (location = 4) in vec4 a_matrix;\nlayout (location = 5) in vec4 a_mul;\nlayout (location = 6) in vec4 a_add;\n\nout vec2 v_coord;\nout vec4 v_mul;\nout vec4 v_add;\n\nvoid main() {\n v_coord = a_vertex * a_rect.zw + a_rect.xy;\n v_mul = a_mul;\n v_add = a_add;\n\n vec2 position = vec2(a_vertex.x, 1.0 - a_vertex.y);\n position = position * a_size.xy;\n\n mat3 matrix = mat3(\n a_matrix.x, a_matrix.y, 0.0,\n a_matrix.z, a_matrix.w, 0.0,\n a_offset.x, a_offset.y, 1.0\n );\n\n position = (matrix * vec3(position, 1.0)).xy;\n position /= a_size.zw;\n\n position = position * 2.0 - 1.0;\n gl_Position = vec4(position.x, -position.y, 0.0, 1.0);\n}`,vi=new Map,yi=()=>{if(vi.has(`i`))return vi.get(`i`);let e=new pi(_i(),ui());return vi.set(`i`,e),e},bi=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n return src + dst - dst * src.a;\n}`,xi=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 c = vec4(dst.rgb - src.rgb, src.a * dst.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,Si=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n vec4 c = src * dst;\n\n return a + b + c;\n}`,Ci=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 c = vec4(mix(src.rgb, dst.rgb, step(src.rgb, dst.rgb)), src.a * dst.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,wi=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 c = vec4(mix(src.rgb, dst.rgb, step(dst.rgb, src.rgb)), src.a * dst.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,Ti=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 mul = src * dst;\n vec3 c1 = 2.0 * mul.rgb;\n vec3 c2 = 2.0 * (src.rgb + dst.rgb - mul.rgb) - 1.0;\n vec4 c = vec4(mix(c1, c2, step(vec3(0.5), dst.rgb)), mul.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,Ei=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 mul = src * dst;\n vec3 c1 = 2.0 * mul.rgb;\n vec3 c2 = 2.0 * (src.rgb + dst.rgb - mul.rgb) - 1.0;\n vec4 c = vec4(mix(c1, c2, step(vec3(0.5), src.rgb)), mul.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,Di=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 c = vec4(abs(src.rgb - dst.rgb), src.a * dst.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,Oi=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 b = dst - dst * src.a;\n vec4 c = vec4(src.a - dst.rgb * src.a, src.a);\n\n return b + c;\n}`,ki=(e,t)=>{let n;switch(e){case`subtract`:n=xi();break;case`multiply`:n=Si();break;case`lighten`:n=Ci();break;case`darken`:n=wi();break;case`overlay`:n=Ti();break;case`hardlight`:n=Ei();break;case`difference`:n=Di();break;case`invert`:n=Oi();break;default:n=bi()}let r=t?`uniform vec4 u_mediump[2];`:``,i=t?si(0):``;return`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_textures[2];\n${r}\n\nin vec2 v_coord;\nout vec4 o_color;\n\n${n}\n\nvoid main() {\n vec4 dst = texture(u_textures[0], v_coord);\n vec4 src = texture(u_textures[1], v_coord);\n ${i}\n o_color = blend(src, dst);\n}`},Ai=(e,t)=>{let n=`i${e}${t?`y`:`n`}`;if(vi.has(n))return vi.get(n);let r=new Sr(mi(),ki(e,t));return vi.set(n,r),r},ji=Number.MAX_VALUE,Mi=()=>{if(!c.newDrawState)return;let t=c.currentAttachmentObject,n=Et();It(n.length);let r=Ft();d();for(let t=0;t{let t=Ct;wt(e.index),Mi(),i.bindFramebuffer(i.FRAMEBUFFER,Qe);let n=Ft();i.framebufferTextureLayer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,n.resource,0,e.index),i.bindFramebuffer(i.FRAMEBUFFER,$e);let r=_t(e.w,e.h);return i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,r.resource,0),i.bindFramebuffer(i.FRAMEBUFFER,null),i.bindFramebuffer(i.READ_FRAMEBUFFER,Qe),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,$e),i.blitFramebuffer(e.x,e.y,e.x+e.w,e.y+e.h,0,0,e.w,e.h,i.COLOR_BUFFER_BIT,i.NEAREST),wt(t),i.bindFramebuffer(i.READ_FRAMEBUFFER,He),i.bindFramebuffer(i.FRAMEBUFFER,He),r},Pi=(e,t,n=!1)=>{Gt(2,i.TEXTURE2,null,n),Gt(1,i.TEXTURE1,t,n),Gt(0,i.TEXTURE0,e,n)},Fi=()=>{if(vi.has(`p`))return vi.get(`p`);let e=new Sr(gi(),ci(!1));return vi.set(`p`,e),e},Ii=(e,t,n)=>{let r=e.highp,i=c.$matrix;r[0]=i[6],r[1]=i[7],r[2]=t,r[3]=n,r[4]=j,r[5]=M},Li=e=>{e.useProgram(),e.bindUniform(),rr(fr()),i.drawArrays(i.TRIANGLES,0,6)},Ri=null,zi=(e,t,n,r)=>{let a=c.currentAttachmentObject,o=c.$mainAttachmentObject;return c.bind(o),i.bindFramebuffer(i.FRAMEBUFFER,$e),(!Ri||Ri.width!==o.width||Ri.height!==o.height)&&(Ri=_t(o.width,o.height)),Kt(Ri),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,Ri.resource,0),i.bindFramebuffer(i.FRAMEBUFFER,null),i.bindFramebuffer(i.READ_FRAMEBUFFER,He),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,$e),d(),s(e,o.height-t-r,n+1,r+1),i.blitFramebuffer(0,0,o.width,o.height,0,0,o.width,o.height,i.COLOR_BUFFER_BIT,i.NEAREST),f(),i.bindFramebuffer(i.FRAMEBUFFER,He),a&&c.bind(a),Ri},Bi=(e,t,n,r)=>{let i=c.currentAttachmentObject,a=zi(e,t,n,r),o=vt(n,r,!1);c.bind(o),c.save(),c.setTransform(1,0,0,1,-e,-t);let s=Fi();Ii(s,a.width,a.height),Jr(),Kt(a),Li(s);let l=o.texture;return c.restore(),rt(o,!1),i&&c.bind(i),l},Vi=()=>{Kr!==610&&(qr(610),i.blendFunc(i.ONE,i.ZERO))},Hi=e=>{Kt(e),Vi();let t=Fi();Ii(t,e.width,e.height),Li(t),Jr()},Ui=(e,t,n,r,i,a,o,s,c)=>{let l=e.textures;l[0]=0,l[1]=1;let u=e.mediump;u[0]=t,u[1]=n,u[2]=r,u[3]=i,u[4]=a,u[5]=o,u[6]=s,u[7]=c},Wi=(e=!1)=>{let t=`m${e?`y`:`n`}`;if(vi.has(t))return vi.get(t);let n=new Sr(hi(),ci(e));return vi.set(t,n),n},Gi=(e,t,n)=>{let r=e.highp,i=c.$matrix;r[0]=i[0],r[1]=i[1],r[2]=i[3],r[3]=i[4],r[4]=i[6],r[5]=i[7],r[6]=t,r[7]=n,r[8]=j,r[9]=M},Ki=(t,n,r,i,a,o)=>{let s=o[0],l=o[1],u=o[2],d=c.globalAlpha,f=o[4]/255,p=o[5]/255,m=o[6]/255,h=c.$matrix;switch(c.globalCompositeOperation){case`normal`:case`layer`:case`add`:case`screen`:case`alpha`:case`erase`:case`copy`:{if(Wr!==c.globalCompositeOperation){let e=c.globalCompositeOperation;c.globalCompositeOperation=Wr,c.drawArraysInstanced(),c.globalCompositeOperation=e,Gr(c.globalCompositeOperation)}Bt!==t.index&&(Vt(t.index),wt(t.index));let n=yi();fi.pushDisplayObjectBuffer((t.x+.5)/e,(t.y+.5)/e,(t.w-1)/e,(t.h-1)/e,t.w,t.h,j,M,h[6],h[7],h[0],h[1],h[3],h[4],s,l,u,d,f,p,m,t.index),n.count++}break;default:{let e=c.currentAttachmentObject;c.drawArraysInstanced();let o=Math.ceil(Math.abs(i-n)),g=Math.ceil(Math.abs(a-r)),_=0,v=0,y=Ni(t);if(h[0]!==1||h[1]!==0||h[3]!==0||h[4]!==1){let n=vt(o,g,!1),r=O(h[0],h[1],h[3],h[4],o/2,g/2),i=O(1,0,0,1,-t.w/2,-t.h/2),a=O(r[0]*i[0]+r[2]*i[1],r[1]*i[0]+r[3]*i[1],r[0]*i[2]+r[2]*i[3],r[1]*i[2]+r[3]*i[3],r[0]*i[4]+r[2]*i[5]+r[4],r[1]*i[4]+r[3]*i[5]+r[5]);c.save(),c.bind(n),c.setTransform(a[0],a[1],a[2],a[3],a[4],a[5]),_=a[4],v=a[5];let s=Wi();Gi(s,y.width,y.height),Kt(y,!0),Li(s),H(y),y=n.texture,rt(n,!1),e&&c.bind(e),c.restore()}(_||v)&&(h[6]-=_,h[7]-=v);let b=Bi(h[6],h[7],o,g),x=vt(o,g,!1);c.bind(x),Pi(b,y);let S=Ai(c.globalCompositeOperation,!0);Ui(S,s,l,u,d,f,p,m,0),Li(S),e&&c.bind(e),Hi(x.texture),(_||v)&&(h[6]+=_,h[7]+=v),H(y),H(b),rt(x),Gr(c.globalCompositeOperation),Vt(t.index),wt(t.index)}}},qi=()=>{yi().clear()},Ji=0,Yi=()=>{rr(lr),i.bindBuffer(i.ARRAY_BUFFER,sr),fi.buffer.length>Ji&&(Ji=fi.buffer.length),i.bufferData(i.ARRAY_BUFFER,Ji*4,i.STREAM_DRAW),i.bufferSubData(i.ARRAY_BUFFER,0,fi.buffer,0,fi.offset)},Xi=e=>{e.useProgram(),e.bindUniform(),Yi(),i.drawArraysInstanced(i.TRIANGLES,0,6,e.count)},Zi=()=>{Kr!==611&&(qr(611),i.blendFunc(i.ONE,i.ONE))},Qi=()=>{Kr!==641&&(qr(641),i.blendFunc(i.ONE_MINUS_DST_COLOR,i.ONE))},$i=()=>{Kr!==606&&(qr(606),i.blendFunc(i.ZERO,i.SRC_ALPHA))},ea=()=>{Kr!==603&&(qr(603),i.blendFunc(i.ZERO,i.ONE_MINUS_SRC_ALPHA))},ta=e=>{switch(e){case`add`:Zi();break;case`screen`:Qi();break;case`alpha`:$i();break;case`erase`:ea();break;case`copy`:Vi();break;default:Jr()}},na=()=>{let e=yi();e.count&&(Mi(),ta(Wr),Xi(e),e.clear())},ra=()=>{let e=tr();return rr(e),i.bindBuffer(i.ARRAY_BUFFER,e.vertexBuffer),i.bufferData(i.ARRAY_BUFFER,new Float32Array([0,0,1,0,1,1,0,0,1,1,0,1]),i.STATIC_DRAW),i.enableVertexAttribArray(0),i.vertexAttribPointer(0,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,sr),i.bufferData(i.ARRAY_BUFFER,fi.buffer.length,i.STREAM_DRAW),i.enableVertexAttribArray(1),i.vertexAttribPointer(1,4,i.FLOAT,!1,88,0),i.vertexAttribDivisor(1,1),i.enableVertexAttribArray(2),i.vertexAttribPointer(2,4,i.FLOAT,!1,88,16),i.vertexAttribDivisor(2,1),i.enableVertexAttribArray(3),i.vertexAttribPointer(3,2,i.FLOAT,!1,88,32),i.vertexAttribDivisor(3,1),i.enableVertexAttribArray(4),i.vertexAttribPointer(4,4,i.FLOAT,!1,88,40),i.vertexAttribDivisor(4,1),i.enableVertexAttribArray(5),i.vertexAttribPointer(5,4,i.FLOAT,!1,88,56),i.vertexAttribDivisor(5,1),i.enableVertexAttribArray(6),i.vertexAttribPointer(6,4,i.FLOAT,!1,88,72),i.vertexAttribDivisor(6,1),e},ia=e=>{cr(e),ur(ra())},aa=()=>{let e=c.$mainAttachmentObject;c.bind(e),i.bindFramebuffer(i.READ_FRAMEBUFFER,He),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,null);let t=e.width,n=e.height;i.blitFramebuffer(0,0,t,n,0,0,t,n,i.COLOR_BUFFER_BIT,i.NEAREST),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,We),i.bindFramebuffer(i.FRAMEBUFFER,He)},oa=()=>{i.enable(i.BLEND),Jr()},sa=()=>{let e=c.currentAttachmentObject;e&&(e.mask=!0,e.clipLevel++,$t.set(e.clipLevel,e.clipLevel),Zt()||(Xt(!0),m(),i.enable(i.SAMPLE_ALPHA_TO_COVERAGE),i.stencilFunc(i.ALWAYS,0,255),i.stencilOp(i.ZERO,i.INVERT,i.INVERT),i.colorMask(!1,!1,!1,!1)))},ca=(e,t,n,r)=>{let i=c.currentAttachmentObject;if(!i)return;Qt.set(i.clipLevel,S(e,t,n,r));let a=Math.ceil(Math.abs(n-e)),o=Math.ceil(Math.abs(r-t));d(),s(e,i.height-t-o,a,o)},la=()=>{let e=c.currentAttachmentObject;if(!e)return;let t=e.clipLevel,n=Qt.get(t),r=n[0],a=n[1],o=n[2],l=n[3];Qt.delete(t),$t.delete(t),C(n);let u=Math.ceil(Math.abs(o-r)),p=Math.ceil(Math.abs(l-a));if(d(),s(r,e.height-a-p,u,p),--e.clipLevel,!e.clipLevel){e.mask=!1,Xt(!1),i.clear(i.STENCIL_BUFFER_BIT),h(),f(),$t.clear(),Qt.clear();return}i.stencilMask(1<{let a=_t(e,t,r);return i.texSubImage2D(i.TEXTURE_2D,0,0,0,e,t,i.RGBA,i.UNSIGNED_BYTE,n),a},da=()=>{if(vi.has(`pp`))return vi.get(`pp`);let e=new Sr(gi(),li());return vi.set(`pp`,e),e},fa=(e,t)=>{let n=ua(e.w,e.h,t),r=da();Ii(r,e.w,e.h),Jr(),Li(r),H(n)},pa=(e,t,n,r=!1)=>{let a=_t(e,t,r);return i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,n),a},ma=(e,t)=>{let n=pa(e.w,e.h,t),r=da();Ii(r,e.w,e.h),Jr(),Li(r),H(n)},ha=[],ga=(e,t,n,r,i,a)=>{let o=te();if(!o.length)return;yn.push(`bitmap`);let s=Cn(o);_n(s.buffer),vn.push(s.indexCount),ha.push(e,t,n,r,i,a)},_a=(e,t,n,r,i,a)=>{let o=te(!0);if(!o.length)return;yn.push(`bitmap`);let s=Xn(o);_n(s.buffer),vn.push(s.indexCount),ha.push(e,t,n,r,i,a)},va=()=>{let e=te(!0);if(!e.length)return;yn.push(`fill`);let t=Xn(e);_n(t.buffer),vn.push(t.indexCount)},ya=e=>{let t=e.toFixed(1);return`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\nuniform vec4 u_mediump;\n\nin vec2 v_coord;\nout vec4 o_color;\n\nvoid main() {\n vec2 offset = u_mediump.xy;\n float fraction = u_mediump.z;\n float samples = u_mediump.w;\n \n vec4 color = texture(u_texture, v_coord);\n\n for (float i = 1.0; i < ${t}; i += 1.0) {\n color += texture(u_texture, v_coord + offset * i);\n color += texture(u_texture, v_coord - offset * i);\n }\n color += texture(u_texture, v_coord + offset * ${t}) * fraction;\n color += texture(u_texture, v_coord - offset * ${t}) * fraction;\n color /= samples;\n\n o_color = color;\n}`},ba=new Map,xa=e=>{let t=`b${e}`;if(ba.has(t))return ba.get(t);let n=new Sr(mi(),ya(e));return ba.set(t,n),n},Sa=(e,t,n,r,i,a)=>{let o=e.mediump;r?(o[0]=1/t,o[1]=0):(o[0]=0,o[1]=1/n),o[2]=i,o[3]=a},Ca=(e,t,n)=>{Kt(e,!0);let r=Math.ceil(n*.5),i=1-(r-n*.5),a=1+n,o=xa(r);Sa(o,e.width,e.height,t,i,a),Li(o)},U={x:0,y:0},wa=(e,t,n)=>(e>>16)*(n?t:1)/255,Ta=(e,t,n)=>(e>>8&255)*(n?t:1)/255,Ea=(e,t,n)=>(e&255)*(n?t:1)/255,Da=[.5,1.05,1.4,1.55,1.75,1.9,2,2.15,2.2,2.3,2.5,3,3,3.5,3.5],Oa=(e,t,n=4,r=4,i=1,a=!0)=>{let o=c.currentAttachmentObject,s=Math.sqrt(t[0]*t[0]+t[1]*t[1]),l=Math.sqrt(t[2]*t[2]+t[3]*t[3]),u=F,d=s/u*n,f=l/u*r,p=Da[i-1],m=Math.round(d*p),h=Math.round(f*p);U.x+=m,U.y+=h;let g=e.width+m*2,_=e.height+h*2,v=1,y=1;d>128?v=.0625:d>64?v=.125:d>32?v=.25:d>16&&(v=.5),f>128?y=.0625:f>64?y=.125:f>32?y=.25:f>16&&(y=.5);let b=Math.ceil(g*v),x=Math.ceil(_*y),S=vt(b,x,!1),C=[S,vt(b,x,!1)];c.bind(S),c.reset(),c.setTransform(v,0,0,y,m*v,h*y),Kt(e);let w=Wi();Gi(w,e.width,e.height),Li(w),a&&H(e);let T=d*v,E=f*y,D=0,O=S.texture;Kt(O,!0),Vi();for(let e=0;e0){D=(D+1)%2;let e=C[D];c.bind(e),Ca(O,!0,T),O=e.texture}if(r>0){D=(D+1)%2;let e=C[D];c.bind(e),Ca(O,!1,E),O=e.texture}}if(Jr(),v!==1||y!==1){let e=vt(g,_,!1);c.bind(e),c.setTransform(1/v,0,0,1/y,0,0),Kt(O,!0),Gi(w,O.width,O.height),Li(w),O=e.texture,rt(C[0]),rt(C[1]),rt(e,!1)}else D=(D+1)%2,rt(C[D]),D=(D+1)%2,rt(C[D],!1);return o&&c.bind(o),O},ka=()=>`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\nuniform vec4 u_mediump[5];\n\nin vec2 v_coord;\nout vec4 o_color;\n\nvoid main() {\n mat4 mul = mat4(u_mediump[0], u_mediump[1], u_mediump[2], u_mediump[3]);\n vec4 add = u_mediump[4];\n \n vec4 color = texture(u_texture, v_coord);\n\n color.rgb /= max(0.0001, color.a);\n color = clamp(color * mul + add, 0.0, 1.0);\n color.rgb *= color.a;\n\n o_color = color;\n}`,Aa=()=>{if(ba.has(`m`))return ba.get(`m`);let e=new Sr(mi(),ka());return ba.set(`m`,e),e},ja=(e,t)=>{let n=e.mediump;n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[5],n[5]=t[6],n[6]=t[7],n[7]=t[8],n[8]=t[10],n[9]=t[11],n[10]=t[12],n[11]=t[13],n[12]=t[15],n[13]=t[16],n[14]=t[17],n[15]=t[18],n[16]=t[4]/255,n[17]=t[9]/255,n[18]=t[14]/255,n[19]=t[19]/255},Ma=(e,t)=>{let n=c.currentAttachmentObject,r=vt(e.width,e.height,!1);c.bind(r),c.reset(),c.setTransform(1,0,0,1,0,0),Kt(e),Jr();let i=Aa();ja(i,t),Li(i);let a=r.texture;return H(e),rt(r,!1),n&&c.bind(n),a},Na=(e,t,n=!1)=>{Gt(2,i.TEXTURE2,t,n),Gt(1,i.TEXTURE1,null),Gt(0,i.TEXTURE0,e,n)},Pa=(e,t,n,r=!1)=>{Gt(2,i.TEXTURE2,n,r),Gt(1,i.TEXTURE1,t,r),Gt(0,i.TEXTURE0,e,r)},Fa=()=>{Kr!==670&&(qr(670),i.blendFunc(i.DST_ALPHA,i.ZERO))},Ia=()=>{Kr!==673&&(qr(673),i.blendFunc(i.DST_ALPHA,i.ONE_MINUS_SRC_ALPHA))},La=e=>`\n vec2 base_scale = u_mediump[${e}].xy;\n vec2 base_offset = u_mediump[${e}].zw;\n\n vec2 uv = v_coord * base_scale - base_offset;\n vec4 base = mix(vec4(0.0), texture(u_textures[1], uv), isInside(uv));\n`,Ra=()=>`\n vec4 blur = texture(u_textures[0], v_coord);\n`,za=e=>`\n vec2 blur_scale = u_mediump[${e}].xy;\n vec2 blur_offset = u_mediump[${e}].zw;\n\n vec2 st = v_coord * blur_scale - blur_offset;\n vec4 blur = mix(vec4(0.0), texture(u_textures[0], st), isInside(st));\n`,Ba=e=>`\n float strength = u_mediump[${Math.floor(e/4)}][${e%4}];\n blur.a = clamp(blur.a * strength, 0.0, 1.0);\n`,Va=e=>`\n vec4 color = u_mediump[${e}];\n blur = color * blur.a;\n`,Ha=e=>`\n blur = texture(u_textures[${e?2:1}], vec2(blur.a, 0.5));\n`,Ua=(e,t,n,r,i,a)=>`\n ${e?`blur.a = 1.0 - blur.a;`:``}\n ${n?Ba(a):``}\n ${r?Ha(t):Va(i)}\n`,Wa=()=>`\n vec4 blur2 = texture(u_textures[0], 1.0 - v_coord);\n`,Ga=()=>`\n vec2 pq = (1.0 - v_coord) * blur_scale - blur_offset;\n vec4 blur2 = mix(vec4(0.0), texture(u_textures[0], pq), isInside(pq));\n`,Ka=e=>`\n float strength = u_mediump[${Math.floor(e/4)}][${e%4}];\n highlight_alpha *= strength;\n shadow_alpha *= strength;\n`,qa=e=>`\n vec4 highlight_color = u_mediump[${e}];\n vec4 shadow_color = u_mediump[${e+1}];\n blur = highlight_color * highlight_alpha + shadow_color * shadow_alpha;\n`,Ja=e=>`\n blur = texture(u_textures[${e?2:1}], vec2(\n 0.5019607843137255 - 0.5019607843137255 * shadow_alpha + 0.4980392156862745 * highlight_alpha,\n 0.5\n ));\n`,Ya=(e,t,n,r,i,a,o,s,c)=>{let l=0,u=n?La(l++):``,d=r?za(l++):Ra(),f=a===`inner`,p=l,m=l*4,h;c?h=i?Ua(!1,n,s,c,p,m):Xa(n,r,s,c,p,m):i?(m+=4,h=Ua(f,n,s,c,p,m)):(m+=8,h=Xa(n,r,s,c,p,m));let g;switch(a){case`outer`:g=o?`blur - blur * base.a`:`base + blur - blur * base.a`;break;case`full`:g=o?`blur`:`base - base * blur.a + blur`;break;default:g=`blur`}return`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_textures[${e}];\nuniform vec4 u_mediump[${t}];\n\nin vec2 v_coord;\nout vec4 o_color;\n\n${oi()}\n\nvoid main() {\n ${u}\n ${d}\n ${h}\n o_color = ${g};\n}`},Xa=(e,t,n,r,i,a)=>`\n ${t?Ga():Wa()}\n float highlight_alpha = blur.a - blur2.a;\n float shadow_alpha = blur2.a - blur.a;\n ${n?Ka(a):``}\n highlight_alpha = clamp(highlight_alpha, 0.0, 1.0);\n shadow_alpha = clamp(shadow_alpha, 0.0, 1.0);\n ${r?Ja(e):qa(i)}\n`,Za=(e,t,n,r,i,a,o)=>{let s=`f${e?`y`:`n`}${t?`y`:`n`}${n?`y`:`n`}${r}${i?`y`:`n`}${a?`y`:`n`}${o?`y`:`n`}`;if(ba.has(s))return ba.get(s);let c=1;e&&c++,o&&c++;let l=(e?4:0)+(t?4:0)+ +!!a;o||(l+=n?4:8),l=Math.ceil(l/4);let u=new Sr(mi(),Ya(c,l,e,t,n,r,i,a,o));return ba.set(s,u),u},Qa=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w)=>{let T;x?(T=e.textures,T[0]=0,T[1]=1,w&&(T[2]=2)):w&&(T=e.textures,T[0]=0,T[1]=2);let E=e.mediump,D=0;x&&(E[D++]=t/r,E[D++]=n/i,E[D++]=a/r,E[D++]=(n-i-o)/i),S&&(E[D++]=t/s,E[D++]=n/c,E[D++]=l/s,E[D++]=(n-c-u)/c),w||(d?(E[D++]=p,E[D++]=m,E[D++]=h,E[D++]=g):(E[D++]=p,E[D++]=m,E[D++]=h,E[D++]=g,E[D++]=_,E[D++]=v,E[D++]=y,E[D++]=b)),C&&(E[D]=f)},$a=new Map,eo=[],to=(e,t)=>{let n=eo.indexOf(e);for(n!==-1&&eo.splice(n,1);$a.size>=16&&eo.length>0;){let e=eo.shift();e&&$a.delete(e)}$a.set(e,t),eo.push(e)},no=e=>{let t=$a.get(e);if(t){let t=eo.indexOf(e);t!==-1&&(eo.splice(t,1),eo.push(e))}return t},ro=(e,t,n)=>{let r=``;for(let e=1;e{let n=`l${(`00`+e).slice(-3)}${t?`y`:`n`}`,r=no(n);if(r)return r;let i=Math.ceil(e*5/4),a=new Sr(mi(),ro(i,e,t));return to(n,a),a},ao=(e,t,n,r,i,a)=>{let o=e.mediump,s=0;for(let e=i;e>16)/255,o[s++]=(t>>8&255)/255,o[s++]=(t&255)/255,o[s++]=r[e]}for(let e=i;e{let n=tr();return rr(n),i.bindBuffer(i.ARRAY_BUFFER,n.vertexBuffer),or[0]=e,or[2]=e,or[4]=t,or[6]=t,i.bufferData(i.ARRAY_BUFFER,or,i.STATIC_DRAW),i.enableVertexAttribArray(0),i.vertexAttribPointer(0,2,i.FLOAT,!1,0,0),n},so,co=(e,t)=>(so?(or[0]!==e||or[4]!==t)&&(or[0]=e,or[2]=e,or[4]=t,or[6]=t,i.bindBuffer(i.ARRAY_BUFFER,so.vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,or)):so=oo(e,t),so),lo=(e,t,n)=>{e.useProgram(),e.bindUniform(),rr(co(t,n)),i.drawArrays(i.TRIANGLE_STRIP,0,4)},uo=new Map,fo=e=>e<=4?256:e<=8?512:1024,po=e=>{if(!uo.has(e)){let t=vt(e,1,!1);uo.set(e,t)}return uo.get(e)},mo=()=>po(512),ho=0,go=()=>ho,_o=e=>{ho=Math.floor(e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS)*.75)},vo=new Float32Array(256),yo=new Float32Array(256);for(let e=0;e<256;++e){let t=e/255;vo[e]=t**2.23333333,yo[e]=t}let bo=(e,t,n)=>{let r=c.currentAttachmentObject,i=mo();c.bind(i);let a=e.length;Vi();let o=go();for(let r=0;r{let O=c.currentAttachmentObject,k=vt(n,r,!1);c.bind(k);let A=m===`inner`,j=_!==null&&v!==null&&y!==null,M=null;if(j&&(M=bo(_,v,y)),A){c.reset(),c.setTransform(1,0,0,1,0,0),Kt(e,!0);let n=Fi();Ii(n,e.width,e.height),Li(n),j&&M?Na(t,M,!0):Kt(t,!0)}else j&&M?Pa(t,e,M,!0):Pi(t,e,!0);let N=!(A||m===`full`&&h),P=n!==l||r!==u||d!==0||f!==0,F=g!==1;A?h?Fa():Ia():Vi();let I=Za(N,P,p,m,h,F,j);Qa(I,n,r,i,a,o,s,l,u,d,f,p,g,b,x,S,C,w,T,E,D,N,P,F,j),Li(I);let ee=k.texture;return rt(k,!1),Jr(),O&&c.bind(O),ee},So=(e,t,n=0,r=1,i=4,a=4,o=1,s=1,l=!1,u=!1)=>{let d=c.currentAttachmentObject,f=e.width,p=e.height,m=U.x,h=U.y,g=Oa(e,t,i,a,s,!1),_=g.width,v=g.height,y=U.x,b=U.y,x=l?f:_,S=l?p:v,C=y-m,w=b-h,T=l?0:C,E=l?0:w,D=l?-C:0,O=l?-w:0,k=xo(e,g,x,S,f,p,T,E,_,v,D,O,!0,l?`inner`:`outer`,u,o,null,null,null,wa(n,r,!0),Ta(n,r,!0),Ea(n,r,!0),r,0,0,0,0);return H(e),H(g),d&&c.bind(d),k},Co=Math.PI/180,wo=(e,t,n=4,r=45,i=0,a=1,o=4,s=4,l=1,u=1,d=!1,f=!1,p=!1)=>{let m=c.currentAttachmentObject,h=e.width,g=e.height,_=U.x,v=U.y,y=Oa(e,t,o,s,u,!1),b=y.width,x=y.height,S=U.x,C=U.y,w=S-_,T=C-v,E=Math.sqrt(t[0]*t[0]+t[1]*t[1]),D=Math.sqrt(t[2]*t[2]+t[3]*t[3]),O=F,k=r*Co,A=Math.cos(k)*n*(E/O),j=Math.sin(k)*n*(D/O),M=d?h:b+Math.max(0,Math.abs(A)-w),N=d?g:x+Math.max(0,Math.abs(j)-T),P=Math.ceil(M),I=Math.ceil(N),ee=(P-M)/2,L=(I-N)/2,R=d?0:Math.max(0,w-A)+ee,z=d?0:Math.max(0,T-j)+L,te=d?A-S:(A>0?Math.max(0,A-w):0)+ee,ne=d?j-C:(j>0?Math.max(0,j-T):0)+L,re=``,ie;d?(re=`inner`,ie=f||p):!f&&p?(re=`full`,ie=!0):(re=`outer`,ie=f);let ae=xo(e,y,P,I,h,g,R,z,b,x,te,ne,!0,re,ie,l,null,null,null,wa(i,a,!0),Ta(i,a,!0),Ea(i,a,!0),a,0,0,0,0);return H(e),H(y),m&&c.bind(m),ae},To=Math.PI/180,Eo=(e,t,n=4,r=45,i=16777215,a=1,o=0,s=1,l=4,u=4,d=1,f=1,p=0,m=!1)=>{let h=e.width,g=e.height,_=U.x,v=U.y,y=Math.sqrt(t[0]*t[0]+t[1]*t[1]),b=Math.sqrt(t[2]*t[2]+t[3]*t[3]),x=F,S=r*To,C=Math.cos(S)*n*(y/x),w=Math.sin(S)*n*(b/x),T=c.currentAttachmentObject,E=vt(h,g,!1);c.bind(E),c.reset(),c.setTransform(1,0,0,1,0,0),Kt(e);let D=Fi();Ii(D,e.width,e.height),Li(D),c.setTransform(1,0,0,1,C*2,w*2),ea(),Ii(D,e.width,e.height),Li(D),Jr();let O=E.texture;T&&c.bind(T);let k=Oa(O,t,l,u,f,!1);rt(E);let A=k.width,j=k.height,M=Math.ceil(A+Math.abs(C)*2),N=Math.ceil(j+Math.abs(w)*2),P=``;switch(p){case 0:P=`full`;break;case 1:P=`inner`;break;case 2:P=`outer`}let I=P===`inner`,ee=I?h:M,L=I?g:N,R=Math.abs(C),z=Math.abs(w),te=(A-h)/2,ne=(j-g)/2,re=I?0:R+te,ie=I?0:z+ne,ae=I?-te-C:R-C,oe=I?-ne-w:z-w,se=xo(e,k,ee,L,h,g,re,ie,A,j,ae,oe,!1,P,m,d,null,null,null,wa(i,a,!0),Ta(i,a,!0),Ea(i,a,!0),a,wa(o,s,!0),Ta(o,s,!0),Ea(o,s,!0),s);return U.x=_+re,U.y=v+ie,H(e),H(k),se},Do=Math.PI/180,Oo=(e,t,n=4,r=45,i,a,o,s=4,l=4,u=1,d=1,f=0,p=!1)=>{let m=e.width,h=e.height,g=U.x,_=U.y,v=Math.sqrt(t[0]*t[0]+t[1]*t[1]),y=Math.sqrt(t[2]*t[2]+t[3]*t[3]),b=F,x=r*Do,S=Math.cos(x)*n*(v/b),C=Math.sin(x)*n*(y/b),w=c.currentAttachmentObject,T=vt(m,h,!1);c.bind(T),c.reset(),c.setTransform(1,0,0,1,0,0),Kt(e);let E=Fi();Ii(E,e.width,e.height),Li(E),c.setTransform(1,0,0,1,S*2,C*2),ea(),Ii(E,e.width,e.height),Li(E),Jr();let D=T.texture;w&&c.bind(w);let O=Oa(D,t,s,l,d,!1);rt(T);let k=O.width,A=O.height,j=Math.ceil(k+Math.abs(S)*2),M=Math.ceil(A+Math.abs(C)*2),N=``;switch(f){case 0:N=`full`;break;case 1:N=`inner`;break;case 2:N=`outer`}let P=N===`inner`,I=P?m:j,ee=P?h:M,L=Math.abs(S),R=Math.abs(C),z=(k-m)/2,te=(A-h)/2,ne=P?0:L+z,re=P?0:R+te,ie=P?-z-S:L-S,ae=P?-te-C:R-C,oe=xo(e,O,I,ee,m,h,ne,re,k,A,ie,ae,!1,N,p,u,o,i,a,0,0,0,0,0,0,0,0);return U.x=g+ne,U.y=_+re,H(e),H(O),oe},ko=Math.PI/180,Ao=(e,t,n=4,r=45,i,a,o,s=4,c=4,l=1,u=1,d=0,f=!1)=>{let p=e.width,m=e.height,h=U.x,g=U.y,_=Oa(e,t,s,c,u,!1),v=_.width,y=_.height,b=U.x,x=U.y,S=b-h,C=x-g,w=Math.sqrt(t[0]*t[0]+t[1]*t[1]),T=Math.sqrt(t[2]*t[2]+t[3]*t[3]),E=F,D=r*ko,O=Math.cos(D)*n*(w/E),k=Math.sin(D)*n*(T/E),A=d===1,j=A?p:v+Math.max(0,Math.abs(O)-S),M=A?m:y+Math.max(0,Math.abs(k)-C),N=Math.ceil(j),P=Math.ceil(M),I=(N-j)/2,ee=(P-M)/2,L=A?0:Math.max(0,S-O)+I,R=A?0:Math.max(0,C-k)+ee,z=A?O-b:(O>0?Math.max(0,O-S):0)+I,te=A?k-x:(k>0?Math.max(0,k-C):0)+ee,ne=``;switch(d){case 0:ne=`full`;break;case 1:ne=`inner`;break;case 2:ne=`outer`}let re=xo(e,_,N,P,p,m,L,R,v,y,z,te,!0,ne,f,l,o,i,a,0,0,0,0,0,0,0,0);return U.x=h+L,U.y=g+R,H(e),H(_),re},jo=(e,t,n,r,i)=>{let a=Math.floor(t*.5),o=Math.floor(n*.5),s=t*n,c=``,l=i?1:2;for(let e=0;e{let i=`c${(`0`+e).slice(-2)}${(`0`+t).slice(-2)}${n?`y`:`n`}${r?`y`:`n`}`;if(ba.has(i))return ba.get(i);let a=(r?1:2)+Math.ceil(e*t/4),o=new Sr(mi(),jo(a,e,t,n,r));return ba.set(i,o),o},No=(e,t,n,r,i,a,o,s,c,l,u)=>{let d=e.mediump;d[0]=1/t,d[1]=1/n,d[2]=1/i,d[3]=a/255;let f=4;o||(d[f++]=s,d[f++]=c,d[f++]=l,d[f++]=u);let p=r.length;for(let e=0;e{let d=c.currentAttachmentObject,f=e.width,p=e.height,m=vt(f,p,!1);c.bind(m),c.reset(),c.setTransform(1,0,0,1,0,0),Kt(e,!0),Jr();let h=Mo(t,n,o,s);No(h,f,p,r,i,a,s,wa(l,u,!1),Ta(l,u,!1),Ea(l,u,!1),u),Li(h);let g=m.texture;return H(e),rt(m,!1),d&&c.bind(d),g},Fo=(e,t,n,r)=>{let i,a,o;switch(t){case 1:i=`map_color.r`;break;case 2:i=`map_color.g`;break;case 4:i=`map_color.b`;break;case 8:i=`map_color.a`;break;default:i=`0.5`}switch(n){case 1:a=`map_color.r`;break;case 2:a=`map_color.g`;break;case 4:a=`map_color.b`;break;case 8:a=`map_color.a`;break;default:a=`0.5`}switch(r){case 0:o=`\n vec4 source_color = texture(u_textures[0], uv);\n`;break;case 3:o=`\n vec4 source_color =texture(u_textures[0], mix(v_coord, uv, step(abs(uv - vec2(0.5)), vec2(0.5))));\n`;break;case 1:o=`\n vec4 substitute_color = u_mediump[2];\n vec4 source_color = mix(substitute_color, texture(u_textures[0], uv), isInside(uv));\n`;break;default:o=`\n vec4 source_color = texture(u_textures[0], fract(uv));\n`}return`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_textures[2];\nuniform vec4 u_mediump[${e}];\n\nin vec2 v_coord;\nout vec4 o_color;\n\n${oi()}\n\nvoid main() {\n vec2 uv_to_st_scale = u_mediump[0].xy;\n vec2 uv_to_st_offset = u_mediump[0].zw;\n vec2 scale = u_mediump[1].xy;\n\n vec2 st = v_coord * uv_to_st_scale - uv_to_st_offset;\n vec4 map_color = texture(u_textures[1], st);\n\n vec2 offset = vec2(${i}, ${a}) - 0.5;\n vec2 uv = v_coord + offset * scale;\n ${o}\n\n o_color = mix(texture(u_textures[0], v_coord), source_color, isInside(st));\n}`},Io=(e,t,n)=>{let r=`d${e}${t}${n}`;if(ba.has(r))return ba.get(r);let i=n===1?3:2,a=new Sr(mi(),Fo(i,e,t,n));return ba.set(r,a),a},Lo=(e,t,n,r,i,a,o,s,c,l,u,d,f,p)=>{let m=e.textures;m[0]=0,m[1]=1;let h=e.mediump;h[0]=r/t,h[1]=i/n,h[2]=a/t,h[3]=(i-n-o)/n,h[4]=s/r,h[5]=-c/i,l===1&&(h[8]=u,h[9]=d,h[10]=f,h[11]=p)},Ro=(e,t,n=0,r=0,i=0,a=0,o=0,s=0,l=0,u=0,d=2,f=0,p=0)=>{let m=c.currentAttachmentObject,h=e.width,g=e.height,_=vt(h,g,!1);c.bind(_);let v=ua(n,r,t);Pi(e,v);let y=Io(o,s,d);Lo(y,n,r,n,r,i,a,l,u,d,wa(f,p,!0),Ta(f,p,!0),Ea(f,p,!0),p),Jr(),Li(y);let b=_.texture;return m&&c.bind(m),H(e),H(v),rt(_,!1),b},zo=(e,t,n,r)=>{let i=e.highp,a=c.$matrix;i[0]=a[0],i[1]=a[1],i[2]=a[3],i[3]=a[4],i[4]=a[6],i[5]=a[7],i[6]=n,i[7]=r,i[8]=j,i[9]=M;let o=e.mediump;o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=t[4],o[5]=t[5],o[6]=t[6],o[7]=t[7]},Bo=(e,t,n,r)=>{let i=c.currentAttachmentObject,a=e.width,o=e.height;switch(c.globalCompositeOperation){case`normal`:case`layer`:case`add`:case`screen`:case`alpha`:case`erase`:case`copy`:{c.bind(c.$mainAttachmentObject),c.setTransform(1,0,0,1,n,r);let i=Wi(!0);zo(i,t,a,o),Kt(e),ta(c.globalCompositeOperation),Li(i)}break;default:{let i=Bi(n,r,a,o),s=vt(a,o,!1);c.bind(s),Pi(i,e);let l=Ai(c.globalCompositeOperation,!0);Ui(l,t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7]),Li(l),c.bind(c.$mainAttachmentObject),c.reset(),c.setTransform(1,0,0,1,n,r),Hi(s.texture),H(i),rt(s)}}i&&c.bind(i),Jr()},Vo=[],Ho=e=>{e.size&&e.clear(),Vo.push(e)},Uo=()=>Vo.pop()||new Map,Wo=(e,t,n)=>{n.clear(),e.$timerId!==null&&clearTimeout(e.$timerId);for(let n of t.values()){for(let t of n.values())t&&e.destroy(t);Ho(n)}t.clear()},Go=(e,t)=>{if(!(!t||typeof t!=`object`)&&`canvas`in t){let n=t.canvas,r=n.width,i=n.height;t.clearRect(0,0,r+1,i+1),n.width=n.height=1,e.push(n)}},Ko=(e,t,n)=>{if(!e.has(t))return;let r=e.get(t);r.has(n)&&(r.delete(n),r.size||(Ho(r),e.delete(t)))},qo=(e,t,n)=>{if(!t.has(n))return;let r=t.get(n);for(let t of r.values())e.destroy(t);t.delete(n),Ho(r)},Jo=(e,t,n,r,i)=>{let a=t.get(r)||null;return a?(n.has(r)&&(n.delete(r),a.delete(`trash`)),e.$maxStoreSize>0&&(t.delete(r),t.set(r,a)),a.get(i)||null):null},Yo=(e,t,n,r,i=null)=>{t.has(n)||t.set(n,Uo());let a=t.get(n);if(i===null){if(!a.has(r))return;e.destroy(a.get(r)),a.delete(r),a.size||(t.delete(n),Ho(a));return}if(a.set(r,i),e.$maxStoreSize>0)for(t.delete(n),t.set(n,a);t.size>e.$maxStoreSize;){let r=t.keys().next().value;if(r===n)break;e.removeById(r),e.$removeIds.push(+r)}},Xo=(e,t,n=``)=>n?e.has(t)?e.get(t).has(n):!1:e.has(t),Zo=(e,t,n)=>{let r=2166136261,i=e*100|0;return r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619),i=t*100|0,r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619),n&&(i=n*100|0,r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619)),(r>>>0)%16777216},Qo=(e,t,n,r)=>{let i=2166136261,a=e*100|0;return i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=t*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=n*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=r*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),(i>>>0)%16777216},$o=(e,t,n,r)=>{if(n.has(r))return;let i=t.get(r);i&&(i.set(`trash`,!0),n.set(r,i),e.$timerId!==null&&clearTimeout(e.$timerId),e.$removeCache=!1,e.$timerId=setTimeout(()=>{e.$removeCache=!0,e.$timerId=null},1e3))},es=(e,t)=>{if(t.size){for(let[n,r]of t)r.has(`trash`)&&(e.removeById(n),e.$removeIds.push(+n));t.clear(),e.$removeCache=!1}},ts=(e,t,n)=>{if(!t.has(n))return;t.delete(n);let r=e.get(n);r&&r.delete(`trash`)},W=new class{_$pool;_$store;_$trash;$timerId;$removeCache;$removeIds;$maxStoreSize;constructor(){this._$pool=[],this._$store=new Map,this._$trash=new Map,this.$timerId=null,this.$removeIds=[],this.$removeCache=!1,this.$maxStoreSize=0}reset(){Wo(this,this._$store,this._$trash)}destroy(e=null){Go(this._$pool,e)}getCanvas(){return this._$pool.pop()||document.createElement(`canvas`)}remove(e,t){Ko(this._$store,e,t)}removeTimer(e){$o(this,this._$store,this._$trash,e)}cancelRemoveTimer(e){ts(this._$store,this._$trash,e)}removeTimerScheduledCache(){es(this,this._$trash)}removeById(e){qo(this,this._$store,e)}getById(e){let t=this._$store.get(e);return t&&this.$maxStoreSize>0&&(this._$store.delete(e),this._$store.set(e,t)),t}get(e,t){return Jo(this,this._$store,this._$trash,e,t)}set(e,t,n=null){Yo(this,this._$store,e,t,n)}has(e,t=``){return Xo(this._$store,e,t)}generateKeys(e,t,n){return Zo(e,t,n)}generateFilterKeys(e,t,n,r){return Qo(e,t,n,r)}},ns=new Float32Array(20),rs=(e,t,n,r,i,a,o,s,l,u,d)=>{let f=c.currentAttachmentObject,p=null,m=Math.sqrt(o[0]*o[0]+o[1]*o[1]),h=Math.sqrt(o[2]*o[2]+o[3]*o[3]),g=W.generateFilterKeys(o[0],o[1],o[2],o[3]),_=!1,v=W.get(t,`fKey`),y=W.get(t,`fTexture`);v===g&&y?n?H(y):(_=!0,p=y):y&&H(y);let b=0,x=0;if(_)b=W.get(t,`offsetX`),x=W.get(t,`offsetY`);else{p=Ni(e);let t=Math.atan2(o[1],o[0]),n=Math.atan2(-o[2],o[3]),s=a?m*Math.cos(t):Math.cos(t),l=a?m*Math.sin(t):Math.sin(t),u=a?-h*Math.sin(n):-Math.sin(n),g=a?h*Math.cos(n):Math.cos(n),_=O(s,l,u,g,r/2,i/2),v=O(1,0,0,1,-e.w/2,-e.h/2),y=ee(_,v);if(k(_),k(v),y[0]!==1||y[1]!==0||y[2]!==0||y[3]!==1){let e=vt(r,i,!1);c.bind(e),c.reset(),c.setTransform(y[0],y[1],y[2],y[3],y[4],y[5]),b=y[4],x=y[5],Kt(p);let t=Wi();Gi(t,p.width,p.height),Li(t),H(p),p=e.texture,rt(e,!1),f&&c.bind(f)}k(y),U.x=0,U.y=0;for(let e=0;d.length>e;)switch(d[e++]){case 0:p=Eo(p,o,d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],!!d[e++]);break;case 1:p=Oa(p,o,d[e++],d[e++],d[e++]);break;case 2:for(let t=0;t<20;++t)ns[t]=d[e++];p=Ma(p,ns);break;case 3:{let t=d[e++],n=d[e++],r=t*n,i=d.subarray(e,e+r);e+=r,p=Po(p,t,n,i,d[e++],d[e++],!!d[e++],!!d[e++],d[e++],d[e++])}break;case 4:{let t=d[e++],n=new Uint8Array(t);n.set(d.subarray(e,e+t)),e+=t,p=Ro(p,n,d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++])}break;case 5:p=wo(p,o,d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],!!d[e++],!!d[e++],!!d[e++]);break;case 6:p=So(p,o,d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],!!d[e++],!!d[e++]);break;case 7:{let t=d[e++],n=d[e++],r=d[e++],i=d.subarray(e,e+r);e+=r,r=d[e++];let a=d.subarray(e,e+r);e+=r,r=d[e++];let s=d.subarray(e,e+r);e+=r,p=Oo(p,o,t,n,i,a,s,d[e++],d[e++],d[e++],d[e++],d[e++],!!d[e++])}break;case 8:{let t=d[e++],n=d[e++],r=d[e++],i=d.subarray(e,e+r);e+=r,r=d[e++];let a=d.subarray(e,e+r);e+=r,r=d[e++];let s=d.subarray(e,e+r);e+=r,p=Ao(p,o,t,n,i,a,s,d[e++],d[e++],d[e++],d[e++],d[e++],!!d[e++])}}}if(p){let e=F,t=u[0]*(m/e),n=u[1]*(h/e);c.reset(),c.setTransform(1,0,0,1,0,0),c.globalCompositeOperation=l,Bo(p,s,-b+t+o[4],-x+n+o[5])}_||(W.set(t,`fKey`,g),W.set(t,`fTexture`,p),W.set(t,`offsetX`,b),W.set(t,`offsetY`,x)),f&&c.bind(f)},is=[],as=(e,t)=>{c.drawArraysInstanced();let n=c.$mainAttachmentObject;is.push(n);let r=vt(e,t,!1);c.$mainAttachmentObject=r,c.bind(r)},os=new Float32Array(20),ss=(e,t,n,r,i,a,o,s,l=1,u=1)=>{c.drawArraysInstanced();let d=c.$mainAttachmentObject,f=null;if(r&&i&&a){f=Bi(0,0,d.width,d.height),c.$mainAttachmentObject=is.pop(),rt(d),c.bind(c.$mainAttachmentObject),U.x=0,U.y=0;for(let e=0;a.length>e;)switch(a[e++]){case 0:f=Eo(f,t,a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],!!a[e++]);break;case 1:f=Oa(f,t,a[e++],a[e++],a[e++]);break;case 2:for(let t=0;t<20;++t)os[t]=a[e++];f=Ma(f,os);break;case 3:{let t=a[e++],n=a[e++],r=t*n,i=a.subarray(e,e+r);e+=r,f=Po(f,t,n,i,a[e++],a[e++],!!a[e++],!!a[e++],a[e++],a[e++])}break;case 4:{let t=a[e++],n=new Uint8Array(t);n.set(a.subarray(e,e+t)),e+=t,f=Ro(f,n,a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++])}break;case 5:f=wo(f,t,a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],!!a[e++],!!a[e++],!!a[e++]);break;case 6:f=So(f,t,a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],!!a[e++],!!a[e++]);break;case 7:{let n=a[e++],r=a[e++],i=a[e++],o=a.subarray(e,e+i);e+=i,i=a[e++];let s=a.subarray(e,e+i);e+=i,i=a[e++];let c=a.subarray(e,e+i);e+=i,f=Oo(f,t,n,r,o,s,c,a[e++],a[e++],a[e++],a[e++],a[e++],!!a[e++])}break;case 8:{let n=a[e++],r=a[e++],i=a[e++],o=a.subarray(e,e+i);e+=i,i=a[e++];let s=a.subarray(e,e+i);e+=i,i=a[e++];let c=a.subarray(e,e+i);e+=i,f=Ao(f,t,n,r,o,s,c,a[e++],a[e++],a[e++],a[e++],a[e++],!!a[e++])}}if(o){let e=W.get(o,`fTexture`);e&&H(e),W.set(o,`fKey`,s),W.set(o,`fTexture`,f)}if(f){let r=Math.sqrt(t[0]*t[0]+t[1]*t[1]),a=Math.sqrt(t[2]*t[2]+t[3]*t[3]),o=F,s=i[0]*(r/o),l=i[1]*(a/o);c.reset(),c.globalCompositeOperation=e,Bo(f,n,s+t[4],l+t[5])}}else f=Bi(0,0,d.width,d.height),c.$mainAttachmentObject=is.pop(),rt(d),c.bind(c.$mainAttachmentObject),f&&(c.reset(),c.globalCompositeOperation=e,Bo(f,n,t[4],t[5]),H(f));c.bind(c.$mainAttachmentObject)},cs=new Float32Array([1,1,1,1,0,0,0,0]),ls=e=>{c.drawArraysInstanced();let t=c.$mainAttachmentObject,n=t.texture;if(c.$mainAttachmentObject=is.pop(),rt(t,!1),n){let t=Dt();c.bind(t),c.beginNodeRendering(e),ta(`normal`);let r=t.height-e.y-e.h;c.setTransform(1,0,0,1,e.x,r);let i=Wi(!1);zo(i,cs,e.w,e.h),Kt(n),Li(i),c.endNodeRendering(),H(n)}c.bind(c.$mainAttachmentObject)},us=(e,t,n,r,i,a)=>{if(W.get(i,`fKey`)!==a)return;let o=W.get(i,`fTexture`);if(!o)return;let s=Math.sqrt(t[0]*t[0]+t[1]*t[1]),l=Math.sqrt(t[2]*t[2]+t[3]*t[3]),u=F,d=r[0]*(s/u),f=r[1]*(l/u);c.drawArraysInstanced(),c.reset(),c.globalCompositeOperation=e,Bo(o,n,d+t[4],f+t[5])},ds=e=>{let t=Rt(e.index),n=t[0],r=t[1],i=t[2],a=t[3];t[0]=Math.min(e.x,n),t[1]=Math.min(e.y,r),t[2]=Math.max(e.x+e.w+1,i),t[3]=Math.max(e.y+e.h+1,a)},fs=e=>{let t=`s${e?`y`:`n`}`;if(Cr.has(t))return Cr.get(t);let n=new Sr(Fr(e?9:0,!1,!1,e),Lr());return Cr.set(t,n),n},ps=(e,t)=>{let n=e.highp;n[0]=t[0],n[1]=t[1],n[2]=0,n[4]=t[2],n[5]=t[3],n[6]=0,n[8]=t[4],n[9]=t[5],n[10]=1,n[12]=t[6],n[13]=t[7],n[14]=0,n[16]=t[8],n[17]=t[9],n[18]=0,n[20]=t[10],n[21]=t[11],n[22]=1,n[3]=j,n[7]=M,n[11]=t[12],n[15]=t[13],n[19]=t[14],n[23]=t[15],n[24]=t[16],n[25]=t[17],n[26]=t[18],n[27]=t[19],n[28]=t[20],n[29]=t[21],n[30]=t[22],n[31]=t[23],n[32]=t[24],n[33]=t[25]},ms=0,hs=e=>{ms=e},gs=()=>{ms=0},_s=!0,vs=e=>{_s=e},ys=!1,bs=e=>{ys=e},xs=()=>{ms!==1&&(hs(1),i.stencilFunc(i.ALWAYS,0,255),i.stencilOpSeparate(i.FRONT,i.KEEP,i.KEEP,i.INCR_WRAP),i.stencilOpSeparate(i.BACK,i.KEEP,i.KEEP,i.DECR_WRAP)),_s&&(vs(!1),i.colorMask(!1,!1,!1,!1))},Ss=()=>{ms!==2&&(hs(2),i.stencilFunc(i.NOTEQUAL,0,255),i.stencilOp(i.KEEP,i.ZERO,i.ZERO)),_s||(vs(!0),i.colorMask(!0,!0,!0,!0))},Cs=()=>{ys||(bs(!0),i.enable(i.SAMPLE_ALPHA_TO_COVERAGE))},ws=()=>{ys&&(bs(!1),i.disable(i.SAMPLE_ALPHA_TO_COVERAGE))},Ts=(e,t,n,r)=>{xs();let i=!!r,a=Hr(i);r&&Ur(a,r),Cs(),Yr(a,e,t,n),ws(),Ss();let o=fs(i);r&&ps(o,r),Yr(o,e,t,n)},Es=(e,t,n,r,i)=>{let a=e.mediump,o=0;for(let e=n;e{let n=c.currentAttachmentObject,r=o[0],i=o[1],a=o[2],l=o[3];f();let u=t===0,p=e.length/5,m=fo(p),h=po(m);c.bind(h);let g=u?vo:yo;Vi();let _=go();for(let t=0;t`${e?`y`:`n`}${t?`y`:`n`}${t&&n?`y`:`n`}${`${r}`}`,As=e=>`\n vec2 focal = vec2(u_highp[${e}][1], 0.0);\n\n vec2 diff = coord - focal;\n float lenDiff = length(diff);\n vec2 dir = diff / lenDiff;\n float b = 2.0 * dot(dir, focal);\n float c = dot(focal, focal) - 1.0;\n float x = (-b + sqrt(max(b * b - 4.0 * c, 0.0))) * 0.5;\n\n float t = lenDiff / abs(x);`,js=()=>`float t = length(coord);`,Ms=(e,t)=>`\n float radius = u_highp[${e}][0];\n vec2 coord = p / radius;\n ${t?As(e):js()}\n`,Ns=e=>`\n vec2 a = u_highp[${e}].xy;\n vec2 b = u_highp[${e}].zw;\n\n vec2 ab = b - a;\n vec2 ap = p - a;\n\n float t = dot(ab, ap) / dot(ab, ab);`,Ps=(e,t,n,r,i)=>{let a=n?Ms(t,r):Ns(t),o;switch(i){case 0:o=`1.0 - abs(fract(t * 0.5) * 2.0 - 1.0)`;break;case 1:o=`fract(t)`;break;default:o=`clamp(t, 0.0, 1.0)`}return`#version 300 es\nprecision highp float;\n\nuniform sampler2D u_texture;\nuniform vec4 u_highp[${e}];\n\nin vec2 v_uv;\nout vec4 o_color;\n\nvoid main() {\n vec2 p = v_uv;\n ${a}\n t = ${o};\n o_color = texture(u_texture, vec2(t, 0.5));\n}`},Fs=(e,t,n,r)=>{let i=ks(r,e,t,n);if(Os.has(i))return Os.get(i);let a=(r?14:5)+1,o=a-1,s=new Sr(Fr(a,!0,!1,r),Ps(a,o,e,t,n));return Os.set(i,s),s},Is=(e,t,n,r,i=0,a=null,o=null)=>{let s=e.highp;s[0]=n[0],s[1]=n[1],s[2]=n[2],s[4]=n[3],s[5]=n[4],s[6]=n[5],s[8]=n[6],s[9]=n[7],s[10]=n[8],s[12]=r[0],s[13]=r[1],s[14]=r[2],s[16]=r[3],s[17]=r[4],s[18]=r[5],s[11]=r[6],s[15]=r[7],s[19]=r[8],s[3]=j,s[7]=M;let c=20;o&&(s[20]=o[0],s[21]=o[1],s[22]=0,s[24]=o[2],s[25]=o[3],s[26]=0,s[28]=o[4],s[29]=o[5],s[30]=1,s[32]=o[6],s[33]=o[7],s[34]=0,s[36]=o[8],s[37]=o[9],s[38]=0,s[40]=o[10],s[41]=o[11],s[42]=1,s[31]=o[12],s[35]=o[13],s[39]=o[14],s[43]=o[15],s[44]=o[16],s[45]=o[17],s[46]=o[18],s[47]=o[19],s[48]=o[20],s[49]=o[21],s[50]=o[22],s[51]=o[23],s[52]=o[24],s[53]=o[25],c=56),t===0?(s[c++]=a[0],s[c++]=a[1],s[c++]=a[2],s[c]=a[3]):(s[c++]=819.2,s[c]=g(i,-.975,.975,0))},Ls=()=>{gs(),vs(!0),bs(!1)},Rs=(e,t,n,r)=>{let a=Tn.shift(),o=Tn.shift(),s=Tn.shift(),l=Tn.shift();Ls(),h();let u=Ds(a,l);Kt(u),m(),i.stencilMask(255),xs();let d=!!r,f=Hr(d);r&&Ur(f,r),Cs(),Yr(f,e,t,n),ws(),Ss();let p=Fs(!1,!1,s,d),g=P(o),_=A(c.$matrix);Is(p,0,c.$matrix,_,0,g,r),C(g),k(_),Yr(p,e,t,n)},zs=(e,t,n,r)=>{let a=Tn.shift(),o=Tn.shift(),s=Tn.shift(),l=Tn.shift(),u=Tn.shift();Ls(),h();let d=Ds(a,l);Kt(d),m(),i.stencilMask(255),xs();let f=!!r,p=Hr(f);r&&Ur(p,r),Cs(),Yr(p,e,t,n),ws(),Ss(),c.save(),c.transform(o[0],o[1],o[2],o[3],o[4],o[5]);let g=c.$stack[c.$stack.length-1],_=A(c.$matrix),v=Fs(!0,!!u,s,f);Is(v,1,g,_,u,r),c.restore(),k(_),Yr(v,e,t,n)},Bs=new Map,Vs=(e,t)=>{let n=`b${e?`y`:`n`}${t?`y`:`n`}`;if(Bs.has(n))return Bs.get(n);let r=e?zr():Rr(),i=new Sr(Fr(t?14:5,!0,!1,t),r);return Bs.set(n,i),i},Hs=(e,t,n,r)=>{let i=e.highp,a=c.$stack[c.$stack.length-1];i[0]=a[0],i[1]=a[1],i[2]=a[2],i[4]=a[3],i[5]=a[4],i[6]=a[5],i[8]=a[6],i[9]=a[7],i[10]=a[8];let o=A(c.$matrix);i[12]=o[0],i[13]=o[1],i[14]=o[2],i[16]=o[3],i[17]=o[4],i[18]=o[5],i[11]=o[6],i[15]=o[7],i[19]=o[8],i[3]=j,i[7]=M,r&&(i[20]=r[0],i[21]=r[1],i[22]=0,i[24]=r[2],i[25]=r[3],i[26]=0,i[28]=r[4],i[29]=r[5],i[30]=1,i[32]=r[6],i[33]=r[7],i[34]=0,i[36]=r[8],i[37]=r[9],i[38]=0,i[40]=r[10],i[41]=r[11],i[42]=1,i[31]=r[12],i[35]=r[13],i[39]=r[14],i[43]=r[15],i[44]=r[16],i[45]=r[17],i[46]=r[18],i[47]=r[19],i[48]=r[20],i[49]=r[21],i[50]=r[22],i[51]=r[23],i[52]=r[24],i[53]=r[25]);let s=e.mediump;s[0]=t,s[1]=n},Us=(e,t,n,r)=>{xs();let i=!!r,a=Hr(i);r&&Ur(a,r),Cs(),Yr(a,e,t,n),ws();let o=ha.shift(),s=ha.shift(),l=ha.shift(),u=ha.shift(),d=ha.shift(),f=ha.shift(),p=ua(l,u,o,f);c.save(),c.transform(s[0],s[1],s[2],s[3],s[4],s[5]),Ss();let m=Vs(d,i);Hs(m,l,u,r),Yr(m,e,t,n),c.restore(),H(p)},Ws=()=>{let e=mr();m(),i.stencilMask(255),Ls();let t=0,n=null;for(let r=0;r{let n=zi(0,0,e,t);Kt(n),i.bindFramebuffer(i.FRAMEBUFFER,et),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,n.resource,0);let r=new Uint8Array(e*t*4),a=c.$mainAttachmentObject;r.byteLength>Gs&&(Gs=b(r.byteLength),i.bufferData(i.PIXEL_PACK_BUFFER,Gs,i.STREAM_READ)),i.readPixels(0,a.height-t,e,t,i.RGBA,i.UNSIGNED_BYTE,0);let o=i.fenceSync(i.SYNC_GPU_COMMANDS_COMPLETE,0);await new Promise(e=>{let t=()=>{if(i.clientWaitSync(o,i.SYNC_FLUSH_COMMANDS_BIT,0)===i.TIMEOUT_EXPIRED){requestAnimationFrame(t);return}return i.deleteSync(o),i.getBufferSubData(i.PIXEL_PACK_BUFFER,0,r),e()};t()}),i.bindFramebuffer(i.FRAMEBUFFER,He);for(let e=0;e0?e.float32Array4Pool.pop():new Float32Array(4)}static poolFloat32Array4(t){t.length===4&&e.float32Array4Pool.push(t)}};let Xs=null,Zs=e=>{Xs=e},Qs=()=>Ys.getFloat32Array4(),$s=e=>{Ys.poolFloat32Array4(e)},ec=(e,t,n,r)=>{let i=r.x-e.x,a=r.y-e.y,o=i*i+a*a;if(o<1e-10){let r=(t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y),i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y);return Math.max(r,i)}let s=(t.x-e.x)*a-(t.y-e.y)*i,c=s*s/o,l=(n.x-e.x)*a-(n.y-e.y)*i,u=l*l/o;return Math.max(c,u)},tc=(e,t,n,r)=>{let i={x:(e.x+t.x)*.5,y:(e.y+t.y)*.5},a={x:(t.x+n.x)*.5,y:(t.y+n.y)*.5},o={x:(n.x+r.x)*.5,y:(n.y+r.y)*.5},s={x:(i.x+a.x)*.5,y:(i.y+a.y)*.5},c={x:(a.x+o.x)*.5,y:(a.y+o.y)*.5},l={x:(s.x+c.x)*.5,y:(s.y+c.y)*.5};return{first:[e,i,s,l],second:[l,c,o,r]}},nc=(e,t,n,r,i=.25)=>{let a=[],o=(e,t,n,r,s)=>{if(ec(e,t,n,r)<=i||s>=8){let e={x:(t.x+n.x)*.5,y:(t.y+n.y)*.5};a.push({ctrl:e,end:r});return}let c=tc(e,t,n,r);o(c.first[0],c.first[1],c.first[2],c.first[3],s+1),o(c.second[0],c.second[1],c.second[2],c.second[3],s+1)};return o(e,t,n,r,0),a};var rc=class{$currentPath;$vertices;$currentX;$currentY;$startX;$startY;constructor(){this.$currentPath=[],this.$vertices=[],this.$currentX=0,this.$currentY=0,this.$startX=0,this.$startY=0}beginPath(){this.$currentPath=[],this.$vertices=[],this.$currentX=0,this.$currentY=0,this.$startX=0,this.$startY=0}moveTo(e,t){this.$currentPath.length>=6&&this.$vertices.push(this.$currentPath),this.$currentPath=[e,t,!1],this.$currentX=e,this.$currentY=t,this.$startX=e,this.$startY=t}lineTo(e,t){(e!==this.$currentX||t!==this.$currentY)&&(this.$currentPath.push(e,t,!1),this.$currentX=e,this.$currentY=t)}quadraticCurveTo(e,t,n,r){this.$currentPath.push(e,t,!0),this.$currentPath.push(n,r,!1),this.$currentX=n,this.$currentY=r}$flatnessThreshold=.25;bezierCurveTo(e,t,n,r,i,a){let o={x:this.$currentX,y:this.$currentY},s=nc(o,{x:e,y:t},{x:n,y:r},{x:i,y:a},this.$flatnessThreshold);for(let e of s)this.$currentPath.push(e.ctrl.x,e.ctrl.y,!0),this.$currentPath.push(e.end.x,e.end.y,!1);this.$currentX=i,this.$currentY=a}arc(e,t,n){let r=n,i=n*.5522847498307936;this.bezierCurveTo(e+r,t+i,e+i,t+r,e,t+r),this.bezierCurveTo(e-i,t+r,e-r,t+i,e-r,t),this.bezierCurveTo(e-r,t-i,e-i,t-r,e,t-r),this.bezierCurveTo(e+i,t-r,e+r,t-i,e+r,t);let a=this.$currentPath.length;a>=3&&(this.$currentPath[a-3]=this.$startX,this.$currentPath[a-2]=this.$startY),this.$currentX=this.$startX,this.$currentY=this.$startY}closePath(){this.$currentPath.length>=3&&(this.$currentX!==this.$startX||this.$currentY!==this.$startY)&&this.$currentPath.push(this.$startX,this.$startY,!1)}get $getVertices(){let e=[...this.$vertices];return this.$currentPath.length>=9&&e.push(this.$currentPath),e}getVerticesForStroke(){let e=[...this.$vertices];return this.$currentPath.length>=6&&e.push(this.$currentPath),e}reset(){this.$currentPath=[],this.$vertices=[],this.$currentX=0,this.$currentY=0,this.$startX=0,this.$startY=0}};let ic=(e,t,n,r)=>new Float32Array([e,t,0,0,e+n,t,1,0,e,t+r,0,1,e+n,t,1,0,e+n,t+r,1,1,e,t+r,0,1]),ac=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1),oc=(e,t,n,r)=>{let i=ac(n),a=t.get(i),o;return a&&a.length>0?(o=a.pop(),r&&e.queue.writeBuffer(o,0,r.buffer,r.byteOffset,r.byteLength)):r?(o=e.createBuffer({size:i,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(o.getMappedRange()).set(r),o.unmap()):o=e.createBuffer({size:i,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),o},sc=(e,t,n)=>{let r=Math.ceil(n/16)*16,i=t.get(r);return i&&i.length>0?i.pop():e.createBuffer({size:r,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST})},cc=(e,t)=>{let n=t.size,r=e.get(n);if(r||(r=[],e.set(n,r)),r.length>=32){t.destroy();return}r.push(t)},lc=(e,t)=>{let n=t.size,r=e.get(n);if(r||(r=[],e.set(n,r)),r.length>=32){t.destroy();return}r.push(t)},uc=(e,t)=>e.createBuffer({size:t.size,usage:t.usage|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.VERTEX,label:t.label||`storage_buffer`}),dc=(e,t,n,r)=>{let i=Math.ceil(n/256)*256,a=null,o=1/0;for(let e of t)if(!e.inUse&&e.size>=i){let t=e.size-i;t{for(let r=e.length-1;r>=0;r--){let i=e[r];!i.inUse&&t-i.lastUsedFrame>n&&(i.buffer.destroy(),e.splice(r,1))}},pc=(e,t,n,r=0,i=0)=>{let a=new Uint32Array([t,n,r,i]),o=e.createBuffer({size:a.byteLength,usage:GPUBufferUsage.INDIRECT|GPUBufferUsage.COPY_DST,mappedAtCreation:!0,label:`indirect_buffer`});return new Uint32Array(o.getMappedRange()).set(a),o.unmap(),o},mc=(e,t,n,r,i=0,a=0)=>{let o=new Uint32Array([n,r,i,a]);e.queue.writeBuffer(t,0,o)};var hc=class{device;buffer=null;offset=0;capacity;alignment=256;pendingDestroyBuffers=[];stagingBuffer;stagingFloat32;dirtyEnd=0;constructor(e,t=65536){this.device=e,this.capacity=t,this.stagingBuffer=new ArrayBuffer(t),this.stagingFloat32=new Float32Array(this.stagingBuffer)}resetFrame(){this.offset=0,this.dirtyEnd=0;for(let e of this.pendingDestroyBuffers)e.destroy();this.pendingDestroyBuffers.length=0}getBuffer(){return this.buffer||=this.device.createBuffer({size:this.capacity,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.buffer}allocate(e){this.buffer||this.getBuffer();let t=this.offset,n=e.byteLength;if(t+n>this.capacity){this.flush(),this.capacity*=2;let e=this.buffer;this.buffer=this.device.createBuffer({size:this.capacity,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),e&&this.pendingDestroyBuffers.push(e),this.stagingBuffer=new ArrayBuffer(this.capacity),this.stagingFloat32=new Float32Array(this.stagingBuffer)}this.stagingFloat32.set(e,t/4);let r=t+n;return r>this.dirtyEnd&&(this.dirtyEnd=r),this.offset=t+Math.ceil(n/this.alignment)*this.alignment,t}flush(){this.dirtyEnd>0&&this.buffer&&(this.device.queue.writeBuffer(this.buffer,0,this.stagingBuffer,0,this.dirtyEnd),this.dirtyEnd=0)}dispose(){this.buffer&&=(this.buffer.destroy(),null);for(let e of this.pendingDestroyBuffers)e.destroy();this.pendingDestroyBuffers.length=0}},gc=class{device;vertexBufferBuckets;uniformBufferBuckets;storageBufferPool;indirectBufferPool;frameIndirectBuffers;frameNumber;unitRectBuffer;frameVertexPoolBuffers;frameUniformPoolBuffers;dynamicUniform;constructor(e){this.device=e,this.vertexBufferBuckets=new Map,this.uniformBufferBuckets=new Map,this.storageBufferPool=[],this.indirectBufferPool=[],this.frameIndirectBuffers=[],this.frameNumber=0,this.unitRectBuffer=null,this.frameVertexPoolBuffers=[],this.frameUniformPoolBuffers=[],this.dynamicUniform=new hc(e)}createRectVertices(e,t,n,r){return ic(e,t,n,r)}acquireVertexBuffer(e,t){let n=oc(this.device,this.vertexBufferBuckets,e,t);return this.frameVertexPoolBuffers.push(n),n}acquireUniformBuffer(e){let t=sc(this.device,this.uniformBufferBuckets,e);return this.frameUniformPoolBuffers.push(t),t}acquireAndWriteUniformBuffer(e,t){let n=t??e.byteLength,r=this.acquireUniformBuffer(n);return this.device.queue.writeBuffer(r,0,e.buffer,e.byteOffset,n),r}dispose(){for(let e of this.vertexBufferBuckets.values())for(let t of e)t.destroy();this.vertexBufferBuckets.clear();for(let e of this.uniformBufferBuckets.values())for(let t of e)t.destroy();this.uniformBufferBuckets.clear();for(let e of this.storageBufferPool)e.buffer.destroy();this.storageBufferPool=[];for(let e of this.indirectBufferPool)e.destroy();this.indirectBufferPool=[];for(let e of this.frameIndirectBuffers)e.destroy();this.frameIndirectBuffers=[],this.unitRectBuffer&&=(this.unitRectBuffer.destroy(),null),this.frameVertexPoolBuffers.length=0,this.frameUniformPoolBuffers.length=0,this.dynamicUniform.dispose()}clearFrameBuffers(){for(let e of this.frameVertexPoolBuffers)cc(this.vertexBufferBuckets,e);this.frameVertexPoolBuffers.length=0;for(let e of this.frameUniformPoolBuffers)lc(this.uniformBufferBuckets,e);this.frameUniformPoolBuffers.length=0;for(let e of this.frameIndirectBuffers)this.indirectBufferPool.push(e);this.frameIndirectBuffers.length=0,this.releaseAllStorageBuffers(),this.dynamicUniform.resetFrame(),this.frameNumber++,this.frameNumber%60==0&&fc(this.storageBufferPool,this.frameNumber)}releaseAllStorageBuffers(){for(let e of this.storageBufferPool)e.inUse=!1}acquireStorageBuffer(e){return dc(this.device,this.storageBufferPool,e,this.frameNumber)}writeStorageBuffer(e,t){this.device.queue.writeBuffer(e,0,t.buffer,t.byteOffset,t.byteLength)}createIndirectBuffer(e,t,n=0,r=0){let i=this.indirectBufferPool.pop();return i?mc(this.device,i,e,t,n,r):i=pc(this.device,e,t,n,r),this.frameIndirectBuffers.push(i),i}getUnitRectBuffer(){if(!this.unitRectBuffer){let e=this.createRectVertices(0,0,1,1);this.unitRectBuffer=this.device.createBuffer({size:e.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.unitRectBuffer.getMappedRange()).set(e),this.unitRectBuffer.unmap()}return this.unitRectBuffer}};let _c=(e,t)=>{let n=e.createSampler({magFilter:`linear`,minFilter:`linear`,mipmapFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});t.set(`linear`,n);let r=e.createSampler({magFilter:`nearest`,minFilter:`nearest`,mipmapFilter:`nearest`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});t.set(`nearest`,r);let i=e.createSampler({magFilter:`nearest`,minFilter:`linear`,mipmapFilter:`nearest`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});t.set(`atlas_instanced_sampler`,i);let a=e.createSampler({magFilter:`linear`,minFilter:`linear`,mipmapFilter:`linear`,addressModeU:`repeat`,addressModeV:`repeat`});t.set(`repeat`,a)};var vc=class{device;textures;samplers;constructor(e){this.device=e,this.textures=new Map,this.samplers=new Map,_c(e,this.samplers)}createTexture(e,t,n,r=`rgba8unorm`){let i=this.device.createTexture({size:{width:t,height:n},format:r,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return this.textures.set(e,i),i}getTexture(e){return this.textures.get(e)}createSampler(e,t=!0){let n=this.samplers.get(e);if(n)return n;let r=this.device.createSampler({magFilter:t?`linear`:`nearest`,minFilter:t?`linear`:`nearest`,mipmapFilter:t?`linear`:`nearest`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});return this.samplers.set(e,r),r}dispose(){for(let e of this.textures.values())e.destroy();this.textures.clear(),this.samplers.clear()}};let yc=(e,t,n,r,i,a,o,s,c)=>{let l=r===`atlas`||r.startsWith(`atlas_`),u=l||r.startsWith(`temp_`)?`rgba8unorm`:t,d=o||l&&!0,f=d?4:1,p=e.createTexture({size:{width:i,height:a},format:u,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.COPY_DST}),m=p.createView(),h={id:c.textureId++,resource:p,view:m,width:i,height:a,area:i*a,smooth:!0},g=null;if(d){let t=e.createTexture({size:{width:i,height:a},format:u,sampleCount:f,usage:GPUTextureUsage.RENDER_ATTACHMENT}),n=t.createView();g={id:c.textureId++,resource:t,view:n,width:i,height:a,area:i*a,smooth:!0}}let _=null,v=null;if(l||r===`main`||s){let t=e.createTexture({size:{width:i,height:a},format:`stencil8`,usage:GPUTextureUsage.RENDER_ATTACHMENT}),n=t.createView();if(_={id:c.stencilId++,resource:t,view:n,width:i,height:a,area:i*a,dirty:!1},d){let t=e.createTexture({size:{width:i,height:a},format:`stencil8`,sampleCount:f,usage:GPUTextureUsage.RENDER_ATTACHMENT}),n=t.createView();v={id:c.stencilId++,resource:t,view:n,width:i,height:a,area:i*a,dirty:!1}}}let y={id:c.nextId++,width:i,height:a,clipLevel:0,msaa:d,mask:s,color:null,texture:h,stencil:_,msaaTexture:g,msaaStencil:v};return n.set(r,y),y},bc=(e,t,n)=>{for(let[r,i]of e.entries())if(i.id===n.id){e.delete(r),t.push(i);break}},xc={r:0,g:0,b:0,a:0},Sc={view:null,clearValue:xc,loadOp:`clear`,storeOp:`store`},Cc={colorAttachments:[Sc]},wc=(e,t=0,n=0,r=0,i=0,a=`clear`,o=null)=>(Sc.view=e,xc.r=t,xc.g=n,xc.b=r,xc.a=i,Sc.loadOp=a,Sc.resolveTarget=o??void 0,Cc),Tc={view:null,clearValue:{r:0,g:0,b:0,a:0},loadOp:`load`,storeOp:`store`},Ec={view:null,stencilClearValue:0,stencilLoadOp:`clear`,stencilStoreOp:`store`},Dc={colorAttachments:[Tc],depthStencilAttachment:Ec},Oc=(e,t,n=`load`,r=`clear`,i=null)=>(Tc.view=e,Tc.loadOp=n,Tc.resolveTarget=i??void 0,Ec.view=t,Ec.stencilLoadOp=r,Dc),kc=(e,t,n)=>`${e}_${t}_${n}`,Ac=(e,t,n,r,i,a,o,s,c)=>{let l=kc(n,r,i),u=t.get(l);if(u)for(let e=0;e=s){let e=1/0,n=``,r=-1;for(let[i,a]of t)for(let t=0;t=0){let e=t.get(n);e[r].texture.destroy(),e.splice(r,1),e.length===0&&t.delete(n),c[0]--}}let d=e.createTexture({size:{width:n,height:r},format:i,usage:a}),f={texture:d,width:n,height:r,format:i,lastUsedFrame:o,inUse:!0};return u?u.push(f):t.set(l,[f]),c[0]++,d},jc=(e,t,n)=>{for(let r of e.values())for(let e=0;e{let i=t-n;for(let[t,n]of e){for(let e=n.length-1;e>=0;e--){let t=n[e];!t.inUse&&t.lastUsedFrame{let t=Pc.get(e);return t||(t=e.createView(),Pc.set(e,t)),t},Ic=new Map,Lc=0,Rc=new Map,zc=0,Bc=(e,t,n)=>{let r=`${t}_${n}`,i=Ic.get(r);return i&&i.length>0?(Lc--,i.pop()):e.createTexture({size:{width:t,height:n},format:`rgba8unorm`,usage:6})},Vc=e=>{let t=`${e.width}_${e.height}`,n=Ic.get(t);if(n||(n=[],Ic.set(t,n)),n.length>=32||Lc>=256){e.destroy();return}n.push(e),Lc++},Hc=(e,t,n)=>{let r=`${t}_${n}`,i=Rc.get(r);return i&&i.length>0?(zc--,i.pop()):e.createTexture({size:{width:t,height:n},format:`rgba8unorm`,usage:22})},Uc=e=>{let t=`${e.width}_${e.height}`,n=Rc.get(t);if(n||(n=[],Rc.set(t,n)),n.length>=32||zc>=256){e.destroy();return}n.push(e),zc++},Wc=()=>{for(let[,e]of Ic)for(let t of e)t.destroy();Ic.clear(),Lc=0;for(let[,e]of Rc)for(let t of e)t.destroy();Rc.clear(),zc=0};var Gc=class{device;format;attachments;currentAttachment;idCounter;texturePool;pendingReleases=[];constructor(e,t){this.device=e,this.format=t,this.attachments=new Map,this.currentAttachment=null,this.idCounter={nextId:1,textureId:1,stencilId:1},this.texturePool=new Nc(e)}beginFrame(){this.texturePool.beginFrame()}createAttachment(e,t,n,r=!1,i=!1){return yc(this.device,this.format,this.attachments,e,t,n,r,i,this.idCounter)}getAttachment(e){return this.attachments.get(e)}setCurrentAttachment(e){this.currentAttachment=e}getCurrentAttachment(){return this.currentAttachment}createRenderPassDescriptor(e,t=0,n=0,r=0,i=0,a=`clear`,o=null){return wc(e,t,n,r,i,a,o)}createStencilRenderPassDescriptor(e,t,n=`load`,r=`clear`,i=null){return Oc(e,t,n,r,i)}destroyAttachment(e){let t=this.attachments.get(e);t&&(t.texture&&t.texture.resource.destroy(),t.stencil&&t.stencil.resource.destroy(),this.attachments.delete(e))}createTemporaryAttachment(e,t){let n=`temp_${this.idCounter.nextId}`,r=GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.COPY_DST|GPUTextureUsage.STORAGE_BINDING,i=this.texturePool.acquire(e,t,`rgba8unorm`,r),a=Fc(i),o={id:this.idCounter.textureId++,resource:i,view:a,width:e,height:t,area:e*t,smooth:!0},s={id:this.idCounter.nextId++,width:e,height:t,clipLevel:0,msaa:!1,mask:!1,color:null,texture:o,stencil:null,msaaTexture:null,msaaStencil:null};return this.attachments.set(n,s),s}releaseTemporaryAttachment(e){bc(this.attachments,this.pendingReleases,e)}flushPendingReleases(){for(let e of this.pendingReleases)e.texture&&this.texturePool.release(e.texture.resource),e.msaaTexture&&e.msaaTexture.resource.destroy(),e.stencil&&e.stencil.resource.destroy(),e.msaaStencil&&e.msaaStencil.resource.destroy();this.pendingReleases=[]}dispose(){for(let e of this.attachments.values())e.texture&&e.texture.resource.destroy(),e.stencil&&e.stencil.resource.destroy();this.attachments.clear(),this.currentAttachment=null,this.texturePool.dispose()}};let Kc=`\nfn isInside(uv: vec2) -> f32 {\n let s = step(vec2(0.0), uv) * step(uv, vec2(1.0));\n return s.x * s.y;\n}`,qc=`\n const vertices = array, 6>(\n vec2(0.0, 0.0),\n vec2(1.0, 0.0),\n vec2(0.0, 1.0),\n vec2(0.0, 1.0),\n vec2(1.0, 0.0),\n vec2(1.0, 1.0)\n );`,Jc=`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n}`,Yc=e=>`\n${Jc}\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n\n const positions = array, 6>(\n vec2(-1.0, -1.0),\n vec2( 1.0, -1.0),\n vec2(-1.0, 1.0),\n vec2(-1.0, 1.0),\n vec2( 1.0, -1.0),\n vec2( 1.0, 1.0)\n );\n var texCoords = array, 6>(\n vec2(0.0, ${e?`1.0`:`0.0`}),\n vec2(1.0, ${e?`1.0`:`0.0`}),\n vec2(0.0, ${e?`0.0`:`1.0`}),\n vec2(0.0, ${e?`0.0`:`1.0`}),\n vec2(1.0, ${e?`1.0`:`0.0`}),\n vec2(1.0, ${e?`0.0`:`1.0`})\n );\n output.position = vec4(positions[vertexIndex], 0.0, 1.0);\n output.texCoord = texCoords[vertexIndex];\n return output;\n}\n`,Xc=Yc(!0),Zc=Yc(!1),Qc=Yc(!1),$c=`\nstruct PositionUniforms {\n offset: vec2,\n size: vec2,\n viewport: vec2,\n padding: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n}\n\n@group(0) @binding(0) var uniforms: PositionUniforms;\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n${qc}\n let vertex = vertices[vertexIndex];\n output.texCoord = vec2(vertex.x, 1.0 - vertex.y);\n var position = vertex * uniforms.size + uniforms.offset;\n position = position / uniforms.viewport;\n position = position * 2.0 - 1.0;\n output.position = vec4(position.x, -position.y, 0.0, 1.0);\n return output;\n}\n`,el=`\nstruct BitmapSyncUniforms {\n nodeRect: vec4,\n textureSize: vec2,\n padding: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n}\n\n@group(0) @binding(0) var uniforms: BitmapSyncUniforms;\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n${qc}\n let vertex = vertices[vertexIndex];\n let pixelPos = vec2(\n uniforms.nodeRect.x + vertex.x * uniforms.nodeRect.z,\n uniforms.nodeRect.y + vertex.y * uniforms.nodeRect.w\n );\n let ndc = pixelPos / uniforms.textureSize * 2.0 - 1.0;\n output.position = vec4(ndc.x, -ndc.y, 0.0, 1.0);\n output.texCoord = pixelPos / uniforms.textureSize;\n return output;\n}\n`,tl=e=>`\n\nstruct ScaleUniforms {\n matrix: vec4,\n translate: vec2,\n srcSize: vec2,\n dstSize: vec2,\n padding: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n}\n\n@group(0) @binding(0) var uniforms: ScaleUniforms;\n\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n${qc}\n let vertex = vertices[vertexIndex];\n output.texCoord = ${e?`vec2(vertex.x, 1.0 - vertex.y)`:`vertex`};\n\n var pos = vertex * uniforms.srcSize;\n let a = uniforms.matrix.x;\n let b = uniforms.matrix.y;\n let c = uniforms.matrix.z;\n let d = uniforms.matrix.w;\n let tx = uniforms.translate.x;\n let ty = uniforms.translate.y;\n let transformedX = pos.x * a + pos.y * c + tx;\n let transformedY = pos.x * b + pos.y * d + ty;\n var position = vec2(transformedX, transformedY) / uniforms.dstSize;\n position = position * 2.0 - 1.0;\n output.position = vec4(position.x, -position.y, 0.0, 1.0);\n\n return output;\n}\n`,nl=tl(!1),rl=tl(!0),il=tl(!1),al=e=>`\nstruct PositionUniforms {\n offset: vec2,\n size: vec2,\n viewport: vec2,\n padding: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n}\n\n@group(0) @binding(0) var uniforms: PositionUniforms;\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n${qc}\n let vertex = vertices[vertexIndex];\n output.texCoord = ${e?`vec2(vertex.x, 1.0 - vertex.y)`:`vertex`};\n var position = vertex * uniforms.size + uniforms.offset;\n position = position / uniforms.viewport;\n position = position * 2.0 - 1.0;\n output.position = vec4(position.x, -position.y, 0.0, 1.0);\n return output;\n}\n`,ol=al(!1),sl=al(!0),cl=`\nstruct GradientUniforms {\n inverseMatrix: mat3x3,\n gradientType: f32,\n focal: f32,\n spread: f32,\n radius: f32,\n linearPoints: vec4,\n}\n\n@group(0) @binding(0) var gradient: GradientUniforms;\n@group(0) @binding(1) var gradientSampler: sampler;\n@group(0) @binding(2) var gradientTexture: texture_2d;\n\noverride GRADIENT_TYPE: u32 = 0u;\noverride SPREAD_MODE: u32 = 2u;\n\nfn applySpread(t: f32) -> f32 {\n if (SPREAD_MODE == 0u) {\n return 1.0 - abs(fract(t * 0.5) * 2.0 - 1.0);\n } else if (SPREAD_MODE == 1u) {\n return fract(t);\n } else {\n return clamp(t, 0.0, 1.0);\n }\n}\n`,ll=`\n var t: f32;\n if (GRADIENT_TYPE == 0u) {\n let a = gradient.linearPoints.xy;\n let b = gradient.linearPoints.zw;\n let ab = b - a;\n let ap = p - a;\n let dotAB = dot(ab, ab);\n if (dotAB < 0.0001) {\n t = 0.0;\n } else {\n t = dot(ab, ap) / dotAB;\n }\n } else {\n let r = gradient.radius;\n let coord = p / r;\n let focalRatio = gradient.focal;\n\n if (abs(focalRatio) < 0.001) {\n t = length(coord);\n } else {\n let focal = vec2(focalRatio, 0.0);\n let diff = coord - focal;\n let lenDiff = length(diff);\n\n if (lenDiff < 0.0001) {\n t = 0.0;\n } else {\n let dir = diff / lenDiff;\n\n // Solve quadratic equation for unit circle intersection (a=1 since dir is normalized)\n let b_coef = 2.0 * dot(dir, focal);\n let c_coef = dot(focal, focal) - 1.0;\n let discriminant = b_coef * b_coef - 4.0 * c_coef;\n let x = (-b_coef + sqrt(max(discriminant, 0.0))) * 0.5;\n t = lenDiff / abs(x);\n }\n }\n }\n t = applySpread(t);\n let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2(t, 0.5), 0);\n`,ul=`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) v_uv: vec2,\n @location(1) bezier: vec2,\n @location(2) color: vec4,\n}\n${cl}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let p = input.v_uv;\n${ll}\n let result = gradientColor * input.color;\n return vec4(result.rgb * result.a, result.a);\n}\n`,dl=`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) v_uv: vec2,\n @location(1) bezier: vec2,\n @location(2) color: vec4,\n}\n${cl}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let p = input.v_uv;\n${ll}\n return vec4(gradientColor.rgb * gradientColor.a, gradientColor.a);\n}\n`,fl=`\n${Jc}\n\nstruct CopyUniforms {\n scale: vec2,\n offset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n return textureSampleLevel(inputTexture, textureSampler, uv, 0);\n}\n`,pl=`\n${Jc}\n\nstruct CopyUniforms {\n scale: vec2,\n offset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let uv = (input.texCoord - uniforms.offset) * uniforms.scale;\n let clampedUv = clamp(uv, vec2(0.0), vec2(1.0));\n let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);\n let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;\n return select(vec4(0.0, 0.0, 0.0, 0.0), color, inBounds);\n}\n`,ml=`\n${Jc}\n\nstruct CopyUniforms {\n scale: vec2,\n offset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n let clampedUv = clamp(uv, vec2(0.0), vec2(1.0));\n let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);\n let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;\n return select(vec4(0.0, 0.0, 0.0, 0.0), color, inBounds);\n}\n`,hl=`\n${Jc}\n\nstruct ColorTransformUniforms {\n mul: vec4,\n add: vec4,\n}\n\n@group(0) @binding(0) var ct: ColorTransformUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n\n color = vec4(color.rgb / max(vec3(0.0001), vec3(color.a)), color.a);\n color = clamp(color * ct.mul + ct.add, vec4(0.0), vec4(1.0));\n color = vec4(color.rgb * color.a, color.a);\n\n return color;\n}\n`,gl=`\n${Jc}\n\nstruct YFlipCTUniforms {\n scale: vec2,\n offset: vec2,\n mul: vec4,\n add: vec4,\n}\n\n@group(0) @binding(0) var uniforms: YFlipCTUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n var color = textureSampleLevel(inputTexture, textureSampler, uv, 0);\n\n color = vec4(color.rgb / max(vec3(0.0001), vec3(color.a)), color.a);\n color = clamp(color * uniforms.mul + uniforms.add, vec4(0.0), vec4(1.0));\n color = vec4(color.rgb * color.a, color.a);\n\n return color;\n}\n`,_l=`\n${Jc}\n\nstruct ColorMatrixUniforms {\n matrix: mat4x4,\n offset: vec4,\n}\n\n@group(0) @binding(0) var uniforms: ColorMatrixUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n\n color = vec4(color.rgb / max(vec3(0.0001), vec3(color.a)), color.a);\n var result = uniforms.matrix * color + uniforms.offset;\n result = clamp(result, vec4(0.0), vec4(1.0));\n result = vec4(result.rgb * result.a, result.a);\n\n return result;\n}\n`,vl=`\n${Jc}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n}\n`,yl=`\n${Jc}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n}\n`,bl=`\n${Jc}\n\noverride IS_INNER: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GlowUniforms {\n color: vec4,\n baseScale: vec2,\n baseOffset: vec2,\n blurScale: vec2,\n blurOffset: vec2,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var uniforms: GlowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d;\n@group(0) @binding(3) var baseTexture: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let baseColor = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blurColor = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n var rawAlpha = blurColor.a;\n if (IS_INNER == 1u) {\n rawAlpha = 1.0 - rawAlpha;\n }\n let glowAlpha = clamp(rawAlpha * uniforms.strength, 0.0, 1.0);\n let glowColor = vec4(uniforms.color.rgb * glowAlpha, uniforms.color.a * glowAlpha);\n if (IS_INNER == 1u) {\n let innerGlow = glowColor * baseColor.a;\n if (IS_KNOCKOUT == 1u) {\n return innerGlow;\n } else {\n return innerGlow + baseColor * (1.0 - glowColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n return glowColor * (1.0 - baseColor.a);\n } else {\n return baseColor + glowColor * (1.0 - baseColor.a);\n }\n }\n}\n`,xl=`\n${Jc}\n\noverride IS_INNER: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\noverride IS_HIDE_OBJECT: u32 = 0u;\n\nstruct DropShadowUniforms {\n color: vec4,\n baseScale: vec2,\n baseOffset: vec2,\n blurScale: vec2,\n blurOffset: vec2,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var uniforms: DropShadowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d;\n@group(0) @binding(3) var baseTexture: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let baseColor = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n var rawAlpha = blur.a;\n if (IS_INNER == 1u) {\n rawAlpha = 1.0 - rawAlpha;\n }\n let shadowAlpha = clamp(rawAlpha * uniforms.strength, 0.0, 1.0);\n let shadowColor = vec4(uniforms.color.rgb * shadowAlpha, uniforms.color.a * shadowAlpha);\n\n if (IS_INNER == 1u) {\n let innerShadow = shadowColor * baseColor.a;\n if (IS_KNOCKOUT == 1u) {\n return innerShadow;\n } else {\n return innerShadow + baseColor * (1.0 - shadowColor.a);\n }\n } else {\n if (IS_HIDE_OBJECT == 1u) {\n return shadowColor;\n } else if (IS_KNOCKOUT == 1u) {\n return shadowColor * (1.0 - baseColor.a);\n } else {\n return shadowColor * (1.0 - baseColor.a) + baseColor;\n }\n }\n}\n`,Sl=`\n${Jc}\n\noverride GLOW_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GradientGlowUniforms {\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2,\n baseOffset: vec2,\n blurScale: vec2,\n blurOffset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: GradientGlowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d;\n@group(0) @binding(3) var baseTexture: texture_2d;\n@group(0) @binding(4) var gradientLUT: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n var blur = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n blur.a = clamp(blur.a * uniforms.strength, 0.0, 1.0);\n let glowColor = textureSampleLevel(gradientLUT, textureSampler, vec2(blur.a, 0.5), 0);\n var result: vec4;\n if (GLOW_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor;\n } else {\n result = base - base * glowColor.a + glowColor;\n }\n } else if (GLOW_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor * base.a;\n } else {\n result = glowColor * base.a + base * (1.0 - glowColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor - glowColor * base.a;\n } else {\n result = base + glowColor - glowColor * base.a;\n }\n }\n return result;\n}\n`,Cl=`\n${Jc}\n\noverride BEVEL_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GradientBevelUniforms {\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2,\n baseOffset: vec2,\n blurScale: vec2,\n blurOffset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: GradientBevelUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d;\n@group(0) @binding(3) var baseTexture: texture_2d;\n@group(0) @binding(4) var gradientLUT: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur1 = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n let mirrorUV = (1.0 - input.texCoord) * uniforms.blurScale - uniforms.blurOffset;\n let blur2 = textureSampleLevel(blurTexture, textureSampler, mirrorUV, 0) * isInside(mirrorUV);\n\n var highlightAlpha = blur1.a - blur2.a;\n var shadowAlpha = blur2.a - blur1.a;\n highlightAlpha = clamp(highlightAlpha * uniforms.strength, 0.0, 1.0);\n shadowAlpha = clamp(shadowAlpha * uniforms.strength, 0.0, 1.0);\n\n let lutCoord = 0.5019607843137255 - 0.5019607843137255 * shadowAlpha + 0.4980392156862745 * highlightAlpha;\n let bevelColor = textureSampleLevel(gradientLUT, textureSampler, vec2(lutCoord, 0.5), 0);\n\n var result: vec4;\n if (BEVEL_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor;\n } else {\n result = base - base * bevelColor.a + bevelColor;\n }\n } else if (BEVEL_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor * base.a;\n } else {\n result = bevelColor * base.a + base * (1.0 - bevelColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor - bevelColor * base.a;\n } else {\n result = base + bevelColor - bevelColor * base.a;\n }\n }\n\n return result;\n}\n`,wl=`\n${Jc}\n\noverride BEVEL_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct BevelUniforms {\n highlightColor: vec4,\n shadowColor: vec4,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2,\n baseOffset: vec2,\n blurScale: vec2,\n blurOffset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: BevelUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d;\n@group(0) @binding(3) var baseTexture: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur1 = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n let mirrorUV = (1.0 - input.texCoord) * uniforms.blurScale - uniforms.blurOffset;\n let blur2 = textureSampleLevel(blurTexture, textureSampler, mirrorUV, 0) * isInside(mirrorUV);\n\n var highlightAlpha = blur1.a - blur2.a;\n var shadowAlpha = blur2.a - blur1.a;\n highlightAlpha = clamp(highlightAlpha * uniforms.strength, 0.0, 1.0);\n shadowAlpha = clamp(shadowAlpha * uniforms.strength, 0.0, 1.0);\n\n let bevelColor = uniforms.highlightColor * highlightAlpha + uniforms.shadowColor * shadowAlpha;\n var result: vec4;\n if (BEVEL_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor;\n } else {\n result = base - base * bevelColor.a + bevelColor;\n }\n } else if (BEVEL_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor * base.a;\n } else {\n result = bevelColor * base.a + base * (1.0 - bevelColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor - bevelColor * base.a;\n } else {\n result = base + bevelColor - bevelColor * base.a;\n }\n }\n\n return result;\n}\n`,Tl=`\n${Jc}\n\nstruct BevelBaseUniforms {\n offset: vec2,\n _padding: vec2,\n}\n\n@group(0) @binding(0) var uniforms: BevelBaseUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var sourceTexture: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let original = textureSampleLevel(sourceTexture, textureSampler, input.texCoord, 0);\n let shiftedUV = input.texCoord - uniforms.offset;\n let shifted = textureSampleLevel(sourceTexture, textureSampler, shiftedUV, 0) * isInside(shiftedUV);\n return original * (1.0 - shifted.a);\n}\n`;var G=class{static getFillVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n @location(1) color: vec4,\n}\n\nstruct FillUniforms {\n color: vec4,\n matrix0: vec4,\n matrix1: vec4,\n matrix2: vec4,\n}\n\n@group(0) @binding(0) var uniforms: FillUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);\n let transformed = matrix * vec3(input.position, 1.0);\n let ndc = transformed.xy * 2.0 - 1.0;\n output.position = vec4(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.bezier = input.bezier;\n output.color = uniforms.color;\n return output;\n}\n`}static getFillFragmentShader(){return`\nstruct FragmentInput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n @location(1) color: vec4,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4 {\n let f_val = input.bezier.x * input.bezier.x - input.bezier.y;\n let dx = dpdx(f_val);\n let dy = dpdy(f_val);\n\n if (input.bezier.x == 0.5 && input.bezier.y == 0.5) {\n return vec4(input.color.rgb * input.color.a, input.color.a);\n }\n\n let dist = f_val * inverseSqrt(dx * dx + dy * dy);\n let coverage = smoothstep(0.5, -0.5, dist);\n\n if (coverage <= 0.001) {\n discard;\n }\n\n let finalAlpha = input.color.a * min(coverage, 1.0);\n return vec4(input.color.rgb * finalAlpha, finalAlpha);\n}\n`}static getStencilWriteVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n}\n\nstruct FillUniforms {\n color: vec4,\n matrix0: vec4,\n matrix1: vec4,\n matrix2: vec4,\n}\n\n@group(0) @binding(0) var uniforms: FillUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);\n let transformed = matrix * vec3(input.position, 1.0);\n let ndc = transformed.xy * 2.0 - 1.0;\n output.position = vec4(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.bezier = input.bezier;\n return output;\n}\n`}static getStencilWriteFragmentShader(){return`\nstruct FragmentInput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4 {\n let f_val = input.bezier.x * input.bezier.x - input.bezier.y;\n let dx = dpdx(f_val);\n let dy = dpdy(f_val);\n let dist = f_val * inverseSqrt(dx * dx + dy * dy);\n let alpha = smoothstep(0.5, -0.5, dist);\n\n if (alpha <= 0.001) {\n discard;\n }\n\n return vec4(0.0, 0.0, 0.0, min(alpha, 1.0));\n}\n`}static getStencilFillVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) color: vec4,\n}\n\nstruct FillUniforms {\n color: vec4,\n matrix0: vec4,\n matrix1: vec4,\n matrix2: vec4,\n}\n\n@group(0) @binding(0) var uniforms: FillUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);\n let transformed = matrix * vec3(input.position, 1.0);\n let ndc = transformed.xy * 2.0 - 1.0;\n output.position = vec4(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.color = uniforms.color;\n return output;\n}\n`}static getStencilFillFragmentShader(){return`\nstruct FragmentInput {\n @builtin(position) position: vec4,\n @location(0) color: vec4,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4 {\n let a = input.color.a;\n return vec4(input.color.r * a, input.color.g * a, input.color.b * a, a);\n}\n`}static getMaskVertexShader(){return`\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n}\n\nstruct Uniforms {\n viewportSize: vec2,\n _padding0: vec2,\n matrixCol0: vec3,\n _padding1: f32,\n matrixCol1: vec3,\n _padding2: f32,\n matrixCol2: vec3,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var uniforms: Uniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3(uniforms.matrixCol0, uniforms.matrixCol1, uniforms.matrixCol2);\n let transformed = matrix * vec3(input.position, 1.0);\n let pos = transformed.xy;\n let ndc = pos * 2.0 - 1.0;\n output.position = vec4(ndc.x, -ndc.y, 0.0, 1.0);\n output.bezier = input.bezier;\n return output;\n}\n`}static getMaskFragmentShader(){return`\nstruct FragmentInput {\n @location(0) bezier: vec2,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4 {\n let px = dpdx(input.bezier);\n let py = dpdy(input.bezier);\n let f = (2.0 * input.bezier.x) * vec2(px.x, py.x) - vec2(px.y, py.y);\n let alpha = 0.5 - (input.bezier.x * input.bezier.x - input.bezier.y) / length(f);\n if (alpha <= 0.0) {\n discard;\n }\n return vec4(min(alpha, 1.0));\n}\n`}static getBasicVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) texCoord: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) color: vec4,\n}\n\nstruct Uniforms {\n matrix: mat3x3,\n color: vec4,\n alpha: f32,\n}\n\n@group(0) @binding(0) var uniforms: Uniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let pos = uniforms.matrix * vec3(input.position, 1.0);\n let ndc = pos.xy * 2.0 - 1.0;\n output.position = vec4(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.texCoord = input.texCoord;\n let premultipliedColor = vec4(\n uniforms.color.rgb * uniforms.color.a * uniforms.alpha,\n uniforms.color.a * uniforms.alpha\n );\n output.color = premultipliedColor;\n return output;\n}\n`}static getBasicFragmentShader(){return`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) color: vec4,\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n return input.color;\n}\n`}static getTextureFragmentShader(){return`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) color: vec4,\n}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var textureData: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let textureColor = textureSampleLevel(textureData, textureSampler, input.texCoord, 0);\n return textureColor * input.color;\n}\n`}static getInstancedVertexShader(){return`\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) texCoord: vec2,\n}\n\nstruct InstanceInput {\n @location(2) textureRect: vec4,\n @location(3) textureDim: vec4,\n @location(4) matrixTx: vec4,\n @location(5) matrixScale: vec4,\n @location(6) mulColor: vec4,\n @location(7) addColor: vec4,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) mulColor: vec4,\n @location(2) addColor: vec4,\n}\n\n@vertex\nfn main(\n input: VertexInput,\n instance: InstanceInput,\n @builtin(instance_index) instanceIdx: u32\n) -> VertexOutput {\n var output: VertexOutput;\n let texX = instance.textureRect.x + input.texCoord.x * instance.textureRect.z;\n let texY = instance.textureRect.y + input.texCoord.y * instance.textureRect.w;\n output.texCoord = vec2(texX, texY);\n var pos = vec2(input.position.x, 1.0 - input.position.y);\n pos = pos * vec2(instance.textureDim.x, instance.textureDim.y);\n let scale0 = instance.matrixScale.x;\n let rotate0 = instance.matrixScale.y;\n let scale1 = instance.matrixScale.z;\n let rotate1 = instance.matrixScale.w;\n let transformedX = pos.x * scale0 + pos.y * scale1 + instance.matrixTx.x;\n let transformedY = pos.x * rotate0 + pos.y * rotate1 + instance.matrixTx.y;\n var position = vec2(transformedX, transformedY) / vec2(instance.textureDim.z, instance.textureDim.w);\n position = position * 2.0 - 1.0;\n output.position = vec4(position.x, -position.y, 0.0, 1.0);\n output.mulColor = instance.mulColor;\n output.addColor = instance.addColor;\n return output;\n}\n`}static getInstancedFragmentShader(){return`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) mulColor: vec4,\n @location(2) addColor: vec4,\n}\n\n@group(0) @binding(0) var textureSampler: sampler;\n@group(0) @binding(1) var textureData: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n var src = textureSample(textureData, textureSampler, input.texCoord);\n src = vec4(src.rgb / max(0.0001, src.a), src.a);\n src = clamp(src * input.mulColor + input.addColor, vec4(0.0), vec4(1.0));\n src = vec4(src.rgb * src.a, src.a);\n return src;\n}\n`}static getGradientFillVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) v_uv: vec2,\n @location(1) bezier: vec2,\n @location(2) color: vec4,\n}\n\nstruct GradientUniforms {\n inverseMatrix: mat3x3,\n gradientType: f32,\n focal: f32,\n spread: f32,\n radius: f32,\n linearPoints: vec4,\n color: vec4,\n contextMatrix0: vec4,\n contextMatrix1: vec4,\n contextMatrix2: vec4,\n}\n\n@group(0) @binding(0) var gradient: GradientUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let contextMatrix = mat3x3(gradient.contextMatrix0.xyz, gradient.contextMatrix1.xyz, gradient.contextMatrix2.xyz);\n let pos = contextMatrix * vec3(input.position, 1.0);\n let ndc = vec2(pos.x * 2.0 - 1.0, pos.y * 2.0 - 1.0);\n output.position = vec4(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n let uvPos = gradient.inverseMatrix * vec3(input.position, 1.0);\n output.v_uv = uvPos.xy;\n output.bezier = input.bezier;\n output.color = gradient.color;\n return output;\n}\n`}static getGradientFillFragmentShader(){return ul}static getGradientFillStencilFragmentShader(){return dl}static getBitmapFillVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n @location(1) color: vec4,\n @location(2) worldPos: vec2,\n}\n\nstruct BitmapUniforms {\n bitmapMatrix: mat3x3,\n width: f32,\n height: f32,\n repeat: f32,\n _pad: f32,\n color: vec4,\n contextMatrix0: vec4,\n contextMatrix1: vec4,\n contextMatrix2: vec4,\n}\n\n@group(0) @binding(0) var bitmap: BitmapUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3(bitmap.contextMatrix0.xyz, bitmap.contextMatrix1.xyz, bitmap.contextMatrix2.xyz);\n let transformedPos = matrix * vec3(input.position, 1.0);\n let clipX = transformedPos.x * 2.0 - 1.0;\n let clipY = (transformedPos.y * 2.0 - 1.0) * yFlipSign;\n output.position = vec4(clipX, clipY, 0.0, 1.0);\n output.bezier = input.bezier;\n output.color = bitmap.color;\n output.worldPos = input.position;\n return output;\n}\n`}static getBitmapFillFragmentShader(){return`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n @location(1) color: vec4,\n @location(2) worldPos: vec2,\n}\n\nstruct BitmapUniforms {\n bitmapMatrix: mat3x3,\n textureWidth: f32,\n textureHeight: f32,\n repeat: f32,\n _pad: f32,\n}\n\n@group(0) @binding(0) var uniforms: BitmapUniforms;\n@group(0) @binding(1) var bitmapSampler: sampler;\n@group(0) @binding(2) var bitmapTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let u = input.bezier.x;\n let v = input.bezier.y;\n if (abs(u - 0.5) > 0.001 || abs(v - 0.5) > 0.001) {\n let d = u * u - v;\n if (d > 0.0) {\n discard;\n }\n }\n let transformedPos = uniforms.bitmapMatrix * vec3(input.worldPos, 1.0);\n var uv = vec2(\n transformedPos.x / uniforms.textureWidth,\n transformedPos.y / uniforms.textureHeight\n );\n if (uniforms.repeat > 0.5) {\n uv = fract(uv);\n }\n let bitmapColor = textureSampleLevel(bitmapTexture, bitmapSampler, uv, 0);\n let alpha = bitmapColor.a * input.color.a;\n return vec4(bitmapColor.rgb * input.color.a, alpha);\n}\n`}static getBlendFragmentShader(){return`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) color: vec4,\n}\n\nstruct BlendUniforms {\n blendMode: f32,\n}\n\n@group(0) @binding(1) var blend: BlendUniforms;\n@group(0) @binding(2) var srcSampler: sampler;\n@group(0) @binding(3) var srcTexture: texture_2d;\n@group(0) @binding(4) var dstSampler: sampler;\n@group(0) @binding(5) var dstTexture: texture_2d;\n\nfn blendNormal(src: vec4, dst: vec4) -> vec4 {\n return src;\n}\n\nfn blendMultiply(src: vec4, dst: vec4) -> vec4 {\n return src * dst;\n}\n\nfn blendScreen(src: vec4, dst: vec4) -> vec4 {\n return src + dst - src * dst;\n}\n\nfn blendAdd(src: vec4, dst: vec4) -> vec4 {\n return min(src + dst, vec4(1.0));\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let src = textureSampleLevel(srcTexture, srcSampler, input.texCoord, 0);\n let dst = textureSampleLevel(dstTexture, dstSampler, input.texCoord, 0);\n var result: vec4;\n if (blend.blendMode < 0.5) {\n result = blendNormal(src, dst);\n } else if (blend.blendMode < 1.5) {\n result = blendMultiply(src, dst);\n } else if (blend.blendMode < 2.5) {\n result = blendScreen(src, dst);\n } else {\n result = blendAdd(src, dst);\n }\n return result * input.color;\n}\n`}static getBlurFilterVertexShader(){return Xc}static getBitmapSyncVertexShader(){return el}static getBitmapSyncFragmentShader(){return yl}static getBlurFilterFragmentShader(e){let t=e.toFixed(1);return`\n${Jc}\n\nstruct BlurUniforms {\n offset: vec2,\n fraction: f32,\n samples: f32,\n}\n\n@group(0) @binding(0) var uniforms: BlurUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let offset = uniforms.offset;\n let fraction = uniforms.fraction;\n let samples = uniforms.samples;\n var color = textureSample(inputTexture, textureSampler, input.texCoord);\n for (var i: f32 = 1.0; i < ${t}; i += 1.0) {\n color += textureSample(inputTexture, textureSampler, input.texCoord + offset * i);\n color += textureSample(inputTexture, textureSampler, input.texCoord - offset * i);\n }\n color += textureSample(inputTexture, textureSampler, input.texCoord + offset * ${t}) * fraction;\n color += textureSample(inputTexture, textureSampler, input.texCoord - offset * ${t}) * fraction;\n color /= samples;\n return color;\n}\n`}static getTextureCopyFragmentShader(){return fl}static getBlurTextureCopyFragmentShader(){return pl}static getFilterOutputFragmentShader(){return ml}static getColorTransformFragmentShader(){return hl}static getYFlipColorTransformFragmentShader(){return gl}static getColorMatrixFilterFragmentShader(){return _l}static getGlowFilterFragmentShader(){return bl}static getDropShadowFilterFragmentShader(){return xl}static getGradientGlowFilterFragmentShader(){return Sl}static getGradientBevelFilterFragmentShader(){return Cl}static getBevelFilterFragmentShader(){return wl}static getBevelBaseFragmentShader(){return Tl}static getConvolutionFilterFragmentShader(e,t,n=!0,r=!0){let i=Math.floor(e*.5),a=Math.floor(t*.5),o=e*t,s=``;for(let e=0;e,\n rcpDivisor: f32,\n bias: f32,\n substituteColor: vec4,\n matrix: array, ${Math.ceil(o/4)}>,\n}\n\n@group(0) @binding(0) var uniforms: ConvolutionUniforms;\n@group(0) @binding(1) var sourceSampler: sampler;\n@group(0) @binding(2) var sourceTexture: texture_2d;\n\n${Jc}\n\n${Kc}\n\nfn getMatrixWeight(index: i32) -> f32 {\n let vecIndex = index / 4;\n let component = index % 4;\n let vec = uniforms.matrix[vecIndex];\n if (component == 0) { return vec.x; }\n else if (component == 1) { return vec.y; }\n else if (component == 2) { return vec.z; }\n else { return vec.w; }\n}\n\nfn getWeightedColor(i: i32, weight: f32) -> vec4 {\n let rcpSize = uniforms.rcpSize;\n let iDivX = i / ${e};\n let iModX = i - ${e} * iDivX;\n let offset = vec2(f32(iModX - ${i}), f32(${a} - iDivX));\n var uv = input.texCoord + offset * rcpSize;\n var color = textureSample(sourceTexture, sourceSampler, uv);\n color = vec4(color.rgb / max(0.0001, color.a), color.a);\n ${l}\n return color * weight;\n}\n\nvar input: VertexOutput;\n\n@vertex\nfn vs_main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var positions = array, 6>(\n vec2(-1.0, -1.0),\n vec2(1.0, -1.0),\n vec2(-1.0, 1.0),\n vec2(-1.0, 1.0),\n vec2(1.0, -1.0),\n vec2(1.0, 1.0)\n );\n var texCoords = array, 6>(\n vec2(0.0, 1.0),\n vec2(1.0, 1.0),\n vec2(0.0, 0.0),\n vec2(0.0, 0.0),\n vec2(1.0, 1.0),\n vec2(1.0, 0.0)\n );\n var output: VertexOutput;\n output.position = vec4(positions[vertexIndex], 0.0, 1.0);\n output.texCoord = texCoords[vertexIndex];\n return output;\n}\n\n@fragment\nfn fs_main(fragInput: VertexOutput) -> @location(0) vec4 {\n input = fragInput;\n let rcpDivisor = uniforms.rcpDivisor;\n let bias = uniforms.bias;\n var result = vec4(0.0);\n ${s}\n result = clamp(result * rcpDivisor + bias, vec4(0.0), vec4(1.0));\n ${c}\n result = vec4(result.rgb * result.a, result.a);\n return result;\n}\n`}static getBlendModeIndex(e){switch(e){case`subtract`:return 0;case`multiply`:return 1;case`lighten`:return 2;case`darken`:return 3;case`overlay`:return 4;case`hardlight`:return 5;case`difference`:return 6;case`invert`:return 7;default:return 1}}static getUnifiedComplexBlendFragmentShader(){return`\n${Jc}\n\nstruct BlendUniforms {\n mulColor: vec4,\n addColor: vec4,\n blendMode: f32,\n _pad0: f32,\n _pad1: f32,\n _pad2: f32,\n}\n\n@group(0) @binding(0) var uniforms: BlendUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var dstTexture: texture_2d;\n@group(0) @binding(3) var srcTexture: texture_2d;\n\nfn blend(src: vec4, dst: vec4, mode: i32) -> vec4 {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n let a = src - src * dst.a;\n let b = dst - dst * src.a;\n\n if (mode == 1) {\n let c = src * dst;\n return a + b + c;\n }\n\n let srcRgb = src.rgb / src.a;\n let dstRgb = dst.rgb / dst.a;\n\n var blended: vec3;\n\n switch (mode) {\n case 0: {\n blended = dstRgb - srcRgb;\n }\n case 2: {\n blended = mix(srcRgb, dstRgb, step(srcRgb, dstRgb));\n }\n case 3: {\n blended = mix(srcRgb, dstRgb, step(dstRgb, srcRgb));\n }\n case 4: {\n let mul = srcRgb * dstRgb;\n let c1 = 2.0 * mul;\n let c2 = 2.0 * (srcRgb + dstRgb - mul) - 1.0;\n blended = mix(c1, c2, step(vec3(0.5), dstRgb));\n }\n case 5: {\n let mul = srcRgb * dstRgb;\n let c1 = 2.0 * mul;\n let c2 = 2.0 * (srcRgb + dstRgb - mul) - 1.0;\n blended = mix(c1, c2, step(vec3(0.5), srcRgb));\n }\n case 6: {\n blended = abs(srcRgb - dstRgb);\n }\n case 7: {\n let ib = dst - dst * src.a;\n let ic = vec4(src.a - dst.rgb * src.a, src.a);\n return ib + ic;\n }\n default: {\n blended = srcRgb;\n }\n }\n\n var c = vec4(blended, src.a * dst.a);\n c = vec4(c.rgb * c.a, c.a);\n return a + b + c;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n var dst = textureSample(dstTexture, textureSampler, input.texCoord);\n var src = textureSample(srcTexture, textureSampler, input.texCoord);\n let mul = uniforms.mulColor;\n let add = uniforms.addColor;\n if (mul.x != 1.0 || mul.y != 1.0 || mul.z != 1.0 || mul.w != 1.0\n || add.x != 0.0 || add.y != 0.0 || add.z != 0.0) {\n src = vec4(src.rgb / max(vec3(0.0001), vec3(src.a)), src.a);\n src = clamp(src * mul + add, vec4(0.0), vec4(1.0));\n src = vec4(src.rgb * src.a, src.a);\n }\n return blend(src, dst, i32(uniforms.blendMode));\n}\n`}static getDisplacementMapFilterFragmentShader(e,t,n){let r,i;switch(e){case 1:r=`mapColor.r`;break;case 2:r=`mapColor.g`;break;case 4:r=`mapColor.b`;break;case 8:r=`mapColor.a`;break;default:r=`0.5`}switch(t){case 1:i=`mapColor.r`;break;case 2:i=`mapColor.g`;break;case 4:i=`mapColor.b`;break;case 8:i=`mapColor.a`;break;default:i=`0.5`}let a,o=!1;switch(n){case 0:a=`\nsourceColor = textureSample(srcTexture, textureSampler, uv);\n`;break;case 1:o=!0,a=`\nsourceColor = mix(uniforms.substituteColor, textureSample(srcTexture, textureSampler, uv), isInside(uv));\n`;break;case 2:a=`\nsourceColor = textureSample(srcTexture, textureSampler, fract(uv));\n`;break;case 3:a=`\nlet insideUV = step(abs(uv - vec2(0.5)), vec2(0.5));\nsourceColor = textureSample(srcTexture, textureSampler, mix(input.texCoord, uv, insideUV));\n`;break;default:a=`\nsourceColor = textureSample(srcTexture, textureSampler, fract(uv));\n`}return`\n${Jc}\n\n${o?`struct DisplacementUniforms {\n uvToStScale: vec2,\n uvToStOffset: vec2,\n scale: vec2,\n padding: vec2,\n substituteColor: vec4,\n}`:`struct DisplacementUniforms {\n uvToStScale: vec2,\n uvToStOffset: vec2,\n scale: vec2,\n padding: vec2,\n}`}\n\n@group(0) @binding(0) var uniforms: DisplacementUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var srcTexture: texture_2d;\n@group(0) @binding(3) var mapTexture: texture_2d;\n\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let stCoord = vec2(input.texCoord.x, 1.0 - input.texCoord.y);\n let st = stCoord * uniforms.uvToStScale - uniforms.uvToStOffset;\n let mapColor = textureSample(mapTexture, textureSampler, vec2(st.x, 1.0 - st.y));\n let offset = vec2(${r}, ${i}) - 0.5;\n let uv = input.texCoord + offset * uniforms.scale;\n var sourceColor: vec4;\n ${a}\n return mix(textureSample(srcTexture, textureSampler, input.texCoord), sourceColor, isInside(st));\n}\n`}static getNodeClearVertexShader(){return`\nstruct VertexInput {\n @location(0) position: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n}\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let ndc = input.position * 2.0 - 1.0;\n output.position = vec4(ndc.x, ndc.y, 0.0, 1.0);\n return output;\n}\n`}static getNodeClearFragmentShader(){return`\n@fragment\nfn main() -> @location(0) vec4 {\n return vec4(0.0, 0.0, 0.0, 0.0);\n}\n`}static getPositionedTextureVertexShader(){return $c}static getTextureScaleVertexShader(){return nl}static getTextureScaleBlendVertexShader(){return rl}static getComplexBlendScaleVertexShader(){return il}static getComplexBlendVertexShader(){return Zc}static getComplexBlendCopyVertexShader(){return Qc}static getComplexBlendOutputVertexShader(){return ol}static getFilterComplexBlendOutputVertexShader(){return sl}static getPositionedTextureFragmentShader(){return vl}};let El={arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:`float32x2`},{shaderLocation:1,offset:8,format:`float32x2`}]},Dl={color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}};var Ol=class{device;format;pipelines;bindGroupLayouts;sampleCount;shaderModuleCache=new Map;filterBindGroupLayouts=new Map;constructor(e,t){this.device=e,this.format=t,this.pipelines=new Map,this.bindGroupLayouts=new Map,this.sampleCount=4,this.initialize()}getOrCreateShaderModule(e,t){let n=this.shaderModuleCache.get(e);return n||(n=this.device.createShaderModule({code:t}),this.shaderModuleCache.set(e,n)),n}initialize(){this.createFillPipeline(),this.createStencilFillPipelines(),this.createClipPipeline(),this.createMaskUnionPipelines(),this.createMaskPipeline(),this.createBasicPipeline(),this.createTexturePipeline(),this.createInstancedPipeline(),this.createGradientPipeline(),this.createBitmapFillPipeline(),this.createBlendPipeline(),this.createNodeClearPipeline()}lazyInitGroups=new Set;lazyGroupMap=new Map([...Array.from({length:16},(e,t)=>[`blur_filter_${t+1}`,`blur_filter`]),[`blur_filter`,`blur_filter`],[`texture_copy`,`texture_copy`],[`texture_copy_rgba8`,`texture_copy`],[`texture_copy_rgba8_msaa`,`texture_copy`],[`color_transform`,`texture_copy`],[`y_flip_color_transform`,`texture_copy`],[`texture_erase`,`texture_copy`],[`blur_texture_copy`,`texture_copy`],[`filter_blend`,`texture_copy`],[`texture_copy_bgra`,`texture_copy`],[`filter_output`,`texture_copy`],[`filter_output_add`,`texture_copy`],[`filter_output_screen`,`texture_copy`],[`filter_output_alpha`,`texture_copy`],[`filter_output_erase`,`texture_copy`],[`texture_copy_bgra_msaa`,`texture_copy`],[`filter_output_msaa`,`texture_copy`],[`filter_output_add_msaa`,`texture_copy`],[`filter_output_screen_msaa`,`texture_copy`],[`filter_output_alpha_msaa`,`texture_copy`],[`filter_output_erase_msaa`,`texture_copy`],[`filter_output_masked`,`texture_copy`],[`filter_output_masked_msaa`,`texture_copy`],[`positioned_texture`,`texture_copy`],[`positioned_texture_rgba`,`texture_copy`],[`bitmap_render_msaa`,`texture_copy`],[`bitmap_render`,`texture_copy`],[`texture_scale`,`texture_copy`],[`texture_scale_blend`,`texture_copy`],[`bitmap_sync`,`bitmap_sync`],[`color_matrix_filter`,`filter`],[`bevel_base`,`filter`],[`glow_filter`,`filter`],[`drop_shadow_filter`,`filter`],[`bevel_filter`,`filter`],[`gradient_glow_filter`,`filter`],[`gradient_bevel_filter`,`filter`],[`complex_blend`,`complex_blend`],[`complex_blend_copy`,`complex_blend`],[`complex_blend_scale`,`complex_blend`],[`complex_blend_output`,`complex_blend`],[`complex_blend_output_msaa`,`complex_blend`],[`filter_complex_blend_output`,`complex_blend`],[`filter_complex_blend_output_msaa`,`complex_blend`]]);ensureLazyGroup(e){let t=this.lazyGroupMap.get(e);if(!(!t||this.lazyInitGroups.has(t)))switch(this.lazyInitGroups.add(t),t){case`blur_filter`:this.createBlurFilterPipeline();break;case`texture_copy`:this.createTextureCopyPipeline();break;case`bitmap_sync`:this.createBitmapSyncPipeline();break;case`filter`:this.createColorMatrixFilterPipeline();break;case`complex_blend`:this.createComplexBlendPipelines()}}preloadLazyGroups(){for(let e of[`blur_filter`,`texture_copy`,`bitmap_sync`,`filter`,`complex_blend`])this.ensureLazyGroup(e)}warmupLazyGroupsAsync(){let e=[`texture_copy`,`blur_filter`,`filter`,`complex_blend`,`bitmap_sync`],t=0,n=()=>{t>=e.length||(this.ensureLazyGroup(e[t++]),setTimeout(n,0))};setTimeout(n,0)}createFillPipeline(){let e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:`uniform`,hasDynamicOffset:!0}}]});this.bindGroupLayouts.set(`fill_dynamic`,e);let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`fillVertex`,G.getFillVertexShader()),r=this.getOrCreateShaderModule(`fillFragment`,G.getFillFragmentShader()),i=El,a=Dl,o=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[i]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:a}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilReadMask:0,stencilWriteMask:0},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}}),s=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[i],constants:{yFlipSign:-1}},fragment:{module:r,entryPoint:`main`,targets:[{format:this.format,blend:a}]},primitive:{topology:`triangle-list`,cullMode:`none`},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}});this.pipelines.set(`fill`,o),this.pipelines.set(`fill_bgra`,s);let c=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[i],constants:{yFlipSign:-1}},fragment:{module:r,entryPoint:`main`,targets:[{format:this.format,blend:a}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilReadMask:255,stencilWriteMask:0},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}});this.pipelines.set(`fill_bgra_stencil`,c)}createStencilFillPipelines(){let e=El,t=this.bindGroupLayouts.get(`fill_dynamic`),n=this.device.createPipelineLayout({bindGroupLayouts:[t]}),r=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilWriteVertex`,G.getStencilWriteVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilWriteFragment`,G.getStencilWriteFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,writeMask:0}]},primitive:{topology:`triangle-list`,cullMode:`none`,frontFace:`ccw`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`increment-wrap`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`decrement-wrap`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}});this.pipelines.set(`stencil_write`,r);let i=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilFillVertex`,G.getStencilFillVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilFillFragment`,G.getStencilFillFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`stencil_fill`,i);let a=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilWriteVertex`,G.getStencilWriteVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilWriteFragment`,G.getStencilWriteFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,writeMask:0}]},primitive:{topology:`triangle-list`,cullMode:`none`,frontFace:`ccw`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`increment-wrap`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`decrement-wrap`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}});this.pipelines.set(`stencil_write_atlas`,a);let o=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilWriteVertex`,G.getStencilWriteVertexShader()),entryPoint:`main`,buffers:[e],constants:{yFlipSign:-1}},fragment:{module:this.getOrCreateShaderModule(`stencilWriteFragment`,G.getStencilWriteFragmentShader()),entryPoint:`main`,targets:[{format:this.format,writeMask:0}]},primitive:{topology:`triangle-list`,cullMode:`none`,frontFace:`ccw`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`increment-wrap`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`decrement-wrap`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}});this.pipelines.set(`stencil_write_main`,o);let s=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilFillVertex`,G.getStencilFillVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilFillFragment`,G.getStencilFillFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one`,operation:`max`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`stencil_fill_atlas`,s);let c=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilFillVertex`,G.getStencilFillVertexShader()),entryPoint:`main`,buffers:[e],constants:{yFlipSign:-1}},fragment:{module:this.getOrCreateShaderModule(`stencilFillFragment`,G.getStencilFillFragmentShader()),entryPoint:`main`,targets:[{format:this.format,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one`,operation:`max`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`stencil_fill_main`,c);let l=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilFillVertex`,G.getStencilFillVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilFillFragment`,G.getStencilFillFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`greater`,failOp:`keep`,depthFailOp:`replace`,passOp:`replace`},stencilBack:{compare:`greater`,failOp:`keep`,depthFailOp:`replace`,passOp:`replace`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`stencil_fill_masked`,l)}createClipPipeline(){let e=El,t=this.bindGroupLayouts.get(`fill_dynamic`),n=this.device.createPipelineLayout({bindGroupLayouts:[t]}),r=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilWriteVertex`,G.getStencilWriteVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilWriteFragment`,G.getStencilWriteFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,writeMask:0}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`zero`,depthFailOp:`invert`,passOp:`invert`},stencilBack:{compare:`always`,failOp:`zero`,depthFailOp:`invert`,passOp:`invert`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`clip_write`,r);let i=this.getOrCreateShaderModule(`stencilWriteVertex`,G.getStencilWriteVertexShader()),a=this.getOrCreateShaderModule(`stencilWriteFragment`,G.getStencilWriteFragmentShader());for(let t=1;t<=8;t++){let r=1<1&&this.pipelines.set(`texture_copy_rgba8_msaa`,this.createFullscreenQuadPipeline(t,n,r,`rgba8unorm`,{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}},this.sampleCount));let s=this.getOrCreateShaderModule(`colorTransformFragment`,G.getColorTransformFragmentShader());this.pipelines.set(`color_transform`,this.createFullscreenQuadPipeline(t,n,s,`rgba8unorm`,i));let c=this.getOrCreateShaderModule(`yFlipColorTransformFragment`,G.getYFlipColorTransformFragmentShader());this.pipelines.set(`y_flip_color_transform`,this.createFullscreenQuadPipeline(t,n,c,`rgba8unorm`,i));let l=this.getOrCreateShaderModule(`blurTextureCopyFragment`,G.getBlurTextureCopyFragmentShader());this.pipelines.set(`texture_erase`,this.createFullscreenQuadPipeline(t,n,l,`rgba8unorm`,o)),this.pipelines.set(`blur_texture_copy`,this.createFullscreenQuadPipeline(t,n,l,`rgba8unorm`,i)),this.pipelines.set(`filter_blend`,this.createFullscreenQuadPipeline(t,n,r,this.format,a)),this.pipelines.set(`texture_copy_bgra`,this.createFullscreenQuadPipeline(t,n,r,this.format,i));let u=this.getOrCreateShaderModule(`filterOutputFragment`,G.getFilterOutputFragmentShader());this.pipelines.set(`filter_output`,this.createFullscreenQuadPipeline(t,n,u,this.format,a));let d=[[`filter_output_add`,{color:{srcFactor:`one`,dstFactor:`one`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one`,operation:`add`}}],[`filter_output_screen`,{color:{srcFactor:`one`,dstFactor:`one-minus-src`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}],[`filter_output_alpha`,{color:{srcFactor:`zero`,dstFactor:`src-alpha`,operation:`add`},alpha:{srcFactor:`zero`,dstFactor:`src-alpha`,operation:`add`}}],[`filter_output_erase`,{color:{srcFactor:`zero`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`zero`,dstFactor:`one-minus-src-alpha`,operation:`add`}}]];for(let[e,r]of d)this.pipelines.set(e,this.createFullscreenQuadPipeline(t,n,u,this.format,r));let f={format:`stencil8`,stencilFront:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilReadMask:255,stencilWriteMask:0};if(this.pipelines.set(`filter_output_masked`,this.createFullscreenQuadPipeline(t,n,u,this.format,a,void 0,f)),this.sampleCount>1&&this.pipelines.set(`filter_output_masked_msaa`,this.createFullscreenQuadPipeline(t,n,u,this.format,{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}},this.sampleCount,f)),this.sampleCount>1){this.pipelines.set(`texture_copy_bgra_msaa`,this.createFullscreenQuadPipeline(t,n,r,this.format,{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}},this.sampleCount)),this.pipelines.set(`filter_output_msaa`,this.createFullscreenQuadPipeline(t,n,u,this.format,{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}},this.sampleCount));for(let[e,r]of d)this.pipelines.set(`${e}_msaa`,this.createFullscreenQuadPipeline(t,n,u,this.format,r,this.sampleCount))}this.createPositionedTexturePipeline(),this.createTextureScalePipeline()}createPositionedTexturePipeline(){let e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}}]});this.bindGroupLayouts.set(`positioned_texture`,e);let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`positionedTextureVertex`,G.getPositionedTextureVertexShader()),r=this.getOrCreateShaderModule(`positionedTextureFragment`,G.getPositionedTextureFragmentShader()),i=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:this.format,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}});this.pipelines.set(`positioned_texture`,i);let a=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}});this.pipelines.set(`positioned_texture_rgba`,a);let o=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},multisample:{count:4},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`}}});this.pipelines.set(`bitmap_render_msaa`,o);let s=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`}}});this.pipelines.set(`bitmap_render`,s)}createTextureScalePipeline(){let e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}}]});this.bindGroupLayouts.set(`texture_scale`,e);let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`textureScaleVertex`,G.getTextureScaleVertexShader()),r=this.getOrCreateShaderModule(`positionedTextureFragment`,G.getPositionedTextureFragmentShader()),i=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}});this.pipelines.set(`texture_scale`,i);let a=this.getOrCreateShaderModule(`textureScaleBlendVertex`,G.getTextureScaleBlendVertexShader()),o=this.device.createRenderPipeline({layout:t,vertex:{module:a,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}});this.pipelines.set(`texture_scale_blend`,o)}createBitmapSyncPipeline(){let e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:`filtering`}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:`float`}}]});this.bindGroupLayouts.set(`bitmap_sync`,e);let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`bitmapSyncVertex`,G.getBitmapSyncVertexShader()),r=this.getOrCreateShaderModule(`bitmapSyncFragment`,G.getBitmapSyncFragmentShader()),i=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},multisample:{count:4}});this.pipelines.set(`bitmap_sync`,i)}createColorMatrixFilterPipeline(){let e={color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}},t={color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}};this.createFilterPipelineWithLayout(`color_matrix_filter`,G.getColorMatrixFilterFragmentShader(),1,e),this.createFilterPipelineWithLayout(`bevel_base`,G.getBevelBaseFragmentShader(),1,e),this.createFilterPipelineWithLayout(`glow_filter`,G.getGlowFilterFragmentShader(),2,t),this.createFilterPipelineWithLayout(`drop_shadow_filter`,G.getDropShadowFilterFragmentShader(),2,t),this.createFilterPipelineWithLayout(`bevel_filter`,G.getBevelFilterFragmentShader(),2,t),this.createFilterPipelineWithLayout(`gradient_glow_filter`,G.getGradientGlowFilterFragmentShader(),3,t),this.createFilterPipelineWithLayout(`gradient_bevel_filter`,G.getGradientBevelFilterFragmentShader(),3,t)}createComplexBlendPipelines(){let e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{}}]});this.bindGroupLayouts.set(`complex_blend`,e);let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`complexBlendVertex`,G.getComplexBlendVertexShader()),r=this.getOrCreateShaderModule(`unifiedComplexBlendFragment`,G.getUnifiedComplexBlendFragmentShader()),i=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}});this.pipelines.set(`complex_blend`,i),this.createComplexBlendCopyPipeline(),this.createComplexBlendOutputPipeline()}createComplexBlendCopyPipeline(){let e={color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}},t=this.bindGroupLayouts.get(`texture_copy`);if(t){let n=this.device.createPipelineLayout({bindGroupLayouts:[t]}),r=this.getOrCreateShaderModule(`complexBlendCopyVertex`,G.getComplexBlendCopyVertexShader()),i=this.getOrCreateShaderModule(`textureCopyFragment`,G.getTextureCopyFragmentShader());this.pipelines.set(`complex_blend_copy`,this.createFullscreenQuadPipeline(n,r,i,`rgba8unorm`,e))}let n=this.bindGroupLayouts.get(`texture_scale`);if(n){let t=this.device.createPipelineLayout({bindGroupLayouts:[n]}),r=this.getOrCreateShaderModule(`complexBlendScaleVertex`,G.getComplexBlendScaleVertexShader()),i=this.getOrCreateShaderModule(`positionedTextureFragment`,G.getPositionedTextureFragmentShader());this.pipelines.set(`complex_blend_scale`,this.createFullscreenQuadPipeline(t,r,i,`rgba8unorm`,e))}}createComplexBlendOutputPipeline(){let e=this.bindGroupLayouts.get(`positioned_texture`);if(!e)return;let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`positionedTextureFragment`,G.getPositionedTextureFragmentShader()),r={color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}},i=this.getOrCreateShaderModule(`complexBlendOutputVertex`,G.getComplexBlendOutputVertexShader());this.pipelines.set(`complex_blend_output`,this.createFullscreenQuadPipeline(t,i,n,this.format,r)),this.sampleCount>1&&this.pipelines.set(`complex_blend_output_msaa`,this.createFullscreenQuadPipeline(t,i,n,this.format,r,this.sampleCount));let a=this.getOrCreateShaderModule(`filterComplexBlendOutputVertex`,G.getFilterComplexBlendOutputVertexShader());this.pipelines.set(`filter_complex_blend_output`,this.createFullscreenQuadPipeline(t,a,n,this.format,r)),this.sampleCount>1&&this.pipelines.set(`filter_complex_blend_output_msaa`,this.createFullscreenQuadPipeline(t,a,n,this.format,r,this.sampleCount))}createFilterPipelineWithLayout(e,t,n,r){let i=this.filterBindGroupLayouts.get(n);if(!i){let e=[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}];for(let t=0;t1&&(s.multisample={count:a}),o&&(s.depthStencil=o),this.device.createRenderPipeline(s)}getPipeline(e){let t=this.pipelines.get(e);return t||=(this.ensureLazyGroup(e),this.pipelines.get(e)),t}getFilterPipeline(e,t){let n=`${e}_${Object.keys(t).sort().map(e=>`${e}${t[e]}`).join(`_`)}`,r=this.pipelines.get(n);if(r)return r;this.ensureLazyGroup(e);let i=this.shaderModuleCache.get(`filter_${e}`),a=this.shaderModuleCache.get(`blurFilterVertex`),o=this.bindGroupLayouts.get(e);if(!i||!a||!o)return this.pipelines.get(e);let s=this.device.createPipelineLayout({bindGroupLayouts:[o]});return r=this.device.createRenderPipeline({layout:s,vertex:{module:a,entryPoint:`main`,buffers:[]},fragment:{module:i,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}],constants:t},primitive:{topology:`triangle-list`,cullMode:`none`}}),this.pipelines.set(n,r),r}getGradientPipeline(e,t,n){let r=`${e}_t${t}s${n}`,i=this.pipelines.get(r);return i||(this.gradientPipelineLayout?(i=this.createGradientVariant(e,t,n),i?(this.pipelines.set(r,i),i):this.getPipeline(e)):this.getPipeline(e))}gradientPipelineLayout=null;gradientVertexShaderModule=null;gradientFragmentShaderModule=null;gradientStencilFragmentShaderModule=null;createGradientVariant(e,t,n){if(!this.gradientPipelineLayout)return;let r={GRADIENT_TYPE:t,SPREAD_MODE:n},i=El,a=Dl,o=e.includes(`stencil_atlas`)||e===`gradient_fill_stencil_main`?this.gradientStencilFragmentShaderModule:this.gradientFragmentShaderModule,s=e.includes(`bgra`)||e===`gradient_fill_stencil_main`?this.format:`rgba8unorm`,c=e.includes(`bgra`)||e===`gradient_fill_stencil_main`,l={};c&&(l.yFlipSign=-1);let u,d=this.sampleCount;e.includes(`stroke`)?u={format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilReadMask:0,stencilWriteMask:0}:e===`gradient_fill_stencil`||e===`gradient_fill_stencil_atlas`?u={format:`stencil8`,stencilFront:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255}:e===`gradient_fill_stencil_main`?(u={format:`stencil8`,stencilFront:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255},d=1):e===`gradient_fill_bgra_stencil`?u={format:`stencil8`,stencilFront:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilReadMask:255,stencilWriteMask:0}:e===`gradient_fill_bgra_no_msaa`&&(d=1);let f={layout:this.gradientPipelineLayout,vertex:{module:this.gradientVertexShaderModule,entryPoint:`main`,buffers:[i],constants:Object.keys(l).length>0?l:void 0},fragment:{module:o,entryPoint:`main`,targets:[{format:s,blend:a}],constants:r},primitive:{topology:`triangle-list`,cullMode:`none`},multisample:{count:d}};return u&&(f.depthStencil=u),this.device.createRenderPipeline(f)}getBindGroupLayout(e){let t=this.bindGroupLayouts.get(e);return t||=(this.ensureLazyGroup(e),this.bindGroupLayouts.get(e)),t}createNodeClearPipeline(){let e=this.device.createRenderPipeline({layout:`auto`,vertex:{module:this.getOrCreateShaderModule(`nodeClearVertex`,G.getNodeClearVertexShader()),entryPoint:`main`,buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:`float32x2`}]}]},fragment:{module:this.getOrCreateShaderModule(`nodeClearFragment`,G.getNodeClearFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}},writeMask:GPUColorWrite.ALL}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`zero`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`always`,failOp:`zero`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`node_clear_atlas`,e)}dispose(){this.pipelines.clear(),this.bindGroupLayouts.clear(),this.shaderModuleCache.clear(),this.filterBindGroupLayouts.clear()}};let kl=Number.MAX_VALUE,Al=-Number.MAX_VALUE,jl=0,Ml=e=>{jl=e},Nl=()=>jl,Pl=[],Fl=e=>{Pl[jl]=e},Il=null,Ll=e=>{Il=e},Rl=()=>{let e=Pl[jl];if(!e){if(!Il)return null;e=Il(jl),Fl(e)}return e},zl=e=>Pl[e]??null,Bl=[],Vl=[],Hl=()=>{for(let e=0;e{Ul=e},Gl=()=>Ul,Kl=()=>{Bl.length=0,Ml(0);for(let e=0;e{Jl=e},Xl=new Set([`normal`,`layer`,`add`,`screen`,`alpha`,`erase`,`copy`]),Zl=[],Ql=[],$l=[],eu=()=>Zl,tu=()=>{for(let e=0;e{let e=`blend_instanced`;return nu.has(e)||nu.set(e,new ql),nu.get(e)},iu=(e,t,n,r,i,a,o,s,c,l,u,d)=>{let f=a[0],p=a[1],m=a[2],h=d,g=a[4]/255,_=a[5]/255,v=a[6]/255;if(Xl.has(s)){(Jl!==s||Gl()!==e.index)&&(Xs&&(Ml(Gl()),Xs.drawArraysInstanced()),Yl(s),Wl(e.index),Ml(e.index));let t=ru();fi.pushInstanceBuffer((e.x+.5)/u,(e.y+.5)/u,(e.w-1)/u,(e.h-1)/u,e.w,e.h,c,l,o[6],o[7],0,0,o[0],o[1],o[3],o[4],f,p,m,h,g,_,v,0),t.count++}else{Xs&&(Ml(Gl()),Xs.drawArraysInstanced());let f=Ql.length>0?Ql.pop():new Float32Array(8);f.set(a);let p=$l.length>0?$l.pop():new Float32Array(9);p.set(o),Zl.push({node:e,x_min:t,y_min:n,x_max:r,y_max:i,color_transform:f,matrix:p,blend_mode:s,viewport_width:c,viewport_height:l,render_max_size:u,global_alpha:d}),Yl(s),Wl(e.index),Ml(e.index)}},au=!1,ou=e=>{au=e},su=()=>au,cu=!1,lu=0,uu=e=>{cu=e},du=()=>cu,fu=e=>{lu=e},pu=()=>lu,mu=new Map,hu=new Map,gu=()=>{au=!1,cu=!1,lu=0,mu.clear(),hu.clear()},_u=()=>{let e=Xs.currentAttachmentObject;e&&(e.mask=!0,e.clipLevel++,hu.set(e.clipLevel,e.clipLevel),su()||ou(!0))},vu=(e,t,n,r)=>{let i=Xs.currentAttachmentObject;if(!i)return;let a=i.clipLevel,o=mu.get(a);o?(o[0]=Math.min(o[0],e),o[1]=Math.min(o[1],t),o[2]=Math.max(o[2],n),o[3]=Math.max(o[3],r)):(o=Qs(),o[0]=e,o[1]=t,o[2]=n,o[3]=r,mu.set(a,o))},yu=()=>{let e=Xs.currentAttachmentObject;if(!e)return;let t=(1<{let e=Xs.currentAttachmentObject;if(!e)return;let t=e.clipLevel,n=mu.get(t);if(n&&(mu.delete(t),$s(n)),hu.delete(t),--e.clipLevel,!e.clipLevel){e.mask=!1,ou(!1),uu(!1),fu(0),e.needsStencilClear=!0,hu.clear(),mu.clear();return}e.pendingStencilClearLevel=e.clipLevel,yu()},xu=(e,t,n)=>{let r=e.length-5;for(let i=3;i(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),wu=e=>{let t=0;for(let n of e){let e=n.length-5;for(let n=3;n{let r=Math.sqrt(e*e+t*t);return r===0?{x:0,y:0}:{x:-(t/r)*n,y:e/r*n}},ju=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}),Mu=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:{x:e.x/t,y:e.y/t}},Nu=(e,t,n,r)=>({x:(1-e)**2*t.x+2*(1-e)*e*n.x+e**2*r.x,y:(1-e)**2*t.y+2*(1-e)*e*n.y+e**2*r.y}),Pu=(e,t,n,r)=>({x:2*(1-e)*(n.x-t.x)+2*e*(r.x-n.x),y:2*(1-e)*(n.y-t.y)+2*e*(r.y-n.y)}),Fu=(e,t,n,r=.5)=>{let i=ju(e,t,r),a=ju(t,n,r),o=ju(i,a,r);return[[e,i,o],[o,a,n]]},Iu=(e,t,n,r=4)=>{let i=[[e,t,n]];for(let e=0;e{let i=[0,.5,1],a=[];for(let o of i){let i=Nu(o,e,t,n),s=Pu(o,e,t,n),c=Mu({x:-s.y,y:s.x});a.push({x:i.x+c.x*r,y:i.y+c.y*r})}return a},Ru=(e,t,n,r)=>{let i=Iu(e,t,n,5),a=[],o=[];for(let e of i)a.push(Lu(e[0],e[1],e[2],+r)),o.push(Lu(e[0],e[1],e[2],-r));for(let e=0;e{let r={x:t.x-e.x,y:t.y-e.y},i=Au(r.x,r.y,n),a={x:e.x+i.x,y:e.y+i.y},o={x:t.x+i.x,y:t.y+i.y},s={x:t.x-i.x,y:t.y-i.y},c={x:e.x-i.x,y:e.y-i.y};return[a.x,a.y,!1,o.x,o.y,!1,s.x,s.y,!1,c.x,c.y,!1,a.x,a.y,!1]},Bu=(e,t,n,r)=>{let i=[];for(let a=0;a1e-4||i.push(o,s)}return i},Vu=(e,t)=>{Tu.beginPath(),Tu.moveTo(t[0],t[1]);for(let e=3;e{let a=i?0:r.length-1,o=i?r.length-1:r.length-2,s=Bu(e,t,n,r[a]),c=Bu(e,t,n,r[o]);if(s[0]===c[0]&&s[1]===c[1]||s[0]===c[2]&&s[1]===c[3])return;let l=Vu(s,r[o]);if(!l)return;let u=Vu(c,r[a]);u&&r.splice(-1,0,[e,t,!1,l[0],l[1],!1,u[0],u[1],!1,e,t,!1])},Uu=(e,t,n,r,i=!1)=>{let a=i?0:r.length-1,o=i?r.length-1:r.length-2,s=Bu(e,t,n,r[a]),c=Bu(e,t,n,r[o]),l=Vu(s,r[o]);if(!l)return;let u=Vu(c,r[a]);if(!u)return;let d=Math.atan2(l[1]-t,l[0]-e),f=Math.atan2(u[1]-t,u[0]-e)-d;f>Math.PI?f-=2*Math.PI:f<-Math.PI&&(f+=2*Math.PI);let p=f/8,m=[e,t,!1];for(let r=0;r<=8;r++){let i=d+r*p,a=e+n*Math.cos(i),o=t+n*Math.sin(i);m.push(a,o,!1)}r.splice(-1,0,m)},Wu=(e,t,n,r,i,a=!1)=>{let o=a?0:i.length-1,s=a?i.length-1:i.length-2,c=Bu(e.x,e.y,r,i[o]),l=Bu(e.x,e.y,r,i[s]);if(c[0]===l[0]&&c[1]===l[1]||c[0]===l[2]&&c[1]===l[3])return;let u=Vu(c,i[s]);if(!u)return;let d=Vu(l,i[o]);if(!d)return;let f=t.x-e.x,p=t.y-e.y,m=Math.hypot(f,p),h={x:f/m,y:p/m},g=n.x-e.x,_=n.y-e.y,v=Math.hypot(g,_),y={x:g/v,y:_/v},b=h.x,x=h.y,S=y.x,C=y.y,w=b*C-x*S;if(w===0){i.splice(-1,0,[e.x,e.y,!1,u[0],u[1],!1,d[0],d[1],!1]);return}let T=((d[0]-u[0])*C-(d[1]-u[1])*S)/w,E=u[0]+T*b,D=u[1]+T*x;i.splice(-1,0,[e.x,e.y,!1,u[0],u[1],!1,E,D,!1,e.x,e.y,!1,d[0],d[1],!1,E,D,!1])},Gu=(e,t,n)=>{let r=e[0],i=e[1],a=e[3],o=e[4],s=Math.atan2(i-o,r-a),c=[r,i,!1];for(let e=0;e<=8;e++){let n=s-Math.PI/2+e*Math.PI/8;c.push(r+t*Math.cos(n),i+t*Math.sin(n),!1)}n.unshift(c);let l=e[e.length-3],u=e[e.length-2],d=e[e.length-6],f=e[e.length-5],p=Math.atan2(u-f,l-d),m=[l,u,!1];for(let e=0;e<=8;e++){let n=p-Math.PI/2+e*Math.PI/8;m.push(l+t*Math.cos(n),u+t*Math.sin(n),!1)}n.push(m)},Ku=(e,t,n)=>{let r=e[0],i=e[1],a=e[3],o=e[4],s=r-a,c=i-o,l=Math.hypot(s,c);if(l>0){let e=s/l,a=c/l,o=r+e*t,u=i+a*t,d=[r-a*t,i+e*t,!1,o-a*t,u+e*t,!1,o+a*t,u-e*t,!1,r+a*t,i-e*t,!1,r-a*t,i+e*t,!1];n.unshift(d)}let u=e[e.length-3],d=e[e.length-2],f=e[e.length-6],p=e[e.length-5],m=u-f,h=d-p,g=Math.hypot(m,h);if(g>0){let e=m/g,r=h/g,i=u+e*t,a=d+r*t,o=[u-r*t,d+e*t,!1,i-r*t,a+e*t,!1,i+r*t,a-e*t,!1,u+r*t,d-e*t,!1,u-r*t,d+e*t,!1];n.push(o)}},qu=(e,t)=>{let n=Eu;n.x=e[0],n.y=e[1];let r=Du;r.x=0,r.y=0;let i=Ou;i.x=0,i.y=0;let a=ku;a.x=0,a.y=0;let o=[];for(let s=3;s1)switch(Xs.joints){case 0:Hu(n.x,n.y,t,o);break;case 1:a.x=e[s-6],a.y=e[s-5],Wu(n,i,a,t,o);break;case 2:Uu(n.x,n.y,t,o)}n.x=i.x,n.y=i.y}let s=e[0],c=e[1],l=e[e.length-3],u=e[e.length-2],d=1e-4;if(Math.abs(s-l)1)switch(Xs.joints){case 0:Hu(s,c,t,o,!0);break;case 1:n.x=s,n.y=c,i.x=e[3],i.y=e[4],a.x=e[e.length-6],a.y=e[e.length-5],Wu(n,i,a,t,o,!0);break;case 2:Uu(s,c,t,o,!0)}else if(o.length>0)switch(Xs.caps){case 1:Gu(e,t,o);break;case 2:Ku(e,t,o)}return o},Ju=(e,t)=>{let n=t/2,r=[];for(let t of e){if(t.length<6)continue;let e=qu(t,n);for(let t of e)r.push(t)}return r},Yu=new Map,Xu=0,Zu=()=>{Yu.clear(),Xu=0},Qu=new Map,$u=()=>{for(let e of Qu.values())e.texture?.resource&&e.texture.resource.destroy();Qu.clear()},ed=new Map,td=0,nd=(e,t,n)=>`${t}_${n}_${e.join(`,`)}`,rd=(e,t,n)=>{let r=nd(e,t,n),i=ed.get(r);return i?(i.lastUsedFrame=td,i):null},id=(e,t,n,r,i)=>{let a=nd(e,t,n);ed.set(a,{texture:r,view:i,lastUsedFrame:td})},ad=()=>{td++;for(let[e,t]of ed)td-t.lastUsedFrame>60&&(Vc(t.texture),ed.delete(e))},od=()=>{for(let e of ed.values())Vc(e.texture);ed.clear(),td=0},sd=null,cd=()=>{sd?.texture?.resource&&sd.texture.resource.destroy(),sd=null},ld=new Map,ud=0,dd=(e,t,n)=>`${e.join(`,`)}_${t.join(`,`)}_${n.join(`,`)}`,fd=(e,t,n)=>{let r=ld.get(dd(e,t,n));return r?(r.lastUsedFrame=ud,r):null},pd=(e,t,n,r,i)=>{let a={texture:r,view:i,lastUsedFrame:ud};return ld.set(dd(e,t,n),a),a},md=()=>{ud++;for(let[e,t]of ld)ud-t.lastUsedFrame>60&&(t.texture.destroy(),ld.delete(e))},hd=()=>{for(let e of ld.values())e.texture.destroy();ld.clear(),ud=0},gd=(e,t,n,r,i,a)=>{let o=t.getPipeline(`stencil_write_atlas`);o&&(e.setPipeline(o),e.setStencilReference(0),e.setVertexBuffer(0,n),e.setBindGroup(0,i,[a]),e.draw(r,1,0,0));let s=t.getPipeline(`stencil_fill_atlas`);s&&(e.setPipeline(s),e.setStencilReference(0),e.setBindGroup(0,i,[a]),e.draw(r,1,0,0))},_d=(e,t,n)=>{if(!n.msaaDirty||!n.msaa||!n.msaaTexture?.view||!n.texture?.view)return;let r=t.createRenderPassDescriptor(n.msaaTexture.view,0,0,0,0,`load`,n.texture.view);e.beginRenderPass(r).end(),n.msaaDirty=!1},vd=(e,t,n,r,i,a)=>{let o=t.getPipeline(`stencil_write_main`);o&&(e.setPipeline(o),e.setStencilReference(0),e.setVertexBuffer(0,n),e.setBindGroup(0,i,[a]),e.draw(r,1,0,0));let s=t.getPipeline(`stencil_fill_main`);s&&(e.setPipeline(s),e.setStencilReference(0),e.setBindGroup(0,i,[a]),e.draw(r,1,0,0))},yd=(e,t,n,r,i,a,o,s=!1,c=1)=>{let l;if(o)l=`fill`;else if(s){if(su())return;l=`fill_bgra_stencil`}else l=`fill_bgra`;let u=t.getPipeline(l);if(!u){console.error(`[WebGPU] ${l} pipeline not found`);return}e.setPipeline(u),e.setVertexBuffer(0,n),e.setBindGroup(0,i,[a]),s&&!o&&!su()&&e.setStencilReference(pu()),e.draw(r,1,0,0)},bd=e=>e<=4?256:e<=8?512:1024,xd=(e,t,n)=>{let r=e.length/5,i=bd(r),a=new Uint8Array(i*4);for(let t=0;t{let r=e.length/5,i=0,a=-1;for(let n=0;n=t&&a===-1){a=n;break}}if(a===-1&&(a=r-1),i===a){let t=i*5;return{r:e[t+1],g:e[t+2],b:e[t+3],a:e[t+4]}}let o=e[i*5],s=e[a*5],c=(t-o)/(s-o),l=e[i*5+1],u=e[i*5+2],d=e[i*5+3],f=e[i*5+4],p=e[a*5+1],m=e[a*5+2],h=e[a*5+3],g=e[a*5+4];return n===0?{r:Td(Cd(wd(l/255),wd(p/255),c))*255,g:Td(Cd(wd(u/255),wd(m/255),c))*255,b:Td(Cd(wd(d/255),wd(h/255),c))*255,a:Cd(f,g,c)}:{r:Cd(l,p,c),g:Cd(u,m,c),b:Cd(d,h,c),a:Cd(f,g,c)}},Cd=(e,t,n)=>e+(t-e)*n,wd=e=>e**2.23333333,Td=e=>e**.45454545,Ed=(e,t,n)=>{let r=new Uint8Array(1024),i=e.length,a=[];for(let r=0;r>16&255)/255,g:(i>>8&255)/255,b:(i&255)/255,a:n[r]})}for(let e=0;e<256;e++){let t=e/255,n=0,o=i-1;for(let e=0;e=t){n=e,o=e+1;break}let s=a[n],c=a[o],l=0;c.offset!==s.offset&&(l=(t-s.offset)/(c.offset-s.offset));let u=Cd(s.r,c.r,l),d=Cd(s.g,c.g,l),f=Cd(s.b,c.b,l),p=Cd(s.a,c.a,l),m=e*4;r[m+0]=Math.round(u*p*255),r[m+1]=Math.round(d*p*255),r[m+2]=Math.round(f*p*255),r[m+3]=Math.round(p*255)}return r},Dd=(e,t,n)=>{let r=e[0],i=e[1],a=e[2],o=e[3],s=e[4],c=e[5];if(n===0){let e=-819.2*r-819.2*a+s,t=819.2*r-819.2*a+s,n=-819.2*r+819.2*a+s,l=-819.2*i-819.2*o+c,u=819.2*i-819.2*o+c,d=-819.2*i+819.2*o+c,f=n-e,p=d-l,m=Math.sqrt(f*f+p*p);m?(f/=m,p/=m):(f=0,p=0);let h=(t-e)*f+(u-l)*p,g=new Float32Array([e+h*f,l+h*p,t,u]);return{inverseMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),linearPoints:g}}let l=r*o-i*a;if(Math.abs(l)<1e-10)return{inverseMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),linearPoints:null};let u=1/l,d=o*u,f=-i*u,p=-a*u,m=r*u,h=(a*c-o*s)*u,g=(i*s-r*c)*u;return{inverseMatrix:new Float32Array([d,f,0,p,m,0,h,g,1]),linearPoints:null}},Od=null,K=new Float32Array(36),kd=new Float32Array(16),Ad=null,jd=null,Md=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],Nd=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=!1,_=1)=>{let v=wu(i);if(v.indexCount===0)return null;let y=n.acquireVertexBuffer(v.buffer.byteLength,v.buffer),b,x,S=rd(c,u,d);if(S)b=S.texture,x=S.view;else{let t=xd(c,u,d),n=c.length/5,r=bd(n);b=Bc(e,r,1),e.queue.writeTexture({texture:b},t,{bytesPerRow:r*4,rowsPerImage:1},{width:r,height:1}),x=b.createView(),id(c,u,d,b,x)}let C=Dd(l,a,s),w=o[3]>0?o[3]:1,T=a[0],E=a[1],D=a[3],O=a[4],k=a[6],A=a[7];K[0]=C.inverseMatrix[0],K[1]=C.inverseMatrix[3],K[2]=0,K[3]=0,K[4]=C.inverseMatrix[1],K[5]=C.inverseMatrix[4],K[6]=0,K[7]=0,K[8]=C.inverseMatrix[6],K[9]=C.inverseMatrix[7],K[10]=1,K[11]=0,K[12]=s,K[13]=Math.max(-.975,Math.min(.975,f)),K[14]=u,K[15]=819.2,C.linearPoints?(K[16]=C.linearPoints[0],K[17]=C.linearPoints[1],K[18]=C.linearPoints[2],K[19]=C.linearPoints[3]):(K[16]=0,K[17]=0,K[18]=0,K[19]=0),K[20]=1,K[21]=1,K[22]=1,K[23]=w,K[24]=T/p,K[25]=E/m,K[26]=0,K[27]=0,K[28]=D/p,K[29]=O/m,K[30]=0,K[31]=0,K[32]=k/p,K[33]=A/m,K[34]=1,K[35]=0;let j=n.acquireAndWriteUniformBuffer(K);Od||=e.createSampler({magFilter:`linear`,minFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});let M=Od,N=r.getBindGroupLayout(`gradient_fill`);if(!N)return console.error(`[WebGPU] gradient_fill bind group layout not found`),null;Md[0].resource.buffer=j,Md[1].resource=M,Md[2].resource=x;let P=e.createBindGroup({layout:N,entries:Md}),F=()=>{let t=r.getBindGroupLayout(`fill_dynamic`);if(!t)return null;kd[0]=1,kd[1]=1,kd[2]=1,kd[3]=w,kd[4]=T/p,kd[5]=E/m,kd[6]=0,kd[7]=0,kd[8]=D/p,kd[9]=O/m,kd[10]=0,kd[11]=0,kd[12]=k/p,kd[13]=A/m,kd[14]=1,kd[15]=0;let i=n.dynamicUniform.allocate(kd),a=n.dynamicUniform.getBuffer();return(!Ad||jd!==a)&&(Ad=e.createBindGroup({layout:t,entries:[{binding:0,resource:{buffer:a,size:256}}]}),jd=a),{bindGroup:Ad,offset:i}};if(h){let e=r.getPipeline(`stencil_write_atlas`);if(e){let n=F();t.setPipeline(e),t.setStencilReference(0),t.setVertexBuffer(0,y),n&&t.setBindGroup(0,n.bindGroup,[n.offset]),t.draw(v.indexCount,1,0,0)}let n=r.getGradientPipeline(`gradient_fill_stencil_atlas`,s,u);return n&&(t.setPipeline(n),t.setStencilReference(0),t.setBindGroup(0,P),t.draw(v.indexCount,1,0,0)),null}if(g&&su())return null;let I=r.getPipeline(`stencil_write_main`);if(I){let e=F();t.setPipeline(I),t.setStencilReference(0),t.setVertexBuffer(0,y),e&&t.setBindGroup(0,e.bindGroup,[e.offset]),t.draw(v.indexCount,1,0,0)}let ee=g?`gradient_fill_bgra_stencil_masked`:`gradient_fill_stencil_main`,L=r.getGradientPipeline(ee,s,u);return L&&(t.setPipeline(L),t.setStencilReference(g?pu():0),t.setBindGroup(0,P),t.draw(v.indexCount,1,0,0)),null},Pd=(e,t)=>{let n=e[0],r=e[1],i=e[2],a=e[3],o=e[4],s=e[5],c=t[0],l=t[1],u=t[3],d=t[4],f=t[6],p=t[7],m=c*n+u*r,h=c*i+u*a,g=l*n+d*r,_=l*i+d*a,v=c*o+u*s+f,y=l*o+d*s+p,b=m*_-h*g;if(Math.abs(b)<1e-10)return new Float32Array([1,0,0,0,1,0,0,0,1]);let x=1/b,S=_*x,C=-h*x,w=-g*x,T=m*x,E=(h*y-_*v)*x,D=(g*v-m*y)*x,O=S*c+C*l,k=S*u+C*d,A=w*c+T*l,j=w*u+T*d,M=S*f+C*p+E,N=w*f+T*p+D;return new Float32Array([O,A,0,k,j,0,M,N,1])},Fd=new Map,q=new Float32Array(32),Id=new Float32Array(16),Ld=null,Rd=null,zd=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],Bd=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=!1,_=1)=>{let v=wu(i);if(v.indexCount===0)return null;let y=n.acquireVertexBuffer(v.buffer.byteLength,v.buffer),b=Bc(e,l,u);e.queue.writeTexture({texture:b},s.buffer,{bytesPerRow:l*4,rowsPerImage:u,offset:s.byteOffset},{width:l,height:u});let x=Pd(c,a),S=o[0],C=o[1],w=o[2],T=o[3],E=a[0],D=a[1],O=a[3],k=a[4],A=a[6],j=a[7];q[0]=x[0],q[1]=x[1],q[2]=x[2],q[3]=0,q[4]=x[3],q[5]=x[4],q[6]=x[5],q[7]=0,q[8]=x[6],q[9]=x[7],q[10]=x[8],q[11]=0,q[12]=l,q[13]=u,q[14]=+!!d,q[15]=0,q[16]=S,q[17]=C,q[18]=w,q[19]=T,q[20]=E/p,q[21]=D/m,q[22]=0,q[23]=0,q[24]=O/p,q[25]=k/m,q[26]=0,q[27]=0,q[28]=A/p,q[29]=j/m,q[30]=1,q[31]=0;let M=n.acquireAndWriteUniformBuffer(q),N=`bitmap_${f?`s`:`n`}_${d?`r`:`c`}`,P=Fd.get(N);P||(P=e.createSampler({magFilter:f?`linear`:`nearest`,minFilter:f?`linear`:`nearest`,addressModeU:d?`repeat`:`clamp-to-edge`,addressModeV:d?`repeat`:`clamp-to-edge`}),Fd.set(N,P));let F=r.getBindGroupLayout(`bitmap_fill`);if(!F)return console.error(`[WebGPU] bitmap_fill bind group layout not found`),Vc(b),null;zd[0].resource.buffer=M,zd[1].resource=P,zd[2].resource=b.createView();let I=e.createBindGroup({layout:F,entries:zd}),ee=()=>{let t=r.getBindGroupLayout(`fill_dynamic`);if(!t)return null;Id[0]=S,Id[1]=C,Id[2]=w,Id[3]=T,Id[4]=E/p,Id[5]=D/m,Id[6]=0,Id[7]=0,Id[8]=O/p,Id[9]=k/m,Id[10]=0,Id[11]=0,Id[12]=A/p,Id[13]=j/m,Id[14]=1,Id[15]=0;let i=n.dynamicUniform.allocate(Id),a=n.dynamicUniform.getBuffer();return(!Ld||Rd!==a)&&(Ld=e.createBindGroup({layout:t,entries:[{binding:0,resource:{buffer:a,size:256}}]}),Rd=a),{bindGroup:Ld,offset:i}};if(h&&g){let e=r.getPipeline(`stencil_write`);if(e){let n=ee();n&&(t.setPipeline(e),t.setStencilReference(0),t.setVertexBuffer(0,y),t.setBindGroup(0,n.bindGroup,[n.offset]),t.draw(v.indexCount,1,0,0))}let n=r.getPipeline(`bitmap_fill_stencil`);n&&(t.setPipeline(n),t.setStencilReference(0),t.setBindGroup(0,I),t.draw(v.indexCount,1,0,0))}else{let e;if(h)e=`bitmap_fill`;else if(g){if(su())return Vc(b),null;e=`bitmap_fill_bgra_stencil`}else e=`bitmap_fill_bgra`;let n=r.getPipeline(e);if(!n)return console.error(`[WebGPU] ${e} pipeline not found`),Vc(b),null;t.setPipeline(n),t.setVertexBuffer(0,y),t.setBindGroup(0,I),g&&!h&&!su()&&t.setStencilReference(pu()),t.draw(v.indexCount,1,0,0)}return b},Vd=(e,t,n)=>{let r=e.length-5;for(let i=3;i(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),Wd=(e,t)=>{let n=t/2,r=[];for(let t of e){let e=qu(t,n);for(let t of e)r.push(t)}let i=0;for(let e of r){let t=e.length-5;for(let e=3;e{let v=Wd(i,a);if(v.indexCount===0)return null;let y=n.acquireVertexBuffer(v.buffer.byteLength,v.buffer),b,x,S=rd(l,d,f);if(S)b=S.texture,x=S.view;else{let t=xd(l,d,f),n=l.length/5,r=bd(n);b=Bc(e,r,1),e.queue.writeTexture({texture:b},t,{bytesPerRow:r*4,rowsPerImage:1},{width:r,height:1}),x=b.createView(),id(l,d,f,b,x)}let C=Dd(u,o,c),w=s[3]>0?s[3]:1,T=o[0],E=o[1],D=o[3],O=o[4],k=o[6],A=o[7];J[0]=C.inverseMatrix[0],J[1]=C.inverseMatrix[3],J[2]=0,J[3]=0,J[4]=C.inverseMatrix[1],J[5]=C.inverseMatrix[4],J[6]=0,J[7]=0,J[8]=C.inverseMatrix[6],J[9]=C.inverseMatrix[7],J[10]=1,J[11]=0,J[12]=c,J[13]=Math.max(-.975,Math.min(.975,p)),J[14]=d,J[15]=819.2,C.linearPoints?(J[16]=C.linearPoints[0],J[17]=C.linearPoints[1],J[18]=C.linearPoints[2],J[19]=C.linearPoints[3]):(J[16]=0,J[17]=0,J[18]=0,J[19]=0),J[20]=1,J[21]=1,J[22]=1,J[23]=w,J[24]=T/m,J[25]=E/h,J[26]=0,J[27]=0,J[28]=D/m,J[29]=O/h,J[30]=0,J[31]=0,J[32]=k/m,J[33]=A/h,J[34]=1,J[35]=0;let j=n.acquireAndWriteUniformBuffer(J);Gd||=e.createSampler({magFilter:`linear`,minFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});let M=Gd,N=r.getBindGroupLayout(`gradient_fill`);if(!N)return console.error(`[WebGPU] gradient_fill bind group layout not found`),null;Kd[0].resource.buffer=j,Kd[1].resource=M,Kd[2].resource=x;let P=e.createBindGroup({layout:N,entries:Kd}),F=_?g?`gradient_stroke_atlas`:`gradient_stroke_bgra`:g?`gradient_fill`:`gradient_fill_bgra`,I=r.getGradientPipeline(F,c,d);return I?(t.setPipeline(I),t.setVertexBuffer(0,y),t.setBindGroup(0,P),t.draw(v.indexCount,1,0,0),null):(console.error(`[WebGPU] ${F} pipeline not found`),null)},Jd=new Float32Array(32),Yd=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),Xd=(e,t)=>{let n=t/2,r=[];for(let t of e){let e=qu(t,n);for(let t of e)r.push(t)}let i=0;for(let e of r){let t=e.length-5;for(let e=3;e{let v=Xd(i,a);if(v.indexCount===0)return null;let y=n.acquireVertexBuffer(v.buffer.byteLength,v.buffer),b=Bc(e,u,d);e.queue.writeTexture({texture:b},c.buffer,{bytesPerRow:u*4,rowsPerImage:d,offset:c.byteOffset},{width:u,height:d});let x=Pd(l,o),S=s[3]>0?s[3]:1,C=o[0],w=o[1],T=o[3],E=o[4],D=o[6],O=o[7];Y[0]=x[0],Y[1]=x[1],Y[2]=x[2],Y[3]=0,Y[4]=x[3],Y[5]=x[4],Y[6]=x[5],Y[7]=0,Y[8]=x[6],Y[9]=x[7],Y[10]=x[8],Y[11]=0,Y[12]=u,Y[13]=d,Y[14]=+!!f,Y[15]=0,Y[16]=1,Y[17]=1,Y[18]=1,Y[19]=S,Y[20]=C/m,Y[21]=w/h,Y[22]=0,Y[23]=0,Y[24]=T/m,Y[25]=E/h,Y[26]=0,Y[27]=0,Y[28]=D/m,Y[29]=O/h,Y[30]=1,Y[31]=0;let k=n.acquireAndWriteUniformBuffer(Y),A=`bitmap_${p?`s`:`n`}_${f?`r`:`c`}`,j=Zd.get(A);j||(j=e.createSampler({magFilter:p?`linear`:`nearest`,minFilter:p?`linear`:`nearest`,addressModeU:f?`repeat`:`clamp-to-edge`,addressModeV:f?`repeat`:`clamp-to-edge`}),Zd.set(A,j));let M=r.getBindGroupLayout(`bitmap_fill`);if(!M)return console.error(`[WebGPU] bitmap_fill bind group layout not found`),Vc(b),null;Qd[0].resource.buffer=k,Qd[1].resource=j,Qd[2].resource=b.createView();let N=e.createBindGroup({layout:M,entries:Qd}),P=_?g?`bitmap_stroke_atlas`:`bitmap_stroke_bgra`:g?`bitmap_fill`:`bitmap_fill_bgra`,F=r.getPipeline(P);return F?(t.setPipeline(F),t.setVertexBuffer(0,y),t.setBindGroup(0,N),t.draw(v.indexCount,1,0,0),b):(console.error(`[WebGPU] ${P} pipeline not found`),Vc(b),null)},ef=new Float32Array([-1,-1,.5,.5,1,-1,.5,.5,-1,1,.5,.5,-1,1,.5,.5,1,-1,.5,.5,1,1,.5,.5]),tf=new Float32Array([1,1,1,1,.5,0,0,0,0,.5,0,0,.5,.5,1,0]),nf=(e,t,n,r,i)=>{if(!i)return;let a=i.clipLevel,o=1<{let u=i.clipLevel,d=i.width,f=i.height,p=s[0],m=s[1],h=s[2],g=s[3]*c;if(a.length===0)return;let _=wu(a);if(_.indexCount===0)return;let v=n.acquireVertexBuffer(_.buffer.byteLength,_.buffer),y=o[0],b=o[1],x=o[3],S=o[4],C=o[6],w=o[7];rf[0]=p,rf[1]=m,rf[2]=h,rf[3]=g,rf[4]=y/d,rf[5]=b/f,rf[6]=0,rf[7]=0,rf[8]=x/d,rf[9]=S/f,rf[10]=0,rf[11]=0,rf[12]=C/d,rf[13]=w/f,rf[14]=1,rf[15]=0;let T=n.dynamicUniform.allocate(rf),E=hu.get(u)??u,D;D=l?`clip_write_main_${Math.min(8,Math.max(1,E))}`:`clip_write`;let O=r.getPipeline(D);if(!O){console.error(`[WebGPU] ${D} pipeline not found`);return}let k=r.getBindGroupLayout(`fill_dynamic`);if(!k)return;let A=e.createBindGroup({layout:k,entries:[{binding:0,resource:{buffer:n.dynamicUniform.getBuffer(),size:256}}]});t.setPipeline(O),t.setStencilReference(0),t.setVertexBuffer(0,v),t.setBindGroup(0,A,[T]),t.draw(_.indexCount,1,0,0),E++,E>8&&(nf(e,t,n,r,i),E=u+1),hu.set(u,E)},of=new WeakMap,sf=null,cf=null,lf=e=>{switch(e){case`add`:return`instanced_add`;case`screen`:return`instanced_screen`;case`alpha`:return`instanced_alpha`;case`erase`:return`instanced_erase`;case`copy`:return`instanced_copy`;default:return`instanced`}},uf=(e,t,n,r,i,a,o,s)=>{let c=ru();if(c.count===0)return n;n&&=(n.end(),null);let l=du(),u=pu(),d=lf(Jl),f=s.getPipeline(d),p=s.getPipeline(`instanced_masked`),m=l&&p&&(r.msaaStencil?.view||r.stencil?.view),h=m?p:f;if(!h)return console.error(`[WebGPU] Instanced pipeline not found`),null;let g;if(m){let e=r.msaa&&r.msaaTexture?.view,n=e?r.msaaTexture.view:r.texture.view,i=e&&r.msaaStencil?.view?r.msaaStencil.view:r.stencil.view;e&&(r.msaaDirty=!0);let o=a.createStencilRenderPassDescriptor(n,i,`load`,`load`,null);g=t.beginRenderPass(o)}else{let e=r.msaa&&r.msaaTexture?.view,n=e?r.msaaTexture.view:r.texture.view;e&&(r.msaaDirty=!0);let i=a.createRenderPassDescriptor(n,0,0,0,0,`load`,null);g=t.beginRenderPass(i)}g.setPipeline(h),m&&g.setStencilReference(u);let _=new Float32Array(fi.buffer.buffer,fi.buffer.byteOffset,fi.offset),v=i.acquireVertexBuffer(_.byteLength,_),y=i.getUnitRectBuffer(),b=Rl()||a.getAttachment(`atlas`);if(!b)return console.error(`[WebGPU] Atlas attachment not found`),g.end(),null;let x=o.createSampler(`atlas_instanced_sampler`,!1),S=s.getBindGroupLayout(`instanced`);if(!S)return console.error(`[WebGPU] Instanced bind group layout not found`),g.end(),null;let C=b.texture.view;(sf!==x||cf!==S)&&(of=new WeakMap,sf=x,cf=S);let w=of.get(C);return w||(w=e.createBindGroup({layout:S,entries:[{binding:0,resource:x},{binding:1,resource:C}]}),of.set(C,w)),g.setVertexBuffer(0,y),g.setVertexBuffer(1,v),g.setBindGroup(0,w),g.draw(6,c.count,0,0),g.end(),c.clear(),null},df=null,ff=null,pf=null,mf=!1,hf=(e,t,n,r,i,a,o,s,c=!0,l=!0,u=!1)=>{let d=ru();if(d.count===0)return n;let f=du(),p=pu(),m=(e=>{switch(e){case`add`:return`instanced_add`;case`screen`:return`instanced_screen`;case`alpha`:return`instanced_alpha`;case`erase`:return`instanced_erase`;case`copy`:return`instanced_copy`;default:return`instanced`}})(Jl),h=s.getPipeline(m),g=s.getPipeline(`instanced_masked`),_=f&&g&&(r.msaaStencil?.view||r.stencil?.view),v=_?g:h;if(!v)return console.error(`[WebGPU] Instanced pipeline not found`),null;let y=r.msaa&&r.msaaTexture?.view,b=y?r.msaaTexture.view:r.texture.view;y&&(r.msaaDirty=!0);let x=!!_,S;if(n&&u&&pf===b&&mf===x)S=n;else{if(n&&=(n.end(),null),x){let e=y&&r.msaaStencil?.view?r.msaaStencil.view:r.stencil.view,n=a.createStencilRenderPassDescriptor(b,e,`load`,`load`,null);S=t.beginRenderPass(n)}else{let e=a.createRenderPassDescriptor(b,0,0,0,0,`load`,null);S=t.beginRenderPass(e)}pf=b,mf=x}S.setPipeline(v),x&&S.setStencilReference(p);let C=new Float32Array(fi.buffer.buffer,fi.buffer.byteOffset,fi.offset),w;l?(w=i.acquireStorageBuffer(C.byteLength),i.writeStorageBuffer(w,C)):w=i.acquireVertexBuffer(C.byteLength,C);let T=i.getUnitRectBuffer(),E=Rl()||a.getAttachment(`atlas`);if(!E)return console.error(`[WebGPU] Atlas attachment not found`),S.end(),pf=null,null;let D=o.createSampler(`atlas_instanced_sampler`,!1),O=s.getBindGroupLayout(`instanced`);if(!O)return console.error(`[WebGPU] Instanced bind group layout not found`),S.end(),pf=null,null;let k=E.texture.view;if((!df||ff!==k)&&(df=e.createBindGroup({layout:O,entries:[{binding:0,resource:D},{binding:1,resource:k}]}),ff=k),S.setVertexBuffer(0,T),S.setVertexBuffer(1,w),S.setBindGroup(0,df),c){let e=i.createIndirectBuffer(6,d.count,0,0);S.drawIndirect(e,0)}else S.draw(6,d.count,0,0);return d.clear(),S},gf=new Float32Array(12),_f=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null}],vf=(e,t,n,r,i)=>{let{device:a,commandEncoder:o,frameBufferManager:s,pipelineManager:c,textureManager:l}=i,u=Math.max(e.width,t.width),d=Math.max(e.height,t.height),f=s.createTemporaryAttachment(u,d),p=c.getPipeline(`complex_blend`),m=c.getBindGroupLayout(`complex_blend`);if(!p||!m)return console.error(`[WebGPU ComplexBlend] Pipeline not found for blend mode: ${n}`),e;let h=l.createSampler(`complex_blend_sampler`,!0),g=G.getBlendModeIndex(n);gf[0]=r[0],gf[1]=r[1],gf[2]=r[2],gf[3]=r[3],gf[4]=r[4],gf[5]=r[5],gf[6]=r[6],gf[7]=r[7],gf[8]=g,gf[9]=0,gf[10]=0,gf[11]=0;let _=i.bufferManager?i.bufferManager.acquireAndWriteUniformBuffer(gf):a.createBuffer({size:48,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});i.bufferManager||a.queue.writeBuffer(_,0,gf),_f[0].resource.buffer=_,_f[1].resource=h,_f[2].resource=t.texture.view,_f[3].resource=e.texture.view;let v=a.createBindGroup({layout:m,entries:_f}),y=s.createRenderPassDescriptor(f.texture.view,0,0,0,0,`clear`),b=o.beginRenderPass(y);return b.setPipeline(p),b.setBindGroup(0,v),b.draw(6,1,0,0),b.end(),f},yf=new Float32Array(4),bf=new Float32Array(6),xf=new Float32Array(8),Sf=new Float32Array(12),Cf=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],wf=(e,t,n,r,i,a,o,s,c,l,u,d,f,p)=>{let m=f.getPipeline(`complex_blend_copy`),h=f.getBindGroupLayout(`texture_copy`);if(!m||!h)return;yf[0]=c/o,yf[1]=l/s,yf[2]=i/o,yf[3]=a/s;let g=p.acquireAndWriteUniformBuffer(yf),_=d.createSampler(`complex_blend_copy_sampler`,!1);Cf[0].resource.buffer=g,Cf[1].resource=_,Cf[2].resource=n;let v=e.createBindGroup({layout:h,entries:Cf}),y=u.createRenderPassDescriptor(r.texture.view,0,0,0,0,`clear`),b=t.beginRenderPass(y);b.setPipeline(m),b.setBindGroup(0,v),b.draw(6,1,0,0),b.end()},Tf=(e,t,n,r,i,a,o,s,c,l)=>{let u=r.msaa&&r.msaaTexture?.view,d=u?`complex_blend_output_msaa`:`complex_blend_output`,f=c.getPipeline(d),p=c.getBindGroupLayout(`positioned_texture`);if(!f||!p)return;xf[0]=i,xf[1]=a,xf[2]=n.width,xf[3]=n.height,xf[4]=r.width,xf[5]=r.height,xf[6]=0,xf[7]=0;let m=l.acquireAndWriteUniformBuffer(xf),h=s.createSampler(`complex_blend_output_sampler`,!1);Cf[0].resource.buffer=m,Cf[1].resource=h,Cf[2].resource=n.texture.view;let g=e.createBindGroup({layout:p,entries:Cf}),_=u?r.msaaTexture.view:r.texture.view;u&&(r.msaaDirty=!0);let v=o.createRenderPassDescriptor(_,0,0,0,0,`load`,null),y=t.beginRenderPass(v);y.setPipeline(f),y.setBindGroup(0,g),y.draw(6,1,0,0),y.end()},Ef=(e,t,n,r,i,a,o)=>{let s=eu();if(s.length===0)return;if(!n||!n.texture){tu();return}let c=Rl()||r.getAttachment(`atlas`);if(!c||!c.texture){tu();return}for(let l of s){let{node:s,x_min:u,y_min:d,x_max:f,y_max:p,color_transform:m,matrix:h,blend_mode:g,global_alpha:_}=l,v=Math.ceil(Math.abs(f-u)),y=Math.ceil(Math.abs(p-d));if(v<=0||y<=0)continue;let b=Math.max(0,Math.floor(h[6])),x=Math.max(0,Math.floor(h[7]));if(b>=n.width||x>=n.height)continue;let S=h[0]!==1||h[1]!==0||h[3]!==0||h[4]!==1,C=S?v:s.w,w=S?y:s.h,T=Math.min(C,n.width-b),E=Math.min(w,n.height-x);if(T<=0||E<=0)continue;let D;if(S){D=r.createTemporaryAttachment(C,w);let n=a.getPipeline(`complex_blend_scale`),l=a.getBindGroupLayout(`texture_scale`);if(n&&l){let a=C/2,u=w/2,d=s.w/2,f=s.h/2;bf[0]=h[0],bf[1]=h[1],bf[2]=h[3],bf[3]=h[4],bf[4]=-d*h[0]-f*h[3]+a,bf[5]=-d*h[1]-f*h[4]+u;let p=r.createTemporaryAttachment(s.w,s.h);t.copyTextureToTexture({texture:c.texture.resource,origin:{x:s.x,y:s.y,z:0}},{texture:p.texture.resource,origin:{x:0,y:0,z:0}},{width:s.w,height:s.h}),Sf[0]=bf[0],Sf[1]=bf[1],Sf[2]=bf[2],Sf[3]=bf[3],Sf[4]=bf[4],Sf[5]=bf[5],Sf[6]=s.w,Sf[7]=s.h,Sf[8]=C,Sf[9]=w,Sf[10]=0,Sf[11]=0;let m=o.acquireAndWriteUniformBuffer(Sf,48),g=i.createSampler(`scale_sampler`,!0);Cf[0].resource.buffer=m,Cf[1].resource=g,Cf[2].resource=p.texture.view;let _=e.createBindGroup({layout:l,entries:Cf}),v=r.createRenderPassDescriptor(D.texture.view,0,0,0,0,`clear`),y=t.beginRenderPass(v);y.setPipeline(n),y.setBindGroup(0,_),y.draw(6,1,0,0),y.end(),r.releaseTemporaryAttachment(p)}else t.copyTextureToTexture({texture:c.texture.resource,origin:{x:s.x,y:s.y,z:0}},{texture:D.texture.resource,origin:{x:0,y:0,z:0}},{width:Math.min(s.w,C),height:Math.min(s.h,w)})}else D=r.createTemporaryAttachment(C,w),t.copyTextureToTexture({texture:c.texture.resource,origin:{x:s.x,y:s.y,z:0}},{texture:D.texture.resource,origin:{x:0,y:0,z:0}},{width:C,height:w});_d(t,r,n);let O=r.createTemporaryAttachment(C,w);wf(e,t,n.texture.view,O,b,x,n.width,n.height,C,w,r,i,a,o),xf[0]=m[0],xf[1]=m[1],xf[2]=m[2],xf[3]=_,xf[4]=m[4],xf[5]=m[5],xf[6]=m[6],xf[7]=0;let k=vf(D,O,g,xf,{device:e,commandEncoder:t,bufferManager:o,frameBufferManager:r,pipelineManager:a,textureManager:i,frameTextures:[]});Tf(e,t,k,n,b,x,r,i,a,o),r.releaseTemporaryAttachment(D),r.releaseTemporaryAttachment(O),r.releaseTemporaryAttachment(k)}tu()},X={x:0,y:0},Df=[.5,1.05,1.4,1.55,1.75,1.9,2,2.15,2.2,2.3,2.5,3,3,3.5,3.5],Of=(e,t,n,r,i)=>{let a=Math.sqrt(e[0]*e[0]+e[1]*e[1]),o=Math.sqrt(e[2]*e[2]+e[3]*e[3]),s=a/i*t,c=o/i*n,l=Df[Math.min(r-1,Df.length-1)],u=Math.round(s*l),d=Math.round(c*l),f=1,p=1;return s>128?f=.0625:s>64?f=.125:s>32?f=.25:s>16&&(f=.5),c>128?p=.0625:c>64?p=.125:c>32?p=.25:c>16&&(p=.5),{baseBlurX:s,baseBlurY:c,offsetX:u,offsetY:d,bufferScaleX:f,bufferScaleY:p}},kf=(e,t,n,r)=>{let i=Math.ceil(t*.5),a=1-(i-t*.5),o=1+t;return{offsetX:e?1/n:0,offsetY:e?0:1/r,fraction:a,samples:o,halfBlur:i}},Af=new Float32Array(4),jf=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],Mf=null,Nf=new WeakMap,Pf=(e,t,n,r)=>{Mf||(Af[0]=1,Af[1]=1,Af[2]=0,Af[3]=0,Mf=e.createBuffer({size:Af.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),e.queue.writeBuffer(Mf,0,Af));let i=Nf.get(r);return i||(i=e.createBindGroup({layout:t,entries:[{binding:0,resource:{buffer:Mf}},{binding:1,resource:n},{binding:2,resource:r}]}),Nf.set(r,i)),i},Ff=(e,t,n,r,i,a,o)=>{let{device:s,commandEncoder:c,frameBufferManager:l,pipelineManager:u,textureManager:d}=o,{baseBlurX:f,baseBlurY:p,offsetX:m,offsetY:h,bufferScaleX:g,bufferScaleY:_}=Of(t,n,r,i,a);X.x+=m,X.y+=h;let v=e.width+m*2,y=e.height+h*2,b=Math.ceil(v*g),x=Math.ceil(y*_),S=l.createTemporaryAttachment(b,x),C=l.createTemporaryAttachment(b,x),w=d.createSampler(`blur_sampler`,!0);If(s,c,l,u,e,S,w,g,_,m*g,h*_);let T=f*g,E=p*_,D=[S,C],O=0;for(let e=0;e0){let e=O;O=(O+1)%2,Lf(s,c,l,u,D[e],D[O],w,!0,T,o.bufferManager)}if(r>0){let e=O;O=(O+1)%2,Lf(s,c,l,u,D[e],D[O],w,!1,E,o.bufferManager)}}let k=D[O];if(g!==1||_!==1){let e=l.createTemporaryAttachment(v,y);Rf(s,c,l,u,k,e,w),l.releaseTemporaryAttachment(S),l.releaseTemporaryAttachment(C),k=e}else{let e=(O+1)%2;l.releaseTemporaryAttachment(D[e])}return k},If=(e,t,n,r,i,a,o,s,c,l,u)=>{let d=r.getPipeline(`texture_copy_rgba8`),f=r.getBindGroupLayout(`texture_copy`);if(!d||!f){console.error(`[WebGPU BlurFilter] texture_copy_rgba8 pipeline not found`);return}let p=i.width*s,m=i.height*c,h=Pf(e,f,o,i.texture.view),g=n.createRenderPassDescriptor(a.texture.view,0,0,0,0,`clear`),_=t.beginRenderPass(g);_.setPipeline(d),_.setBindGroup(0,h),_.setViewport(l,u,p,m,0,1),_.setScissorRect(Math.floor(l),Math.floor(u),Math.ceil(p),Math.ceil(m)),_.draw(6,1,0,0),_.end()},Lf=(e,t,n,r,i,a,o,s,c,l)=>{let{offsetX:u,offsetY:d,fraction:f,samples:p,halfBlur:m}=kf(s,c,i.width,i.height),h=Math.max(1,Math.min(16,m)),g=r.getPipeline(`blur_filter_${h}`),_=r.getBindGroupLayout(`blur_filter`);if(!g||!_){console.error(`[WebGPU BlurFilter] blur_filter_${h} pipeline not found`);return}Af[0]=u,Af[1]=d,Af[2]=f,Af[3]=p;let v=l?l.acquireAndWriteUniformBuffer(Af):e.createBuffer({size:Af.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});l||e.queue.writeBuffer(v,0,Af),jf[0].resource.buffer=v,jf[1].resource=o,jf[2].resource=i.texture.view;let y=e.createBindGroup({layout:_,entries:jf}),b=n.createRenderPassDescriptor(a.texture.view,0,0,0,0,`clear`),x=t.beginRenderPass(b);x.setPipeline(g),x.setBindGroup(0,y),x.draw(6,1,0,0),x.end()},Rf=(e,t,n,r,i,a,o)=>{let s=r.getPipeline(`texture_copy_rgba8`),c=r.getBindGroupLayout(`texture_copy`);if(!s||!c){console.error(`[WebGPU BlurFilter] texture_copy_rgba8 pipeline not found`);return}let l=Pf(e,c,o,i.texture.view),u=n.createRenderPassDescriptor(a.texture.view,0,0,0,0,`clear`),d=t.beginRenderPass(u);d.setPipeline(s),d.setBindGroup(0,l),d.draw(6,1,0,0),d.end()},zf=new Float32Array(20),Bf=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],Vf=(e,t,n)=>{let{device:r,commandEncoder:i,frameBufferManager:a,pipelineManager:o,textureManager:s}=n,c=a.createTemporaryAttachment(e.width,e.height),l=o.getPipeline(`color_matrix_filter`),u=o.getBindGroupLayout(`color_matrix_filter`);if(!l||!u)return console.error(`[WebGPU ColorMatrixFilter] Pipeline not found`),e;let d=s.createSampler(`color_matrix_sampler`,!0);zf[0]=t[0],zf[1]=t[5],zf[2]=t[10],zf[3]=t[15],zf[4]=t[1],zf[5]=t[6],zf[6]=t[11],zf[7]=t[16],zf[8]=t[2],zf[9]=t[7],zf[10]=t[12],zf[11]=t[17],zf[12]=t[3],zf[13]=t[8],zf[14]=t[13],zf[15]=t[18],zf[16]=t[4]/255,zf[17]=t[9]/255,zf[18]=t[14]/255,zf[19]=t[19]/255;let f=n.bufferManager?n.bufferManager.acquireAndWriteUniformBuffer(zf):r.createBuffer({size:zf.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});n.bufferManager||r.queue.writeBuffer(f,0,zf),Bf[0].resource.buffer=f,Bf[1].resource=d,Bf[2].resource=e.texture.view;let p=r.createBindGroup({layout:u,entries:Bf}),m=a.createRenderPassDescriptor(c.texture.view,0,0,0,0,`clear`),h=i.beginRenderPass(m);return h.setPipeline(l),h.setBindGroup(0,p),h.draw(6,1,0,0),h.end(),c},Hf=Math.PI/180,Uf=(e,t)=>[(e>>16&255)/255*t,(e>>8&255)/255*t,(e&255)/255*t,t],Wf=(e,t)=>[(e>>16&255)/255,(e>>8&255)/255,(e&255)/255,t],Gf=new Float32Array(16),Kf=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null}],qf=(e,t,n,r,i,a,o,s,c,l,u,d)=>{let{device:f,commandEncoder:p,frameBufferManager:m,pipelineManager:h,textureManager:g}=d,_=X.x,v=X.y,y=e.width,b=e.height,x=Ff(e,t,i,a,s,u,d),S=x.width,C=x.height,w=X.x,T=X.y,E=c?y:S,D=c?b:C,O=w-_,k=T-v,A=c?0:O,j=c?0:k,M=c?-O:0,N=c?-k:0,P=E/y,F=D/b,I=A/y,ee=j/b,L=E/S,R=D/C,z=M/S,te=N/C,ne=m.createTemporaryAttachment(E,D),re=h.getFilterPipeline(`glow_filter`,{IS_INNER:+!!c,IS_KNOCKOUT:+!!l}),ie=h.getBindGroupLayout(`glow_filter`);if(!re||!ie)return console.error(`[WebGPU GlowFilter] Pipeline not found`),m.releaseTemporaryAttachment(x),e;let ae=g.createSampler(`glow_sampler`,!0),[oe,se,ce,le]=Uf(n,r);Gf[0]=oe,Gf[1]=se,Gf[2]=ce,Gf[3]=le,Gf[4]=P,Gf[5]=F,Gf[6]=I,Gf[7]=ee,Gf[8]=L,Gf[9]=R,Gf[10]=z,Gf[11]=te,Gf[12]=o,Gf[13]=+!!c,Gf[14]=+!!l,Gf[15]=0;let B=d.bufferManager?d.bufferManager.acquireAndWriteUniformBuffer(Gf):f.createBuffer({size:Gf.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});d.bufferManager||f.queue.writeBuffer(B,0,Gf),Kf[0].resource.buffer=B,Kf[1].resource=ae,Kf[2].resource=x.texture.view,Kf[3].resource=e.texture.view;let ue=f.createBindGroup({layout:ie,entries:Kf}),de=m.createRenderPassDescriptor(ne.texture.view,0,0,0,0,`clear`),fe=p.beginRenderPass(de);return fe.setPipeline(re),fe.setBindGroup(0,ue),fe.draw(6,1,0,0),fe.end(),m.releaseTemporaryAttachment(x),ne},Jf=new Float32Array(16),Yf=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null}],Xf=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m)=>{let{device:h,commandEncoder:g,frameBufferManager:_,pipelineManager:v,textureManager:y}=m,b=X.x,x=X.y,S=e.width,C=e.height,w=Ff(e,t,o,s,l,p,m),T=w.width,E=w.height,D=X.x,O=X.y,k=D-b,A=O-x,j=Math.sqrt(t[0]*t[0]+t[1]*t[1]),M=Math.sqrt(t[2]*t[2]+t[3]*t[3]),N=r*Hf,P=Math.cos(N)*n*(j/p),F=Math.sin(N)*n*(M/p),I=u?S:T+Math.max(0,Math.abs(P)-k),ee=u?C:E+Math.max(0,Math.abs(F)-A),L=Math.ceil(I),R=Math.ceil(ee),z=(L-I)/2,te=(R-ee)/2,ne=u?0:Math.max(0,k-P)+z,re=u?0:Math.max(0,A-F)+te,ie=u?P-D:(P>0?Math.max(0,P-k):0)+z,ae=u?F-O:(F>0?Math.max(0,F-A):0)+te,oe=_.createTemporaryAttachment(L,R),se=u,ce=d,le=f;u?ce=d||f:!d&&f&&(ce=!0,le=!0);let B=v.getFilterPipeline(`drop_shadow_filter`,{IS_INNER:+!!se,IS_KNOCKOUT:+!!ce,IS_HIDE_OBJECT:+!!le}),ue=v.getBindGroupLayout(`drop_shadow_filter`);if(!B||!ue)return console.error(`[WebGPU DropShadowFilter] Pipeline not found`),_.releaseTemporaryAttachment(w),e;let de=y.createSampler(`drop_shadow_sampler`,!0),[fe,pe,me,he]=Uf(i,a),ge=L/S,_e=R/C,ve=ne/S,V=re/C,ye=L/T,be=R/E,xe=ie/T,Se=ae/E;Jf[0]=fe,Jf[1]=pe,Jf[2]=me,Jf[3]=he,Jf[4]=ge,Jf[5]=_e,Jf[6]=ve,Jf[7]=V,Jf[8]=ye,Jf[9]=be,Jf[10]=xe,Jf[11]=Se,Jf[12]=c,Jf[13]=+!!se,Jf[14]=+!!ce,Jf[15]=+!!le;let Ce=m.bufferManager?m.bufferManager.acquireAndWriteUniformBuffer(Jf):h.createBuffer({size:Jf.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});m.bufferManager||h.queue.writeBuffer(Ce,0,Jf),Yf[0].resource.buffer=Ce,Yf[1].resource=de,Yf[2].resource=w.texture.view,Yf[3].resource=e.texture.view;let we=h.createBindGroup({layout:ue,entries:Yf}),Te=_.createRenderPassDescriptor(oe.texture.view,0,0,0,0,`clear`),Ee=g.beginRenderPass(Te);return Ee.setPipeline(B),Ee.setBindGroup(0,we),Ee.draw(6,1,0,0),Ee.end(),_.releaseTemporaryAttachment(w),oe},Zf=new Float32Array(8),Qf=new Float32Array(20),$f=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],ep=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null}],tp=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)=>{let{device:g,commandEncoder:_,frameBufferManager:v,pipelineManager:y,textureManager:b}=h,x=X.x,S=X.y,C=e.width,w=e.height,T=Math.sqrt(t[0]*t[0]+t[1]*t[1]),E=Math.sqrt(t[2]*t[2]+t[3]*t[3]),D=r*Hf,O=Math.cos(D)*n*(T/m),k=Math.sin(D)*n*(E/m),A=v.createTemporaryAttachment(C,w);_.copyTextureToTexture({texture:e.texture.resource,origin:{x:0,y:0,z:0}},{texture:A.texture.resource,origin:{x:0,y:0,z:0}},{width:C,height:w});let j=y.getPipeline(`texture_erase`),M=y.getBindGroupLayout(`texture_copy`);if(j&&M){let t=b.createSampler(`erase_sampler`,!0),n=O*2/C,r=k*2/w;Zf[0]=1,Zf[1]=1,Zf[2]=n,Zf[3]=r,Zf[4]=0,Zf[5]=0,Zf[6]=0,Zf[7]=0;let i=h.bufferManager?h.bufferManager.acquireAndWriteUniformBuffer(Zf):g.createBuffer({size:Zf.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});h.bufferManager||g.queue.writeBuffer(i,0,Zf),$f[0].resource.buffer=i,$f[1].resource=t,$f[2].resource=e.texture.view;let a=g.createBindGroup({layout:M,entries:$f}),o=v.createRenderPassDescriptor(A.texture.view,0,0,0,0,`load`),s=_.beginRenderPass(o);s.setPipeline(j),s.setBindGroup(0,a),s.draw(6,1,0,0),s.end()}let N=Ff(A,t,c,l,d,m,h);v.releaseTemporaryAttachment(A);let P=N.width,F=N.height,I=Math.abs(O),ee=Math.abs(k),L=f===1,R=Math.ceil(P+I*2),z=Math.ceil(F+ee*2),te=L?C:R,ne=L?w:z,re=(P-C)/2,ie=(F-w)/2,ae=L?0:Math.floor(I+re),oe=L?0:Math.floor(ee+ie),se=Math.floor(L?-re-O:I-O),ce=Math.floor(L?-ie-k:ee-k),le=te/C,B=ne/w,ue=ae/C,de=oe/w,fe=te/P,pe=ne/F,me=se/P,he=ce/F,ge=v.createTemporaryAttachment(te,ne),_e=y.getFilterPipeline(`bevel_filter`,{BEVEL_TYPE:f,IS_KNOCKOUT:+!!p}),ve=y.getBindGroupLayout(`bevel_filter`);if(!_e||!ve)return console.error(`[WebGPU BevelFilter] Pipeline not found`),v.releaseTemporaryAttachment(N),e;let V=b.createSampler(`bevel_sampler`,!0),[ye,be,xe,Se]=Uf(i,a),[Ce,we,Te,Ee]=Uf(o,s);Qf[0]=ye,Qf[1]=be,Qf[2]=xe,Qf[3]=Se,Qf[4]=Ce,Qf[5]=we,Qf[6]=Te,Qf[7]=Ee,Qf[8]=u,Qf[9]=+!!L,Qf[10]=+!!p,Qf[11]=f,Qf[12]=le,Qf[13]=B,Qf[14]=ue,Qf[15]=de,Qf[16]=fe,Qf[17]=pe,Qf[18]=me,Qf[19]=he;let De=h.bufferManager?h.bufferManager.acquireAndWriteUniformBuffer(Qf):g.createBuffer({size:Qf.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});h.bufferManager||g.queue.writeBuffer(De,0,Qf),ep[0].resource.buffer=De,ep[1].resource=V,ep[2].resource=N.texture.view,ep[3].resource=e.texture.view;let Oe=g.createBindGroup({layout:ve,entries:ep}),ke=v.createRenderPassDescriptor(ge.texture.view,0,0,0,0,`clear`),Ae=_.beginRenderPass(ke);return Ae.setPipeline(_e),Ae.setBindGroup(0,Oe),Ae.draw(6,1,0,0),Ae.end(),v.releaseTemporaryAttachment(N),X.x=x+ae,X.y=S+oe,ge},np=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],rp=new Map,ip=(e,t,n,r,i,a,o,s,c,l,u)=>{let{device:d,commandEncoder:f,frameBufferManager:p,textureManager:m}=u,h=e.width,g=e.height,_=p.createTemporaryAttachment(h,g),v=`${t},${n},${o},${s}`,y=rp.get(v);if(!y){let e=G.getConvolutionFilterFragmentShader(t,n,o,s),r=d.createShaderModule({code:e}),i=d.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}}]}),a=d.createPipelineLayout({bindGroupLayouts:[i]});y={pipeline:d.createRenderPipeline({layout:a,vertex:{module:r,entryPoint:`vs_main`,buffers:[]},fragment:{module:r,entryPoint:`fs_main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}}),bindGroupLayout:i},rp.set(v,y)}let b=m.createSampler(`convolution_sampler`,!0),x=t*n,S=Math.ceil(x/4),[C,w,T,E]=Wf(c,l),D=new Float32Array(S*4);for(let e=0;e{let{device:h,commandEncoder:g,frameBufferManager:_,pipelineManager:v,textureManager:y}=m,b=X.x,x=X.y,S=e.width,C=e.height,w=Math.sqrt(t[0]*t[0]+t[1]*t[1]),T=Math.sqrt(t[2]*t[2]+t[3]*t[3]),E=r*Hf,D=Math.cos(E)*n*(w/p),O=Math.sin(E)*n*(T/p),k=v.getPipeline(`bevel_base`),A=v.getBindGroupLayout(`bevel_base`);if(!k||!A)return console.error(`[WebGPU GradientBevelFilter] bevel_base pipeline not found`),e;let j=_.createTemporaryAttachment(S,C),M=y.createSampler(`bevel_base_sampler`,!0);ap[0]=2*D/S,ap[1]=2*O/C,ap[2]=0,ap[3]=0;let N=m.bufferManager?m.bufferManager.acquireAndWriteUniformBuffer(ap):h.createBuffer({size:ap.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});m.bufferManager||h.queue.writeBuffer(N,0,ap),sp[0].resource.buffer=N,sp[1].resource=M,sp[2].resource=e.texture.view;let P=h.createBindGroup({layout:A,entries:sp}),F=_.createRenderPassDescriptor(j.texture.view,0,0,0,0,`clear`),I=g.beginRenderPass(F);I.setPipeline(k),I.setBindGroup(0,P),I.draw(6,1,0,0),I.end();let ee=Ff(j,t,s,c,u,p,m);_.releaseTemporaryAttachment(j);let L=ee.width,R=ee.height,z=d===1,te=Math.abs(D),ne=Math.abs(O),re=(L-S)/2,ie=(R-C)/2,ae=Math.ceil(L+te*2),oe=Math.ceil(R+ne*2),se=z?S:ae,ce=z?C:oe,le=z?0:te+re,B=z?0:ne+ie,ue=z?-re-D:te-D,de=z?-ie-O:ne-O,fe=fd(o,i,a);if(!fe){let e=Ed(o,i,a),t=h.createTexture({size:{width:256,height:1},format:`rgba8unorm`,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});h.queue.writeTexture({texture:t},e.buffer,{bytesPerRow:1024,offset:e.byteOffset},{width:256,height:1}),fe=pd(o,i,a,t,t.createView())}let pe=fe.view,me=se/S,he=ce/C,ge=le/S,_e=B/C,ve=se/L,V=ce/R,ye=ue/L,be=de/R,xe=_.createTemporaryAttachment(se,ce),Se=v.getFilterPipeline(`gradient_bevel_filter`,{BEVEL_TYPE:d,IS_KNOCKOUT:+!!f}),Ce=v.getBindGroupLayout(`gradient_bevel_filter`);if(!Se||!Ce)return console.error(`[WebGPU GradientBevelFilter] Pipeline not found`),_.releaseTemporaryAttachment(ee),e;let we=y.createSampler(`gradient_bevel_sampler`,!0);op[0]=l,op[1]=+!!z,op[2]=+!!f,op[3]=d,op[4]=me,op[5]=he,op[6]=ge,op[7]=_e,op[8]=ve,op[9]=V,op[10]=ye,op[11]=be;let Te=m.bufferManager?m.bufferManager.acquireAndWriteUniformBuffer(op):h.createBuffer({size:op.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});m.bufferManager||h.queue.writeBuffer(Te,0,op),cp[0].resource.buffer=Te,cp[1].resource=we,cp[2].resource=ee.texture.view,cp[3].resource=e.texture.view,cp[4].resource=pe;let Ee=h.createBindGroup({layout:Ce,entries:cp}),De=_.createRenderPassDescriptor(xe.texture.view,0,0,0,0,`clear`),Oe=g.beginRenderPass(De);return Oe.setPipeline(Se),Oe.setBindGroup(0,Ee),Oe.draw(6,1,0,0),Oe.end(),_.releaseTemporaryAttachment(ee),X.x=b+le,X.y=x+B,xe},up=new Float32Array(12),dp=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null},{binding:4,resource:null}],fp=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m)=>{let{device:h,commandEncoder:g,frameBufferManager:_,pipelineManager:v,textureManager:y}=m,b=X.x,x=X.y,S=e.width,C=e.height,w=Ff(e,t,s,c,u,p,m),T=w.width,E=w.height,D=X.x,O=X.y,k=D-b,A=O-x,j=Math.sqrt(t[0]*t[0]+t[1]*t[1]),M=Math.sqrt(t[2]*t[2]+t[3]*t[3]),N=r*Hf,P=Math.cos(N)*n*(j/p),F=Math.sin(N)*n*(M/p),I=d===1,ee=I?S:T+Math.max(0,Math.abs(P)-k),L=I?C:E+Math.max(0,Math.abs(F)-A),R=Math.ceil(ee),z=Math.ceil(L),te=(R-ee)/2,ne=(z-L)/2,re=I?0:Math.max(0,k-P)+te,ie=I?0:Math.max(0,A-F)+ne,ae=I?P-D:(P>0?Math.max(0,P-k):0)+te,oe=I?F-O:(F>0?Math.max(0,F-A):0)+ne,se=fd(o,i,a);if(!se){let e=Ed(o,i,a),t=h.createTexture({size:{width:256,height:1},format:`rgba8unorm`,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});h.queue.writeTexture({texture:t},e.buffer,{bytesPerRow:1024,offset:e.byteOffset},{width:256,height:1}),se=pd(o,i,a,t,t.createView())}let ce=se.view,le=R/S,B=z/C,ue=re/S,de=ie/C,fe=R/T,pe=z/E,me=ae/T,he=oe/E,ge=_.createTemporaryAttachment(R,z),_e=v.getFilterPipeline(`gradient_glow_filter`,{GLOW_TYPE:d,IS_KNOCKOUT:+!!f}),ve=v.getBindGroupLayout(`gradient_glow_filter`);if(!_e||!ve)return console.error(`[WebGPU GradientGlowFilter] Pipeline not found`),_.releaseTemporaryAttachment(w),e;let V=y.createSampler(`gradient_glow_sampler`,!0);up[0]=l,up[1]=+!!I,up[2]=+!!f,up[3]=d,up[4]=le,up[5]=B,up[6]=ue,up[7]=de,up[8]=fe,up[9]=pe,up[10]=me,up[11]=he;let ye=m.bufferManager?m.bufferManager.acquireAndWriteUniformBuffer(up):h.createBuffer({size:up.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});m.bufferManager||h.queue.writeBuffer(ye,0,up),dp[0].resource.buffer=ye,dp[1].resource=V,dp[2].resource=w.texture.view,dp[3].resource=e.texture.view,dp[4].resource=ce;let be=h.createBindGroup({layout:ve,entries:dp}),xe=_.createRenderPassDescriptor(ge.texture.view,0,0,0,0,`clear`),Se=g.beginRenderPass(xe);return Se.setPipeline(_e),Se.setBindGroup(0,be),Se.draw(6,1,0,0),Se.end(),_.releaseTemporaryAttachment(w),X.x=b+re,X.y=x+ie,ge},pp=new Float32Array(12),mp=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null}],hp=new Map,gp=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)=>{let{device:g,commandEncoder:_,frameBufferManager:v,textureManager:y}=h,b=e.width,x=e.height,S=r,C=i,w=v.createTemporaryAttachment(b,x),T=g.createTexture({size:{width:r,height:i},format:`rgba8unorm`,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});g.queue.writeTexture({texture:T},n.buffer,{bytesPerRow:r*4,offset:n.byteOffset},{width:r,height:i});let E=`${s},${c},${d}`,D=hp.get(E);if(!D){let e=G.getDisplacementMapFilterFragmentShader(s,c,d),t=g.createShaderModule({code:G.getBlurFilterVertexShader()}),n=g.createShaderModule({code:e}),r=g.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{}}]}),i=g.createPipelineLayout({bindGroupLayouts:[r]});D={pipeline:g.createRenderPipeline({layout:i,vertex:{module:t,entryPoint:`main`,buffers:[]},fragment:{module:n,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}}),bindGroupLayout:r},hp.set(E,D)}let O=y.createSampler(`displacement_sampler`,!0),k=d===1,A=k?48:32;if(pp[0]=S/r,pp[1]=C/i,pp[2]=a/r,pp[3]=(C-i-o)/i,pp[4]=l/S,pp[5]=u/C,pp[6]=0,pp[7]=0,k){let[e,t,n,r]=Uf(f,p);pp[8]=e,pp[9]=t,pp[10]=n,pp[11]=r}let j=h.bufferManager?h.bufferManager.acquireAndWriteUniformBuffer(pp,A):g.createBuffer({size:A,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});h.bufferManager||g.queue.writeBuffer(j,0,pp,0,A/4),mp[0].resource.buffer=j,mp[1].resource=O,mp[2].resource=e.texture.view,mp[3].resource=T.createView();let M=g.createBindGroup({layout:D.bindGroupLayout,entries:mp}),N=v.createRenderPassDescriptor(w.texture.view,0,0,0,0,`clear`),P=_.beginRenderPass(N);return P.setPipeline(D.pipeline),P.setBindGroup(0,M),P.draw(6,1,0,0),P.end(),h.frameTextures.push(T),w},_p=new Float32Array(4),vp=new Float32Array(6),yp=new Float32Array(6),Z=new Float32Array(8),bp=new Float32Array(12),xp=new Float32Array(20),Sp=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],Cp=new Set([`normal`,`layer`,`add`,`screen`,`alpha`,`erase`,`copy`]),wp=new Float32Array([1,-1,0,1]),Tp=e=>e[0]===1&&e[1]===1&&e[2]===1&&e[3]===1&&e[4]===0&&e[5]===0&&e[6]===0&&e[7]===0,Ep=(e,t,n)=>{let r=e.frameBufferManager.createTemporaryAttachment(t.width,t.height),i=e.pipelineManager.getPipeline(`color_transform`),a=e.pipelineManager.getBindGroupLayout(`texture_copy`);if(!i||!a||!t.texture||!r.texture)return t;Z[0]=n[0],Z[1]=n[1],Z[2]=n[2],Z[3]=n[3],Z[4]=n[4],Z[5]=n[5],Z[6]=n[6],Z[7]=0;let o=e.bufferManager.acquireAndWriteUniformBuffer(Z),s=e.textureManager.createSampler(`color_transform_sampler`,!1);Sp[0].resource.buffer=o,Sp[1].resource=s,Sp[2].resource=t.texture.view;let c=e.device.createBindGroup({layout:a,entries:Sp}),l=e.frameBufferManager.createRenderPassDescriptor(r.texture.view,0,0,0,0,`clear`),u=e.commandEncoder.beginRenderPass(l);return u.setPipeline(i),u.setBindGroup(0,c),u.draw(6,1,0,0),u.end(),r},Dp=(e,t,n)=>{let r=n.createTemporaryAttachment(e.w,e.h),i=Rl()||n.getAttachment(`atlas`);return i&&i.texture&&r.texture?t.copyTextureToTexture({texture:i.texture.resource,origin:{x:e.x,y:e.y,z:0}},{texture:r.texture.resource,origin:{x:0,y:0,z:0}},{width:e.w,height:e.h}):console.error(`[WebGPU Filter] $getTextureFromNode: FAILED - missing atlas or textures`),r},Op=e=>Cp.has(e),kp=(e,t,n,r,i,a)=>{let o=e.frameBufferManager.createTemporaryAttachment(i,a),s=e.pipelineManager.getPipeline(`complex_blend_copy`),c=e.pipelineManager.getBindGroupLayout(`texture_copy`);if(!s||!c||!t.texture||!o.texture)return o;let l=i/t.width,u=a/t.height,d=n/t.width,f=r/t.height;_p[0]=l,_p[1]=u,_p[2]=d,_p[3]=f;let p=e.bufferManager.acquireAndWriteUniformBuffer(_p),m=e.textureManager.createSampler(`filter_copy_sampler`,!1);Sp[0].resource.buffer=p,Sp[1].resource=m,Sp[2].resource=t.texture.view;let h=e.device.createBindGroup({layout:c,entries:Sp}),g=e.frameBufferManager.createRenderPassDescriptor(o.texture.view,0,0,0,0,`clear`),_=e.commandEncoder.beginRenderPass(g);return _.setPipeline(s),_.setBindGroup(0,h),_.draw(6,1,0,0),_.end(),o},Ap=(e,t,n,r,i)=>{let a=n.msaa&&n.msaaTexture?.view,o=a?`filter_complex_blend_output_msaa`:`filter_complex_blend_output`,s=e.pipelineManager.getPipeline(o),c=e.pipelineManager.getBindGroupLayout(`positioned_texture`);if(!s||!c||!t.texture||!n.texture)return;Z[0]=r,Z[1]=i,Z[2]=t.width,Z[3]=t.height,Z[4]=n.width,Z[5]=n.height,Z[6]=0,Z[7]=0;let l=e.bufferManager.acquireAndWriteUniformBuffer(Z),u=e.textureManager.createSampler(`filter_blend_output_sampler`,!1);Sp[0].resource.buffer=l,Sp[1].resource=u,Sp[2].resource=t.texture.view;let d=e.device.createBindGroup({layout:c,entries:Sp}),f=a?n.msaaTexture.view:n.texture.view;a&&(n.msaaDirty=!0);let p=e.frameBufferManager.createRenderPassDescriptor(f,0,0,0,0,`load`,null),m=e.commandEncoder.beginRenderPass(p);m.setPipeline(s),m.setBindGroup(0,d),m.draw(6,1,0,0),m.end()},jp=(e,t,n,r,i,a,o,s)=>{let c=e.mainAttachment||e.frameBufferManager.getAttachment(`main`);if(!c||!c.texture||!t.texture)return;let l=i,u=a,d=t.width,f=t.height,p=0,m=0;if(l<0&&(p=-l/t.width,d+=l,l=0),u<0&&(m=-u/t.height,f+=u,u=0),d<=0||f<=0)return;let h=c.width,g=c.height;if(l+d>h&&(d=h-l),u+f>g&&(f=g-u),Op(r)){let n=c.msaa&&c.msaaTexture?.view,i=du()&&(c.msaaStencil?.view||c.stencil?.view),a;if(i)a=n?`filter_output_masked_msaa`:`filter_output_masked`;else switch(r){case`add`:a=n?`filter_output_add_msaa`:`filter_output_add`;break;case`screen`:a=n?`filter_output_screen_msaa`:`filter_output_screen`;break;case`alpha`:a=n?`filter_output_alpha_msaa`:`filter_output_alpha`;break;case`erase`:a=n?`filter_output_erase_msaa`:`filter_output_erase`;break;case`copy`:a=n?`texture_copy_bgra_msaa`:`texture_copy_bgra`;break;default:a=n?`filter_output_msaa`:`filter_output`}let o=e.pipelineManager.getPipeline(a),s=e.pipelineManager.getBindGroupLayout(`texture_copy`);if((!o||!s)&&(a=n?`filter_output_msaa`:`filter_output`,o=e.pipelineManager.getPipeline(a),s=e.pipelineManager.getBindGroupLayout(`texture_copy`),!o||!s))return;let _=e.textureManager.createSampler(`filter_output_sampler`,!0),v=d/t.width,y=f/t.height;_p[0]=v,_p[1]=y,_p[2]=p,_p[3]=m;let b=e.bufferManager.acquireAndWriteUniformBuffer(_p);Sp[0].resource.buffer=b,Sp[1].resource=_,Sp[2].resource=t.texture.view;let x=e.device.createBindGroup({layout:s,entries:Sp}),S=n?c.msaaTexture.view:c.texture.view,C=n?c.texture.view:null,w;if(i){let t=n&&c.msaaStencil?.view?c.msaaStencil.view:c.stencil.view;w=e.frameBufferManager.createStencilRenderPassDescriptor(S,t,`load`,`load`,C)}else w=e.frameBufferManager.createRenderPassDescriptor(S,0,0,0,0,`load`,C);let T=Math.max(0,l),E=Math.max(0,u),D=Math.max(1,d),O=Math.max(1,f),k=Math.max(0,Math.floor(T)),A=Math.max(0,Math.floor(E)),j=Math.max(1,Math.min(Math.ceil(T+D)-k,h-k)),M=Math.max(1,Math.min(Math.ceil(E+O)-A,g-A));if(j<=0||M<=0||k>=h||A>=g)return;let N=e.commandEncoder.beginRenderPass(w);N.setPipeline(o),N.setBindGroup(0,x),i&&N.setStencilReference(pu()),N.setViewport(T,E,D,O,0,1),N.setScissorRect(k,A,j,M),N.draw(6,1,0,0),N.end()}else{let i=kp(e,c,l,u,d,f);Z[0]=n[0],Z[1]=n[1],Z[2]=n[2],Z[3]=n[3],Z[4]=n[4],Z[5]=n[5],Z[6]=n[6],Z[7]=0;let a=vf(t,i,r,Z,{device:e.device,commandEncoder:e.commandEncoder,bufferManager:e.bufferManager,frameBufferManager:e.frameBufferManager,pipelineManager:e.pipelineManager,textureManager:e.textureManager,frameTextures:e.frameTextures});Ap(e,a,c,l,u),e.frameBufferManager.releaseTemporaryAttachment(i),e.frameBufferManager.releaseTemporaryAttachment(a)}},Mp=(e,t,n,r,i,a,o,s,c,l,u,d)=>{X.x=0,X.y=0;let f=Dp(e,l.commandEncoder,l.frameBufferManager);if(f.texture){let t=l.frameBufferManager.createTemporaryAttachment(e.w,e.h),n=l.pipelineManager.getPipeline(`texture_copy_rgba8`),r=l.pipelineManager.getBindGroupLayout(`texture_copy`);if(n&&r&&t.texture){let e=l.textureManager.createSampler(`filter_flip_sampler`,!1),i=l.bufferManager.acquireAndWriteUniformBuffer(wp);Sp[0].resource.buffer=i,Sp[1].resource=e,Sp[2].resource=f.texture.view;let a=l.device.createBindGroup({layout:r,entries:Sp}),o=l.frameBufferManager.createRenderPassDescriptor(t.texture.view,0,0,0,0,`clear`),s=l.commandEncoder.beginRenderPass(o);s.setPipeline(n),s.setBindGroup(0,a),s.draw(6,1,0,0),s.end(),l.frameBufferManager.releaseTemporaryAttachment(f),f=t}}let p=Ys.getDevicePixelRatio(),m=Math.sqrt(i[0]*i[0]+i[1]*i[1]),h=Math.sqrt(i[2]*i[2]+i[3]*i[3]),g=Math.atan2(i[1],i[0]),_=Math.atan2(-i[2],i[3]),v=r?m*Math.cos(g):Math.cos(g),y=r?m*Math.sin(g):Math.sin(g),b=r?-h*Math.sin(_):-Math.sin(_),x=r?h*Math.cos(_):Math.cos(_);vp[0]=v,vp[1]=y,vp[2]=b,vp[3]=x,vp[4]=t/2,vp[5]=n/2,yp[0]=1,yp[1]=0,yp[2]=0,yp[3]=1,yp[4]=-e.w/2,yp[5]=-e.h/2;let S=vp[0]*yp[0]+vp[2]*yp[1],C=vp[1]*yp[0]+vp[3]*yp[1],w=vp[0]*yp[2]+vp[2]*yp[3],T=vp[1]*yp[2]+vp[3]*yp[3],E=vp[0]*yp[4]+vp[2]*yp[5]+vp[4],D=vp[1]*yp[4]+vp[3]*yp[5]+vp[5],O=0,k=0;if(S!==1||C!==0||w!==0||T!==1){let r=l.frameBufferManager.createTemporaryAttachment(t,n),i=l.pipelineManager.getPipeline(`texture_scale`),a=l.pipelineManager.getBindGroupLayout(`texture_scale`);if(i&&a){bp[0]=S,bp[1]=C,bp[2]=w,bp[3]=T,bp[4]=E,bp[5]=D,bp[6]=e.w,bp[7]=e.h,bp[8]=t,bp[9]=n,bp[10]=0,bp[11]=0;let o=l.bufferManager.acquireAndWriteUniformBuffer(bp,48),s=l.textureManager.createSampler(`filter_scale_sampler`,!0);Sp[0].resource.buffer=o,Sp[1].resource=s,Sp[2].resource=f.texture.view;let c=l.device.createBindGroup({layout:a,entries:Sp}),u=l.frameBufferManager.createRenderPassDescriptor(r.texture.view,0,0,0,0,`clear`),d=l.commandEncoder.beginRenderPass(u);d.setPipeline(i),d.setBindGroup(0,c),d.draw(6,1,0,0),d.end(),O=E,k=D,l.frameBufferManager.releaseTemporaryAttachment(f),f=r}}for(let e=0;c.length>e;)switch(c[e++]){case 0:{let t=c[e++],n=c[e++],r=c[e++],a=c[e++],o=c[e++],s=c[e++],u=c[e++],d=c[e++],m=c[e++],h=c[e++],g=c[e++],_=!!c[e++],v=tp(f,i,t,n,r,a,o,s,u,d,m,h,g,_,p,l);f!==v&&l.frameBufferManager.releaseTemporaryAttachment(f),f=v}break;case 1:{let t=c[e++],n=c[e++],r=c[e++],a=Ff(f,i,t,n,r,p,l);f!==a&&l.frameBufferManager.releaseTemporaryAttachment(f),f=a}break;case 2:{xp[0]=c[e++],xp[1]=c[e++],xp[2]=c[e++],xp[3]=c[e++],xp[4]=c[e++],xp[5]=c[e++],xp[6]=c[e++],xp[7]=c[e++],xp[8]=c[e++],xp[9]=c[e++],xp[10]=c[e++],xp[11]=c[e++],xp[12]=c[e++],xp[13]=c[e++],xp[14]=c[e++],xp[15]=c[e++],xp[16]=c[e++],xp[17]=c[e++],xp[18]=c[e++],xp[19]=c[e++];let t=Vf(f,xp,l);f!==t&&l.frameBufferManager.releaseTemporaryAttachment(f),f=t}break;case 3:{let t=c[e++],n=c[e++],r=t*n,i=new Float32Array(r);for(let t=0;t!e||e[0]===1&&e[1]===1&&e[2]===1&&e[3]===1&&e[4]===0&&e[5]===0&&e[6]===0&&e[7]===0,zp=(e,t,n)=>{let r=e.frameBufferManager.createTemporaryAttachment(t.width,t.height),i=e.pipelineManager.getPipeline(`color_transform`),a=e.pipelineManager.getBindGroupLayout(`texture_copy`);if(!i||!a||!t.texture||!r.texture)return t;Q[0]=n[0],Q[1]=n[1],Q[2]=n[2],Q[3]=n[3],Q[4]=n[4],Q[5]=n[5],Q[6]=n[6],Q[7]=0;let o=e.bufferManager.acquireAndWriteUniformBuffer(Q),s=e.textureManager.createSampler(`container_ct_sampler`,!1);Fp[0].resource.buffer=o,Fp[1].resource=s,Fp[2].resource=t.texture.view;let c=e.device.createBindGroup({layout:a,entries:Fp}),l=e.frameBufferManager.createRenderPassDescriptor(r.texture.view,0,0,0,0,`clear`),u=e.commandEncoder.beginRenderPass(l);return u.setPipeline(i),u.setBindGroup(0,c),u.draw(6,1,0,0),u.end(),r},Bp=(e,t,n,r,i,a)=>{let o=e.frameBufferManager.createTemporaryAttachment(i,a),s=e.pipelineManager.getPipeline(`texture_copy_rgba8`),c=e.pipelineManager.getBindGroupLayout(`texture_copy`);if(!s||!c||!t.texture||!o.texture)return o;let l=i/t.width,u=a/t.height,d=n/t.width,f=r/t.height;Np[0]=l,Np[1]=u,Np[2]=d,Np[3]=f;let p=e.bufferManager.acquireAndWriteUniformBuffer(Np),m=e.textureManager.createSampler(`container_copy_sampler`,!1);Fp[0].resource.buffer=p,Fp[1].resource=m,Fp[2].resource=t.texture.view;let h=e.device.createBindGroup({layout:c,entries:Fp}),g=e.frameBufferManager.createRenderPassDescriptor(o.texture.view,0,0,0,0,`clear`),_=e.commandEncoder.beginRenderPass(g);return _.setPipeline(s),_.setBindGroup(0,h),_.draw(6,1,0,0),_.end(),o},Vp=(e,t,n,r,i,a,o)=>{if(!n.texture||!t.texture)return;let s=i,c=a,l=t.width,u=t.height,d=0,f=0;if(s<0&&(d=-s/t.width,l+=s,s=0),c<0&&(f=-c/t.height,u+=c,c=0),l<=0||u<=0)return;let p=n.width,m=n.height;if(s+l>p&&(l=p-s),c+u>m&&(u=m-c),Ip.has(r)){let i=n.msaa&&n.msaaTexture?.view,a;switch(r){case`add`:a=i?`filter_output_add_msaa`:`filter_output_add`;break;case`screen`:a=i?`filter_output_screen_msaa`:`filter_output_screen`;break;case`alpha`:a=i?`filter_output_alpha_msaa`:`filter_output_alpha`;break;case`erase`:a=i?`filter_output_erase_msaa`:`filter_output_erase`;break;case`copy`:a=i?`texture_copy_bgra_msaa`:`texture_copy_bgra`;break;default:a=i?`filter_output_msaa`:`filter_output`}let h=e.pipelineManager.getPipeline(a),g=e.pipelineManager.getBindGroupLayout(`texture_copy`);if(!h||!g)return;let _=e.textureManager.createSampler(`container_output_sampler`,!0),v=l/t.width,y=u/t.height;Np[0]=v,Np[1]=y,Np[2]=d,Np[3]=f;let b=o.acquireAndWriteUniformBuffer(Np);Fp[0].resource.buffer=b,Fp[1].resource=_,Fp[2].resource=t.texture.view;let x=e.device.createBindGroup({layout:g,entries:Fp}),S=i?n.msaaTexture.view:n.texture.view;i&&(n.msaaDirty=!0);let C=e.frameBufferManager.createRenderPassDescriptor(S,0,0,0,0,`load`,null),w=Math.max(0,s),T=Math.max(0,c),E=Math.max(1,l),D=Math.max(1,u),O=Math.max(0,Math.floor(w)),k=Math.max(0,Math.floor(T)),A=Math.max(1,Math.min(Math.ceil(w+E)-O,p-O)),j=Math.max(1,Math.min(Math.ceil(T+D)-k,m-k));if(A<=0||j<=0||O>=p||k>=m)return;let M=e.commandEncoder.beginRenderPass(C);M.setPipeline(h),M.setBindGroup(0,x),M.setViewport(w,T,E,D,0,1),M.setScissorRect(O,k,A,j),M.draw(6,1,0,0),M.end()}else{_d(e.commandEncoder,e.frameBufferManager,n);let i=Bp(e,n,s,c,l,u);Q[0]=Lp[0],Q[1]=Lp[1],Q[2]=Lp[2],Q[3]=Lp[3],Q[4]=Lp[4]/255,Q[5]=Lp[5]/255,Q[6]=Lp[6]/255,Q[7]=0;let a=vf(t,i,r,Q,{device:e.device,commandEncoder:e.commandEncoder,bufferManager:e.bufferManager,frameBufferManager:e.frameBufferManager,pipelineManager:e.pipelineManager,textureManager:e.textureManager,frameTextures:e.frameTextures}),d=n.msaa&&n.msaaTexture?.view,f=d?`filter_complex_blend_output_msaa`:`filter_complex_blend_output`,p=e.pipelineManager.getPipeline(f),m=e.pipelineManager.getBindGroupLayout(`positioned_texture`);if(p&&m&&a.texture&&n.texture){Q[0]=s,Q[1]=c,Q[2]=a.width,Q[3]=a.height,Q[4]=n.width,Q[5]=n.height,Q[6]=0,Q[7]=0;let t=o.acquireAndWriteUniformBuffer(Q),r=e.textureManager.createSampler(`container_blend_output_sampler`,!1);Fp[0].resource.buffer=t,Fp[1].resource=r,Fp[2].resource=a.texture.view;let i=e.device.createBindGroup({layout:m,entries:Fp}),l=d?n.msaaTexture.view:n.texture.view;d&&(n.msaaDirty=!0);let u=e.frameBufferManager.createRenderPassDescriptor(l,0,0,0,0,`load`,null),f=e.commandEncoder.beginRenderPass(u);f.setPipeline(p),f.setBindGroup(0,i),f.draw(6,1,0,0),f.end()}e.frameBufferManager.releaseTemporaryAttachment(i),e.frameBufferManager.releaseTemporaryAttachment(a)}},Hp=(e,t,n,r,i)=>{X.x=0,X.y=0;for(let a=0;n.length>a;)switch(n[a++]){case 0:{let o=tp(e,t,n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],!!n[a++],r,i);e!==o&&i.frameBufferManager.releaseTemporaryAttachment(e),e=o}break;case 1:{let o=Ff(e,t,n[a++],n[a++],n[a++],r,i);e!==o&&i.frameBufferManager.releaseTemporaryAttachment(e),e=o}break;case 2:{Pp[0]=n[a++],Pp[1]=n[a++],Pp[2]=n[a++],Pp[3]=n[a++],Pp[4]=n[a++],Pp[5]=n[a++],Pp[6]=n[a++],Pp[7]=n[a++],Pp[8]=n[a++],Pp[9]=n[a++],Pp[10]=n[a++],Pp[11]=n[a++],Pp[12]=n[a++],Pp[13]=n[a++],Pp[14]=n[a++],Pp[15]=n[a++],Pp[16]=n[a++],Pp[17]=n[a++],Pp[18]=n[a++],Pp[19]=n[a++];let t=Vf(e,Pp,i);e!==t&&i.frameBufferManager.releaseTemporaryAttachment(e),e=t}break;case 3:{let t=n[a++],r=n[a++],o=t*r,s=new Float32Array(o);for(let e=0;e{if(_d(p.commandEncoder,p.frameBufferManager,e),o&&i&&s&&c){let n=Bp(p,e,0,0,e.width,e.height);p.frameBufferManager.releaseTemporaryAttachment(e);let o=Ys.getDevicePixelRatio();if(n=Hp(n,i,c,o,p),l){let e=W.get(l,`fTexture`);e&&p.frameBufferManager.releaseTemporaryAttachment(e),W.set(l,`fKey`,u),W.set(l,`fTexture`,n)}if(n){let e=n,c=null;Rp(a)||(c=zp(p,n,a),e=c);let u=Math.sqrt(i[0]*i[0]+i[1]*i[1]),d=Math.sqrt(i[2]*i[2]+i[3]*i[3]),f=s[0]*(u/o),h=s[1]*(d/o),g=f+i[4],_=h+i[5];Vp(p,e,t,r,g,_,m),c&&p.frameBufferManager.releaseTemporaryAttachment(c),l||p.frameBufferManager.releaseTemporaryAttachment(n)}}else{let n=Bp(p,e,0,0,e.width,e.height);if(p.frameBufferManager.releaseTemporaryAttachment(e),!Rp(a)){let e=zp(p,n,a);p.frameBufferManager.releaseTemporaryAttachment(n),n=e}Vp(p,n,t,r,i[4],i[5],m),p.frameBufferManager.releaseTemporaryAttachment(n)}},Wp=new Float32Array([1,1,0,0]),Gp=[],Kp=new Float32Array([0,0,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1,1,0,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1,0,1,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1,1,0,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1,1,1,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1,0,1,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1]),qp=new Float32Array([0,0,1,0,0,1,1,0,1,1,0,1]),Jp=new Float32Array(8),Yp=new Float32Array([1,-1,0,1]),Xp=null,Zp=new WeakMap,Qp=new Float32Array(16),$p=null,em=null,tm=null,nm={view:null,clearValue:{r:0,g:0,b:0,a:0},loadOp:`clear`,storeOp:`store`},rm={colorAttachments:[nm]},im=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],am={r:0,g:0,b:0,a:0},om={view:null,clearValue:am,loadOp:`clear`,storeOp:`store`,resolveTarget:void 0},sm={view:null,stencilClearValue:0,stencilLoadOp:`clear`,stencilStoreOp:`store`},cm={colorAttachments:[om]},lm={view:null,resolveTarget:void 0,loadOp:`load`,storeOp:`store`},um={view:null,stencilLoadOp:`load`,stencilStoreOp:`store`},dm={colorAttachments:[lm]};var fm=class{$stack;$matrix;$clearColorR;$clearColorG;$clearColorB;$clearColorA;$mainAttachmentObject;$stackAttachmentObject;globalAlpha;globalCompositeOperation;imageSmoothingEnabled;$fillStyle;$strokeStyle;maskBounds;thickness;caps;joints;miterLimit;device;canvasContext;preferredFormat;commandEncoder=null;renderPassEncoder=null;renderPassIsInstanced=!1;mainTexture=null;mainTextureView=null;frameStarted=!1;frameTextures=[];pooledTextures=[];pooledRenderTextures=[];currentRenderTarget=null;viewportWidth=0;viewportHeight=0;pathCommand;bufferManager;textureManager;frameBufferManager;pipelineManager;newDrawState=!1;_pendingAtlasNodes=[];$containerLayerStack=[];containerLayerContentSizes=[];inMaskMode=!1;nodeAreaCleared=!1;currentNodeScissor=null;nodeRenderPassAtlasIndex=-1;fillDynamicBindGroup=null;fillDynamicBindGroupBuffer=null;nodeClearQuadBuffer=null;useOptimizedInstancing=!0;$needsReconfigure=!1;$uniformData8=new Float32Array(8);$scissorRect={x:0,y:0,w:0,h:0};$filterConfig;constructor(e,t,n,r=1){this.device=e,this.canvasContext=t,this.preferredFormat=n,Ys.setDevice(e),Ys.setDevicePixelRatio(r);let i=e.limits.maxTextureDimension2D,a=Math.max(2048,i/2);Ys.setRenderMaxSize(a),this.$stack=Ys.createArray(),this.$stackAttachmentObject=Ys.createArray(),this.$matrix=Ys.createFloat32Array(9),this.$matrix.set([1,0,0,0,1,0,0,0,1]),this.$clearColorR=0,this.$clearColorG=0,this.$clearColorB=0,this.$clearColorA=0,this.thickness=1,this.caps=0,this.joints=2,this.miterLimit=0,this.$mainAttachmentObject=null,this.globalAlpha=1,this.globalCompositeOperation=`normal`,this.imageSmoothingEnabled=!1,this.$fillStyle=new Float32Array([1,1,1,1]),this.$strokeStyle=new Float32Array([1,1,1,1]),this.maskBounds={xMin:0,yMin:0,xMax:0,yMax:0},t.configure({device:e,format:n,alphaMode:`premultiplied`}),this.viewportWidth=t.canvas.width,this.viewportHeight=t.canvas.height,this.pathCommand=new rc,this.bufferManager=new gc(e),this.textureManager=new vc(e),this.frameBufferManager=new Gc(e,n),this.pipelineManager=new Ol(e,n),this.pipelineManager.warmupLazyGroupsAsync(),Ll(e=>{let t=Ys.getRenderMaxSize();return this.frameBufferManager.createAttachment(`atlas_${e}`,t,t,!1,!0)}),this.$filterConfig={device:this.device,commandEncoder:null,bufferManager:this.bufferManager,frameBufferManager:this.frameBufferManager,pipelineManager:this.pipelineManager,textureManager:this.textureManager,frameTextures:this.frameTextures},Zs(this)}clearTransferBounds(){this.beginFrame()}updateBackgroundColor(e,t,n,r){this.$clearColorR=e,this.$clearColorG=t,this.$clearColorB=n,this.$clearColorA=r}fillBackgroundColor(){if(!this.$mainAttachmentObject||!this.$mainAttachmentObject.texture)return;this.frameStarted||this.beginFrame(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.ensureCommandEncoder();let e=this.$mainAttachmentObject.msaa&&this.$mainAttachmentObject.msaaTexture?.view;om.view=e?this.$mainAttachmentObject.msaaTexture.view:this.$mainAttachmentObject.texture.view,om.resolveTarget=void 0,e&&(this.$mainAttachmentObject.msaaDirty=!0),am.r=this.$clearColorR,am.g=this.$clearColorG,am.b=this.$clearColorB,am.a=this.$clearColorA;let t=e&&this.$mainAttachmentObject.msaaStencil?.view?this.$mainAttachmentObject.msaaStencil.view:this.$mainAttachmentObject.stencil?.view;t?(sm.view=t,cm.depthStencilAttachment=sm):cm.depthStencilAttachment=void 0,this.renderPassEncoder=this.commandEncoder.beginRenderPass(cm),this.renderPassIsInstanced=!1,this.renderPassEncoder.end(),this.renderPassEncoder=null}resize(e,t,n=!0){this.clearArraysInstanced();for(let e of this.frameTextures)e.destroy();this.frameTextures.length=0;for(let e of this.pooledTextures)Vc(e);this.pooledTextures.length=0;for(let e of this.pooledRenderTextures)Uc(e);if(this.pooledRenderTextures.length=0,Wc(),this.frameStarted=!1,this.commandEncoder=null,this.renderPassEncoder=null,this.currentRenderTarget=null,gu(),this.$stackAttachmentObject.length){for(let e=0;e0?Gp.pop():new Float32Array(9);e.set(this.$matrix),this.$stack.push(e)}restore(){let e=this.$stack.pop();e&&(this.$matrix.set(e),Gp.push(e))}setTransform(e,t,n,r,i,a){this.$matrix[0]=e,this.$matrix[1]=t,this.$matrix[3]=n,this.$matrix[4]=r,this.$matrix[6]=i,this.$matrix[7]=a}transform(e,t,n,r,i,a){let o=this.$matrix,s=o[0],c=o[1],l=o[3],u=o[4],d=o[6],f=o[7];o[0]=e*s+t*l,o[1]=e*c+t*u,o[3]=n*s+r*l,o[4]=n*c+r*u,o[6]=i*s+a*l+d,o[7]=i*c+a*u+f}reset(){this.$matrix.set([1,0,0,0,1,0,0,0,1]),this.$stack.length=0,this.$stackAttachmentObject.length=0,this.globalAlpha=1,this.globalCompositeOperation=`normal`,this.imageSmoothingEnabled=!1}beginPath(){this.pathCommand.beginPath()}moveTo(e,t){this.pathCommand.moveTo(e,t)}lineTo(e,t){this.pathCommand.lineTo(e,t)}quadraticCurveTo(e,t,n,r){this.pathCommand.quadraticCurveTo(e,t,n,r)}fillStyle(e,t,n,r){this.$fillStyle[0]=e,this.$fillStyle[1]=t,this.$fillStyle[2]=n,this.$fillStyle[3]=r}strokeStyle(e,t,n,r){this.$strokeStyle[0]=e,this.$strokeStyle[1]=t,this.$strokeStyle[2]=n,this.$strokeStyle[3]=r}closePath(){this.pathCommand.closePath()}arc(e,t,n){this.pathCommand.arc(e,t,n)}bezierCurveTo(e,t,n,r,i,a){this.pathCommand.bezierCurveTo(e,t,n,r,i,a)}ensureFillRenderPass(){if(this.frameStarted||this.beginFrame(),this.ensureCommandEncoder(),this.renderPassEncoder){if(!this.renderPassIsInstanced){this.currentRenderTarget&&this.ensureNodeAreaCleared();return}this.renderPassEncoder.end(),this.renderPassEncoder=null,this.renderPassIsInstanced=!1}{let e=this.getCurrentTextureView(),t=Rl(),n=t?.msaa&&t?.msaaTexture?.view,r=n?t.msaaTexture.view:e,i=n?e:null;if(this.currentRenderTarget&&t?.stencil?.view){let e=n&&t?.msaaStencil?.view?t.msaaStencil.view:t.stencil.view,a=this.frameBufferManager.createStencilRenderPassDescriptor(r,e,`load`,`clear`,i);this.renderPassEncoder=this.commandEncoder.beginRenderPass(a),this.renderPassIsInstanced=!1}else if(!this.currentRenderTarget&&(du()||su())&&this.$mainAttachmentObject?.stencil?.view){let e=this.$mainAttachmentObject.msaa&&this.$mainAttachmentObject.msaaTexture?.view,t=e?this.$mainAttachmentObject.msaaTexture.view:this.$mainAttachmentObject.texture.view,n=e&&this.$mainAttachmentObject.msaaStencil?.view?this.$mainAttachmentObject.msaaStencil.view:this.$mainAttachmentObject.stencil.view;e&&(this.$mainAttachmentObject.msaaDirty=!0);let r=this.frameBufferManager.createStencilRenderPassDescriptor(t,n,`load`,`load`,null);this.renderPassEncoder=this.commandEncoder.beginRenderPass(r),this.renderPassIsInstanced=!1,du()&&this.renderPassEncoder.setStencilReference(pu())}else if(!this.currentRenderTarget&&this.$mainAttachmentObject){let e=this.$mainAttachmentObject.msaa&&this.$mainAttachmentObject.msaaTexture?.view,t=e?this.$mainAttachmentObject.msaaTexture.view:this.$mainAttachmentObject.texture.view;if(e&&(this.$mainAttachmentObject.msaaDirty=!0),this.$mainAttachmentObject.stencil?.view){let n=e&&this.$mainAttachmentObject.msaaStencil?.view?this.$mainAttachmentObject.msaaStencil.view:this.$mainAttachmentObject.stencil.view,r=this.frameBufferManager.createStencilRenderPassDescriptor(t,n,`load`,`clear`,null);this.renderPassEncoder=this.commandEncoder.beginRenderPass(r),this.renderPassIsInstanced=!1}else{let e=this.frameBufferManager.createRenderPassDescriptor(t,0,0,0,0,`load`,null);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e),this.renderPassIsInstanced=!1}}else{let e=this.frameBufferManager.createRenderPassDescriptor(r,0,0,0,0,`load`,i);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e),this.renderPassIsInstanced=!1}}this.currentRenderTarget&&this.ensureNodeAreaCleared()}fill(){let e=this.pathCommand.$getVertices;if(e.length===0)return;this.ensureFillRenderPass();let t=this.viewportWidth,n=this.viewportHeight,r=wu(e);if(r.indexCount===0)return;let i=this.bufferManager.acquireVertexBuffer(r.buffer.byteLength,r.buffer),a=this.writeFillUniform(this.$fillStyle[0],this.$fillStyle[1],this.$fillStyle[2],this.$fillStyle[3],this.$matrix[0],this.$matrix[1],this.$matrix[3],this.$matrix[4],this.$matrix[6],this.$matrix[7],t,n),o=this.getOrCreateFillDynamicBindGroup(),s=Rl();if(this.currentRenderTarget&&s?.stencil?.view)this.fillWithStencil(i,r.indexCount,o,a);else if(!this.currentRenderTarget&&!this.inMaskMode&&!du()&&this.$mainAttachmentObject?.stencil?.view)this.fillWithStencilMain(i,r.indexCount,o,a);else{let e=(this.inMaskMode||du())&&!!this.$mainAttachmentObject?.stencil?.view&&!this.currentRenderTarget;this.fillSimple(i,r.indexCount,e,o,a)}}getOrCreateFillDynamicBindGroup(){let e=this.bufferManager.dynamicUniform.getBuffer();if(!this.fillDynamicBindGroup||this.fillDynamicBindGroupBuffer!==e){let t=this.pipelineManager.getBindGroupLayout(`fill_dynamic`);if(!t)throw Error(`[WebGPU] fill_dynamic bind group layout not found`);this.fillDynamicBindGroup=this.device.createBindGroup({layout:t,entries:[{binding:0,resource:{buffer:e,size:256}}]}),this.fillDynamicBindGroupBuffer=e}return this.fillDynamicBindGroup}writeFillUniform(e,t,n,r,i,a,o,s,c,l,u,d){return Qp[0]=e,Qp[1]=t,Qp[2]=n,Qp[3]=r,Qp[4]=i/u,Qp[5]=a/d,Qp[6]=0,Qp[7]=0,Qp[8]=o/u,Qp[9]=s/d,Qp[10]=0,Qp[11]=0,Qp[12]=c/u,Qp[13]=l/d,Qp[14]=1,Qp[15]=0,this.bufferManager.dynamicUniform.allocate(Qp)}fillWithStencil(e,t,n,r){gd(this.renderPassEncoder,this.pipelineManager,e,t,n,r)}fillWithStencilMain(e,t,n,r){vd(this.renderPassEncoder,this.pipelineManager,e,t,n,r)}fillSimple(e,t,n,r,i){let a=this.$mainAttachmentObject?.clipLevel??1;yd(this.renderPassEncoder,this.pipelineManager,e,t,r,i,this.currentRenderTarget!==null,n,a)}stroke(){let e=this.pathCommand.getVerticesForStroke();if(e.length===0)return;this.ensureFillRenderPass();let t=this.viewportWidth,n=this.viewportHeight,r=Ju(e,this.thickness);if(r.length===0)return;let i=wu(r);if(i.indexCount===0)return;let a=this.bufferManager.acquireVertexBuffer(i.buffer.byteLength,i.buffer),o=this.writeFillUniform(this.$strokeStyle[0],this.$strokeStyle[1],this.$strokeStyle[2],this.$strokeStyle[3],this.$matrix[0],this.$matrix[1],this.$matrix[3],this.$matrix[4],this.$matrix[6],this.$matrix[7],t,n),s=this.getOrCreateFillDynamicBindGroup(),c=Rl();if(this.currentRenderTarget&&c?.stencil?.view)this.fillWithStencil(a,i.indexCount,s,o);else if(!this.currentRenderTarget&&!this.inMaskMode&&!du()&&this.$mainAttachmentObject?.stencil?.view)this.fillWithStencilMain(a,i.indexCount,s,o);else{let e=(this.inMaskMode||du())&&!!this.$mainAttachmentObject?.stencil?.view&&!this.currentRenderTarget;this.fillSimple(a,i.indexCount,e,s,o)}this.pathCommand.reset()}gradientFill(e,t,n,r,i,a){let o=this.pathCommand.$getVertices;if(o.length===0)return;this.ensureFillRenderPass();let s=this.viewportWidth,c=this.viewportHeight,l=!!((this.inMaskMode||du())&&this.$mainAttachmentObject?.stencil?.view&&!this.currentRenderTarget),u=this.currentRenderTarget!==null,d=Nd(this.device,this.renderPassEncoder,this.bufferManager,this.pipelineManager,o,this.$matrix,this.$fillStyle,e,t,n,r,i,a,s,c,u,l,this.$mainAttachmentObject?.clipLevel??1);d&&this.addFrameTexture(d),this.beginPath()}bitmapFill(e,t,n,r,i,a){let o=this.pathCommand.$getVertices;if(o.length===0)return;this.ensureFillRenderPass();let s=Rl(),c=!!(this.currentRenderTarget&&s?.stencil?.view),l=!!((this.inMaskMode||du())&&this.$mainAttachmentObject?.stencil?.view&&!this.currentRenderTarget),u=c||l,d=this.$mainAttachmentObject?.clipLevel??1,f=Bd(this.device,this.renderPassEncoder,this.bufferManager,this.pipelineManager,o,this.$matrix,this.$fillStyle,e,t,n,r,i,a,this.viewportWidth,this.viewportHeight,this.currentRenderTarget!==null,!!u,d);f&&this.addFrameTexture(f),this.beginPath()}gradientStroke(e,t,n,r,i,a){let o=this.pathCommand.getVerticesForStroke();if(o.length===0)return;this.ensureFillRenderPass();let s=Rl(),c=!!(this.currentRenderTarget&&s?.stencil?.view),l=!!(!this.currentRenderTarget&&this.$mainAttachmentObject?.stencil?.view),u=c||l,d=qd(this.device,this.renderPassEncoder,this.bufferManager,this.pipelineManager,o,this.thickness,this.$matrix,this.$strokeStyle,e,t,n,r,i,a,this.viewportWidth,this.viewportHeight,this.currentRenderTarget!==null,u);d&&this.addFrameTexture(d),this.pathCommand.reset()}bitmapStroke(e,t,n,r,i,a){let o=this.pathCommand.getVerticesForStroke();if(o.length===0)return;this.ensureFillRenderPass();let s=Rl(),c=!!(this.currentRenderTarget&&s?.stencil?.view),l=!!(!this.currentRenderTarget&&this.$mainAttachmentObject?.stencil?.view),u=c||l,d=$d(this.device,this.renderPassEncoder,this.bufferManager,this.pipelineManager,o,this.thickness,this.$matrix,this.$strokeStyle,e,t,n,r,i,a,this.viewportWidth,this.viewportHeight,this.currentRenderTarget!==null,u);d&&this.addFrameTexture(d),this.pathCommand.reset()}clip(){let e=this.frameBufferManager.getCurrentAttachment(),t=!e||e===this.$mainAttachmentObject;if(!e&&this.$mainAttachmentObject&&(e=this.$mainAttachmentObject),!e||!e.stencil)return;let n=this.pathCommand.$getVertices;if(n.length!==0){if(this.renderPassEncoder&&this.renderPassIsInstanced&&(this.renderPassEncoder.end(),this.renderPassEncoder=null,this.renderPassIsInstanced=!1),!this.renderPassEncoder)if(this.ensureCommandEncoder(),t&&this.$mainAttachmentObject?.stencil?.view){let e=this.$mainAttachmentObject.msaa&&this.$mainAttachmentObject.msaaTexture?.view,t=e?this.$mainAttachmentObject.msaaTexture.view:this.$mainAttachmentObject.texture.view,n=e&&this.$mainAttachmentObject.msaaStencil?.view?this.$mainAttachmentObject.msaaStencil.view:this.$mainAttachmentObject.stencil.view,r=this.frameBufferManager.createStencilRenderPassDescriptor(t,n,`load`,`load`);this.renderPassEncoder=this.commandEncoder.beginRenderPass(r),this.renderPassIsInstanced=!1}else return;af(this.device,this.renderPassEncoder,this.bufferManager,this.pipelineManager,e,n,this.$matrix,this.$fillStyle,this.globalAlpha,t)}}bind(e){this.frameBufferManager.setCurrentAttachment(e),this.viewportWidth=e.width,this.viewportHeight=e.height}get currentAttachmentObject(){return this.frameBufferManager.getCurrentAttachment()||this.$mainAttachmentObject}get atlasAttachmentObject(){return Rl()}useGrid(e){Yu.set(Xu,e)}beginNodeRendering(e){this.nodeAreaCleared=!1,this.frameStarted||this.beginFrame();let t=zl(e.index)||Rl();if(t&&t.texture){if(this.renderPassEncoder&&this.nodeRenderPassAtlasIndex===e.index)this.currentRenderTarget=t.texture.view,this.viewportWidth=t.width,this.viewportHeight=t.height;else{this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.currentRenderTarget=t.texture.view,this.viewportWidth=t.width,this.viewportHeight=t.height,this.ensureCommandEncoder();let n=t.msaa&&t.msaaTexture?.view,r=n?t.msaaTexture.view:t.texture.view,i=n?t.texture.view:null;if(t.stencil?.view){let e=n&&t.msaaStencil?.view?t.msaaStencil.view:t.stencil.view,a=this.frameBufferManager.createStencilRenderPassDescriptor(r,e,`load`,`load`,i);this.renderPassEncoder=this.commandEncoder.beginRenderPass(a),this.renderPassIsInstanced=!1}else{let e=this.frameBufferManager.createRenderPassDescriptor(r,0,0,0,0,`load`,i);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e),this.renderPassIsInstanced=!1}this.nodeRenderPassAtlasIndex=e.index}let n=Math.max(0,e.x),r=Math.max(0,e.y),i=Math.min(e.w,t.width-n),a=Math.min(e.h,t.height-r);if(n=Math.min(n,t.width),r=Math.min(r,t.height),i=Math.max(0,Math.min(i,t.width-n)),a=Math.max(0,Math.min(a,t.height-r)),this.$scissorRect.x=n,this.$scissorRect.y=r,this.$scissorRect.w=i,this.$scissorRect.h=a,this.currentNodeScissor=this.$scissorRect,i>0&&a>0){let e=Math.min(i+1,t.width-n),o=Math.min(a+1,t.height-r);this.renderPassEncoder.setScissorRect(n,r,e,o)}}}ensureNodeAreaCleared(){this.nodeAreaCleared||(this.nodeAreaCleared=!0,this.clearNodeArea())}clearNodeArea(){if(!this.renderPassEncoder)return;let e=this.pipelineManager.getPipeline(`node_clear_atlas`);if(!e)return;if(!this.nodeClearQuadBuffer){let e=this.device.createBuffer({size:qp.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});new Float32Array(e.getMappedRange()).set(qp),e.unmap(),this.nodeClearQuadBuffer=e}let t=this.nodeClearQuadBuffer;this.renderPassEncoder.setPipeline(e),this.renderPassEncoder.setVertexBuffer(0,t),this.renderPassEncoder.draw(6),this.currentNodeScissor&&this.renderPassEncoder.setScissorRect(this.currentNodeScissor.x,this.currentNodeScissor.y,this.currentNodeScissor.w,this.currentNodeScissor.h)}endNodeRendering(){this.currentRenderTarget=null,this.currentNodeScissor=null,this.viewportWidth=this.canvasContext.canvas.width,this.viewportHeight=this.canvasContext.canvas.height}drawFill(){Zu()}drawDisplayObject(e,t,n,r,i,a){let o=Ys.getRenderMaxSize();iu(e,t,n,r,i,a,this.$matrix,this.globalCompositeOperation,this.viewportWidth,this.viewportHeight,o,this.globalAlpha)}resolveMainAttachment(){let e=this.$mainAttachmentObject;!e||!e.msaaDirty||!e.msaa||!e.msaaTexture?.view||!e.texture?.view||(this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null,this.renderPassIsInstanced=!1),this.ensureCommandEncoder(),_d(this.commandEncoder,this.frameBufferManager,e))}drawArraysInstanced(){if(this.frameStarted||this.beginFrame(),this.renderPassEncoder&&!this.renderPassIsInstanced&&(this.renderPassEncoder.end(),this.renderPassEncoder=null),this.nodeRenderPassAtlasIndex=-1,this.ensureCommandEncoder(),this.$mainAttachmentObject){if(this.useOptimizedInstancing){let e=this.renderPassEncoder;this.renderPassEncoder=hf(this.device,this.commandEncoder,this.renderPassEncoder,this.$mainAttachmentObject,this.bufferManager,this.frameBufferManager,this.textureManager,this.pipelineManager,!1,!0,this.renderPassIsInstanced),this.renderPassIsInstanced=this.renderPassEncoder!==null&&(this.renderPassEncoder!==e||this.renderPassIsInstanced)}else this.renderPassEncoder=uf(this.device,this.commandEncoder,this.renderPassEncoder,this.$mainAttachmentObject,this.bufferManager,this.frameBufferManager,this.textureManager,this.pipelineManager),this.renderPassIsInstanced=!1;this.processComplexBlendQueue()}}processComplexBlendQueue(){eu().length&&(this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null,this.renderPassIsInstanced=!1),this.resolveMainAttachment(),this.ensureCommandEncoder(),Ef(this.device,this.commandEncoder,this.$mainAttachmentObject,this.frameBufferManager,this.textureManager,this.pipelineManager,this.bufferManager))}clearArraysInstanced(){ru().clear()}drawPixels(e,t){let n=zl(e.index)||Rl();if(!n||!n.texture)return;let r=e.w,i=e.h;if(this.renderPassEncoder&&=(this.ensureNodeAreaCleared(),this.renderPassEncoder.end(),null),this.nodeRenderPassAtlasIndex=-1,n.msaa&&n.msaaTexture?.view)this.drawPixelsToMsaa(n,e,t,r,i);else{let a=r*4;this.device.queue.writeTexture({texture:n.texture.resource,origin:{x:e.x,y:e.y,z:0}},t,{bytesPerRow:a,rowsPerImage:i,offset:0},{width:r,height:i,depthOrArrayLayers:1})}}drawPixelsToMsaa(e,t,n,r,i){let a=Hc(this.device,r,i),o=r*4;this.device.queue.writeTexture({texture:a},n,{bytesPerRow:o,rowsPerImage:i},{width:r,height:i});let s=this.pipelineManager.getPipeline(`bitmap_render_msaa`);if(!s){Uc(a);return}let c=this.pipelineManager.getBindGroupLayout(`positioned_texture`);if(!c){Uc(a);return}let l=this.$uniformData8;l[0]=t.x,l[1]=t.y,l[2]=r,l[3]=i,l[4]=e.width,l[5]=e.height,l[6]=0,l[7]=0;let u=this.bufferManager.acquireAndWriteUniformBuffer(l),d=this.textureManager.createSampler(`linear_sampler`,!0),f=Fc(a);im[0].resource.buffer=u,im[1].resource=d,im[2].resource=f;let p=this.device.createBindGroup({layout:c,entries:im});this.ensureCommandEncoder(),lm.view=e.msaaTexture.view,lm.resolveTarget=e.texture.view;let m=e.msaaStencil?.view;m?(um.view=m,dm.depthStencilAttachment=um):dm.depthStencilAttachment=void 0;let h=this.commandEncoder.beginRenderPass(dm);h.setViewport(0,0,e.width,e.height,0,1),h.setScissorRect(t.x,t.y,r,i),h.setPipeline(s),h.setBindGroup(0,p),h.draw(6),h.end(),this.pooledRenderTextures.push(a)}drawElement(e,t,n=!1){let r=zl(e.index)||Rl();if(!r||!r.texture)return;let i=e.w,a=e.h;this.renderPassEncoder&&=(this.ensureNodeAreaCleared(),this.renderPassEncoder.end(),null),this.nodeRenderPassAtlasIndex=-1,r.msaa&&r.msaaTexture?.view?this.drawElementToMsaa(r,e,t,i,a,n):this.drawElementToTexture(r,e,t,i,a,n)}drawElementToMsaa(e,t,n,r,i,a){let o=Hc(this.device,r,i);this.device.queue.copyExternalImageToTexture({source:n,flipY:a},{texture:o,premultipliedAlpha:!0},{width:r,height:i});let s=this.pipelineManager.getPipeline(`bitmap_render_msaa`);if(!s){Uc(o);return}let c=this.pipelineManager.getBindGroupLayout(`positioned_texture`);if(!c){Uc(o);return}let l=this.$uniformData8;l[0]=t.x,l[1]=t.y,l[2]=r,l[3]=i,l[4]=e.width,l[5]=e.height,l[6]=0,l[7]=0;let u=this.bufferManager.acquireAndWriteUniformBuffer(l),d=this.textureManager.createSampler(`linear_sampler`,!0),f=Fc(o);im[0].resource.buffer=u,im[1].resource=d,im[2].resource=f;let p=this.device.createBindGroup({layout:c,entries:im});this.ensureCommandEncoder(),lm.view=e.msaaTexture.view,lm.resolveTarget=e.texture.view;let m=e.msaaStencil?.view;m?(um.view=m,dm.depthStencilAttachment=um):dm.depthStencilAttachment=void 0;let h=this.commandEncoder.beginRenderPass(dm);h.setViewport(0,0,e.width,e.height,0,1),h.setScissorRect(t.x,t.y,r,i),h.setPipeline(s),h.setBindGroup(0,p),h.draw(6),h.end(),this.pooledRenderTextures.push(o)}drawElementToTexture(e,t,n,r,i,a){let o=Hc(this.device,r,i);this.device.queue.copyExternalImageToTexture({source:n,flipY:a},{texture:o,premultipliedAlpha:!0},{width:r,height:i});let s=this.pipelineManager.getPipeline(`bitmap_render`);if(!s){Uc(o);return}let c=this.pipelineManager.getBindGroupLayout(`positioned_texture`);if(!c){Uc(o);return}let l=this.$uniformData8;l[0]=t.x,l[1]=t.y,l[2]=r,l[3]=i,l[4]=e.width,l[5]=e.height,l[6]=0,l[7]=0;let u=this.bufferManager.acquireAndWriteUniformBuffer(l),d=this.textureManager.createSampler(`linear_sampler`,!0),f=Fc(o);im[0].resource.buffer=u,im[1].resource=d,im[2].resource=f;let p=this.device.createBindGroup({layout:c,entries:im});this.ensureCommandEncoder(),lm.view=e.texture.view,lm.resolveTarget=void 0;let m=e.stencil?.view;m?(um.view=m,dm.depthStencilAttachment=um):dm.depthStencilAttachment=void 0;let h=this.commandEncoder.beginRenderPass(dm);h.setViewport(0,0,e.width,e.height,0,1),h.setScissorRect(t.x,t.y,r,i),h.setPipeline(s),h.setBindGroup(0,p),h.draw(6),h.end(),this.pooledRenderTextures.push(o)}applyFilter(e,t,n,r,i,a,o,s,c,l,u){this.drawArraysInstanced(),this.frameStarted||this.beginFrame(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.nodeRenderPassAtlasIndex=-1,this.ensureCommandEncoder(),this.$filterConfig.commandEncoder=this.commandEncoder,this.$filterConfig.mainAttachment=this.$mainAttachmentObject,Mp(e,r,i,a,o,s,c,l,u,this.$filterConfig,this.mainTextureView,this.bufferManager)}containerBeginLayer(e,t){this.drawArraysInstanced(),this.frameStarted||this.beginFrame(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null);let n=this.$mainAttachmentObject;this.$containerLayerStack.push(n),this.containerLayerContentSizes.push({width:e,height:t});let r=this.frameBufferManager.createAttachment(`container_layer`,e,t,n.msaa,!0);this.$mainAttachmentObject=r,this.bind(r)}containerEndLayer(e,t,n,r,i,a,o,s,c=1,l=1){this.drawArraysInstanced(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.ensureCommandEncoder();let u=this.$mainAttachmentObject,d=this.containerLayerContentSizes.pop()||{width:u.width,height:u.height};this.$mainAttachmentObject=this.$containerLayerStack.pop(),this.$filterConfig.commandEncoder=this.commandEncoder,this.$filterConfig.mainAttachment=void 0,Up(u,this.$mainAttachmentObject,`container_layer`,e,t,n,r,i,a,o,s,d.width,d.height,this.$filterConfig,this.bufferManager,c,l),this.bind(this.$mainAttachmentObject)}containerBeginAtlasNode(e,t){this.drawArraysInstanced();let n=this.createNode(e,t);this._pendingAtlasNodes.push(n);let r=this.$mainAttachmentObject;this.$containerLayerStack.push(r),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null);let i=this.frameBufferManager.createAttachment(`container_layer`,e,t,r.msaa,!0);return this.$mainAttachmentObject=i,this.bind(i),n}containerEndAtlasNode(){this.drawArraysInstanced(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.ensureCommandEncoder();let e=this.$mainAttachmentObject,t=this._pendingAtlasNodes.pop();this.$mainAttachmentObject=this.$containerLayerStack.pop(),_d(this.commandEncoder,this.frameBufferManager,e),this.copyTempToAtlasNode(e,t),this.frameBufferManager.releaseTemporaryAttachment(e),this.bind(this.$mainAttachmentObject)}copyTempToAtlasNode(e,t){let n=zl(t.index)||Rl();if(!n||!n.texture||!e.texture)return;let r=n.msaa&&n.msaaTexture?.view,i=r?`texture_copy_rgba8_msaa`:`texture_copy_rgba8`,a=this.pipelineManager.getPipeline(i),o=this.pipelineManager.getBindGroupLayout(`texture_copy`);if(!a||!o)return;Xp||(Xp=this.device.createBuffer({size:Yp.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.device.queue.writeBuffer(Xp,0,Yp.buffer,Yp.byteOffset,Yp.byteLength));let s=e.texture.view,c=Zp.get(s);if(!c){let e=this.textureManager.createSampler(`container_atlas_copy`,!1);c=this.device.createBindGroup({layout:o,entries:[{binding:0,resource:{buffer:Xp}},{binding:1,resource:e},{binding:2,resource:s}]}),Zp.set(s,c)}let l=r?n.msaaTexture.view:n.texture.view,u=r?n.texture.view:null,d=this.frameBufferManager.createRenderPassDescriptor(l,0,0,0,0,`load`,u),f=this.commandEncoder.beginRenderPass(d);f.setViewport(t.x,t.y,t.w,t.h,0,1),f.setScissorRect(t.x,t.y,t.w,t.h),f.setPipeline(a),f.setBindGroup(0,c),f.draw(6,1,0,0),f.end(),this.nodeRenderPassAtlasIndex=-1}containerDrawCachedFilter(e,t,n,r,i,a){if(W.get(i,`fKey`)!==a)return;let o=W.get(i,`fTexture`);if(!o||!o.texture)return;this.drawArraysInstanced(),this.frameStarted||this.beginFrame(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.ensureCommandEncoder();let s=this.$mainAttachmentObject;if(!s||!s.texture)return;let c=o,l=null;if(n[0]!==1||n[1]!==1||n[2]!==1||n[3]!==1||n[4]!==0||n[5]!==0||n[6]!==0||n[7]!==0){l=this.frameBufferManager.createTemporaryAttachment(o.width,o.height);let e=this.pipelineManager.getPipeline(`color_transform`),t=this.pipelineManager.getBindGroupLayout(`texture_copy`);if(e&&t&&l.texture){Jp[0]=n[0],Jp[1]=n[1],Jp[2]=n[2],Jp[3]=n[3],Jp[4]=n[4],Jp[5]=n[5],Jp[6]=n[6],Jp[7]=0;let r=Jp,i=this.bufferManager.acquireAndWriteUniformBuffer(r),a=this.textureManager.createSampler(`cached_ct_sampler`,!1);im[0].resource.buffer=i,im[1].resource=a,im[2].resource=o.texture.view;let s=this.device.createBindGroup({layout:t,entries:im}),u=this.frameBufferManager.createRenderPassDescriptor(l.texture.view,0,0,0,0,`clear`),d=this.commandEncoder.beginRenderPass(u);d.setPipeline(e),d.setBindGroup(0,s),d.draw(6,1,0,0),d.end(),c=l}}let u=Ys.getDevicePixelRatio(),d=Math.sqrt(t[0]*t[0]+t[1]*t[1]),f=Math.sqrt(t[2]*t[2]+t[3]*t[3]),p=r[0]*(d/u),m=r[1]*(f/u),h=Math.floor(p+t[4]),g=Math.floor(m+t[5]),_=s.msaa&&s.msaaTexture?.view,v;switch(e){case`add`:v=_?`filter_output_add_msaa`:`filter_output_add`;break;case`screen`:v=_?`filter_output_screen_msaa`:`filter_output_screen`;break;case`alpha`:v=_?`filter_output_alpha_msaa`:`filter_output_alpha`;break;case`erase`:v=_?`filter_output_erase_msaa`:`filter_output_erase`;break;default:v=_?`filter_output_msaa`:`filter_output`}let y=this.pipelineManager.getPipeline(v),b=this.pipelineManager.getBindGroupLayout(`texture_copy`);if(!y||!b)return;let x=this.textureManager.createSampler(`cached_filter_sampler`,!0),S=this.bufferManager.acquireAndWriteUniformBuffer(Wp);im[0].resource.buffer=S,im[1].resource=x,im[2].resource=c.texture.view;let C=this.device.createBindGroup({layout:b,entries:im}),w=_?s.msaaTexture.view:s.texture.view;_&&(s.msaaDirty=!0);let T=this.frameBufferManager.createRenderPassDescriptor(w,0,0,0,0,`load`,null),E=Math.max(0,h),D=Math.max(0,g),O=Math.max(1,c.width),k=Math.max(1,c.height),A=s.width,j=s.height,M=Math.max(1,Math.min(O,A-E)),N=Math.max(1,Math.min(k,j-D));if(M<=0||N<=0||E>=A||D>=j){l&&this.frameBufferManager.releaseTemporaryAttachment(l);return}let P=this.commandEncoder.beginRenderPass(T);P.setPipeline(y),P.setBindGroup(0,C),P.setViewport(E,D,O,k,0,1),P.setScissorRect(E,D,M,N),P.draw(6,1,0,0),P.end(),l&&this.frameBufferManager.releaseTemporaryAttachment(l),this.bind(s)}ensureMainTexture(){this.mainTexture||(this.$needsReconfigure&&=(this.canvasContext.configure({device:this.device,format:this.preferredFormat,alphaMode:`premultiplied`}),!1),this.mainTexture=this.canvasContext.getCurrentTexture(),this.mainTextureView=this.mainTexture.createView())}getCurrentTextureView(){return this.currentRenderTarget?this.currentRenderTarget:(this.ensureMainTexture(),this.mainTextureView)}ensureCommandEncoder(){this.commandEncoder||=this.device.createCommandEncoder()}beginFrame(){this.frameStarted||(this.ensureMainTexture(),this.ensureCommandEncoder(),this.frameStarted=!0,this.frameBufferManager.beginFrame())}addFrameTexture(e){this.pooledTextures.push(e)}endFrame(){if(this.frameStarted){if(this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.bufferManager.dynamicUniform.flush(),this.commandEncoder)try{let e=this.commandEncoder.finish();this.device.queue.submit([e])}catch(e){console.error(`Failed to submit frame commands:`,e)}this.frameBufferManager.flushPendingReleases(),this.bufferManager.clearFrameBuffers();for(let e of this.frameTextures)e.destroy();this.frameTextures.length=0;for(let e of this.pooledTextures)Vc(e);this.pooledTextures.length=0;for(let e of this.pooledRenderTextures)Uc(e);this.pooledRenderTextures.length=0,ad(),md(),this.fillDynamicBindGroup=null,this.fillDynamicBindGroupBuffer=null,this.commandEncoder=null,this.renderPassEncoder=null,this.currentRenderTarget=null,this.nodeRenderPassAtlasIndex=-1,this.mainTexture=null,this.mainTextureView=null,this.frameStarted=!1}}submit(){this.endFrame()}createNode(e,t){let n=Nl();if(!Bl[n]){let e=Ys.getRenderMaxSize();Bl[n]=new ri(n,e,e)}return Bl[n].insert(e,t)||(Ml(n+1),this.createNode(e,t))}removeNode(e){let t=e.index,n=Bl[t];n&&n.dispose(e.x,e.y,e.w,e.h)}releaseTextureCache(e){if(!(!e||typeof e!=`object`))if(`w`in e){let t=e,n=Bl[t.index];n&&n.dispose(t.x,t.y,t.w,t.h)}else(`color`in e||`texture`in e)&&this.frameBufferManager.releaseTemporaryAttachment(e)}transferMainCanvas(){if(!this.$mainAttachmentObject||!this.$mainAttachmentObject.texture){this.endFrame();return}this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.ensureCommandEncoder(),this.ensureMainTexture();let e=this.pipelineManager.getPipeline(`texture_copy_bgra`),t=this.pipelineManager.getBindGroupLayout(`texture_copy`);if(!e||!t){console.error(`[WebGPU] texture_copy_bgra pipeline not found`),this.endFrame();return}this.resolveMainAttachment();let n=this.$mainAttachmentObject.texture.view;if(!$p||em!==n){tm||(tm=this.device.createBuffer({size:Wp.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.device.queue.writeBuffer(tm,0,Wp.buffer,Wp.byteOffset,Wp.byteLength));let e=this.textureManager.createSampler(`transfer_sampler`,!1);im[0].resource={buffer:tm},im[1].resource=e,im[2].resource=n,$p=this.device.createBindGroup({layout:t,entries:im}),em=n}let r=$p;nm.view=this.mainTextureView;let i=this.commandEncoder.beginRenderPass(rm);i.setPipeline(e),i.setBindGroup(0,r),i.draw(6,1,0,0),i.end(),this.endFrame()}async createImageBitmap(e,t){let n=this.$mainAttachmentObject;if(!n||!n.texture)throw Error(`[WebGPU] Main attachment not found`);this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null,this.renderPassIsInstanced=!1),this.resolveMainAttachment();let r=Math.ceil(e*4/256)*256,i=r*t,a=this.device.createBuffer({size:i,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});this.ensureCommandEncoder(),this.commandEncoder.copyTextureToBuffer({texture:n.texture.resource,mipLevel:0,origin:{x:0,y:0,z:0}},{buffer:a,bytesPerRow:r,rowsPerImage:t},{width:e,height:t,depthOrArrayLayers:1}),this.endFrame(),await a.mapAsync(GPUMapMode.READ);let o=a.getMappedRange(),s=new Uint8Array(o),c=this.preferredFormat===`bgra8unorm`,l=new Uint8Array(e*t*4),u=e*4;for(let e=0;e1&&i){let t=`clip_clear_main_${Math.min(8,Math.max(1,e))}`,n=this.pipelineManager.getPipeline(t);if(n){let e=this.frameBufferManager.createStencilRenderPassDescriptor(r,i,`load`,`load`),t=this.commandEncoder.beginRenderPass(e),a=this.bufferManager.acquireVertexBuffer(Kp.byteLength,Kp);t.setPipeline(n),t.setStencilReference(0),t.setVertexBuffer(0,a),t.draw(6,1,0,0),t.end()}}}};let $,pm=e=>{$=e},mm,hm=e=>{mm=e},gm=0,_m=()=>gm,vm=0,ym=()=>vm,bm=!1,xm=(e,t)=>{bm=!0,gm=e,vm=t},Sm=()=>bm,Cm=()=>{mm.width=gm,mm.height=vm,bm=!1},wm=[],Tm=(...e)=>{let t=wm.pop()||[];return e.length&&t.push(...e),t},Em=(e,t=1)=>({R:(e&16711680)>>16,G:(e&65280)>>8,B:e&255,A:t*255}),Dm=async(e,t)=>{if(hm(e),`gpu`in navigator){let n=navigator.gpu,r=await n.requestAdapter();if(!r)throw Error(`WebGPU adapter not available`);let i=await r.requestDevice();if(!i)throw Error(`WebGPU device not available`);let a=e.getContext(`webgpu`);if(!a)throw Error(`WebGPU context not available`);let o=n.getPreferredCanvasFormat();pm(new fm(i,a,o,t))}else{let n=e.getContext(`webgl2`,{stencil:!0,premultipliedAlpha:!0,antialias:!1,depth:!1});if(!n)throw Error(`webgl2 is not supported.`);pm(new Js(n,4,t))}},Om=(e,t,n=!0)=>{(_m()!==e||ym()!==t)&&(xm(e,t),$.resize(e,t,n),n&&W.reset())},km=(e,t=!1)=>{let n=0;for(;e.length>n;)switch(e[n++]){case 9:$.beginPath();break;case 0:$.moveTo(e[n++],e[n++]);break;case 2:$.lineTo(e[n++],e[n++]);break;case 1:$.quadraticCurveTo(e[n++],e[n++],e[n++],e[n++]);break;case 5:if(t){n+=4;break}$.fillStyle(e[n++]/255,e[n++]/255,e[n++]/255,e[n++]/255);break;case 7:$.fill();break;case 6:if(t){n+=8;break}$.thickness=e[n++],$.caps=e[n++],$.joints=e[n++],$.miterLimit=e[n++],$.strokeStyle(e[n++]/255,e[n++]/255,e[n++]/255,e[n++]/255);break;case 8:if(t)break;$.stroke();break;case 12:$.closePath();break;case 4:$.arc(e[n++],e[n++],e[n++]);break;case 3:$.bezierCurveTo(e[n++],e[n++],e[n++],e[n++],e[n++],e[n++]);break;case 10:{if(t){n+=1;let t=e[n++];n+=t*5,n+=9,$.fill();break}let r=e[n++],i=Tm(),a=e[n++];for(let t=0;t{switch(e){case 0:return`copy`;case 1:return`add`;case 2:return`alpha`;case 3:return`darken`;case 4:return`difference`;case 5:return`erase`;case 6:return`hardlight`;case 7:return`invert`;case 8:return`layer`;case 9:return`lighten`;case 10:return`multiply`;case 11:return`normal`;case 12:return`overlay`;case 13:return`screen`;case 14:return`subtract`;default:return`normal`}},jm=(e,t)=>{let n=e.subarray(t,t+6);t+=6;let r=e.subarray(t,t+8);t+=8;let i=e.subarray(t,t+4);t+=4;let a=e[t++],o=e[t++],s=e[t++],c=e[t++],l=!!e[t++],u=!!e[t++],d=e[t++],f=d===1,p=d===2,m=`${e[t++]}`,h=`${e[t++]}`,g=e[t++],_=e[t++],v=e[t++],y;if(!e[t++]){let n=l?new Float32Array(28):null;n&&(n.set(e.subarray(t,t+24)),t+=24),$.useGrid(n);let r=e[t++],i=!u&&!l,d=i?null:e.subarray(t,t+r);if(f&&!l){let n=Math.ceil(Math.abs(s-a)),i=Math.ceil(Math.abs(c-o)),l=W.get(m,h);l&&$.removeNode(l),y=$.createNode(n,i),W.set(m,h,y);let f=$.currentAttachmentObject,p=$.atlasAttachmentObject;p&&$.bind(p),$.reset(),$.beginNodeRendering(y);let g=p?p.height-y.y-i:0;$.setTransform(1,0,0,1,y.x,g),u?(km(d),$.drawFill()):$.drawPixels(y,new Uint8Array(e.buffer,e.byteOffset+t*4,r)),$.endNodeRendering(),f&&$.bind(f)}else{let e=Math.ceil(Math.abs(s-a)*g),t=Math.ceil(Math.abs(c-o)*_),r=W.get(m,h);r&&$.removeNode(r),y=$.createNode(e,t),W.set(m,h,y);let i=$.currentAttachmentObject,l=$.atlasAttachmentObject;l&&$.bind(l),$.reset(),$.beginNodeRendering(y);let u=l?l.height-y.y-t:0;$.setTransform(g,0,0,_,-a*g+y.x,-o*_+u),n&&(n[24]=y.x,n[25]=u),km(d),$.drawFill(),$.endNodeRendering(),i&&$.bind(i)}t+=i?Math.ceil(r/4):r}else if(y=W.get(m,h),!y)return t;let b=e[t++];if(e[t++]){let a=!!e[t++],o=e.subarray(t,t+4);t+=4;let s=e[t++],c=e.subarray(t,t+s),l=Math.ceil(Math.abs(i[2]-i[0])),u=Math.ceil(Math.abs(i[3]-i[1]));return $.applyFilter(y,`${v}`,a,l,u,f,n,r,Am(b),o,c),t+=s,t}if($.globalAlpha=Math.min(Math.max(0,r[3]+r[7]/255),1),$.imageSmoothingEnabled=!0,$.globalCompositeOperation=Am(b),f&&!l)$.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),$.drawDisplayObject(y,i[0],i[1],i[2],i[3],r);else if(p){let e=n[0]*a+n[2]*o+n[4],t=n[1]*a+n[3]*o+n[5];$.setTransform(n[0]/g,n[1]/g,n[2]/_,n[3]/_,e,t),$.drawDisplayObject(y,i[0],i[1],i[2],i[3],r)}else{let e=Math.atan2(n[1],n[0]),t=Math.atan2(-n[2],n[3]);if(e||t){let r=a*g,i=o*_,s=Math.cos(e),c=Math.sin(e),l=Math.cos(t),u=Math.sin(t);$.setTransform(s,c,-u,l,r*s-i*u+n[4],r*c+i*l+n[5])}else $.setTransform(1,0,0,1,i[0],i[1]);$.drawDisplayObject(y,i[0],i[1],i[2],i[3],r)}return t},Mm=(e,t)=>{let n=e.subarray(t,t+6);t+=6,$.reset(),$.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]);let r=e[t++]?new Float32Array(28):null;$.useGrid(r),r&&(r.set(e.subarray(t,t+24)),t+=24);let i=e[t++],a=e.subarray(t,t+i);return km(a,!0),t+=i,$.clip(),t},Nm=(e,t,n)=>{let r=e.widthTable[t.line]||0,i=t.textFormat,a=i.leftMargin||0;if(!n.wordWrap&&r>n.rawWidth)return Math.max(0,a);let o=i.rightMargin||0;return i.align===`center`||n.autoSize===`center`?Math.max(0,n.rawWidth/2-a-o-r/2-2):i.align===`right`||n.autoSize===`right`?Math.max(0,n.rawWidth-a-r-o-4):Math.max(0,a)},Pm=e=>{let t=``;return e.italic&&(t+=`italic `),e.bold&&(t+=`bold `),`${t}${e.size}px '${e.font}','sans-serif'`},Fm=(e,t,n,r)=>{let i=new OffscreenCanvas(t.width,t.height),a=i.getContext(`2d`);if(!a)return i;let o=Math.min(1,Math.max(n,r));if(t.background||t.border){if(a.beginPath(),a.moveTo(0,0),a.lineTo(t.width,0),a.lineTo(t.width,t.height),a.lineTo(0,t.height),a.lineTo(0,0),t.background){let e=Em(t.backgroundColor);a.fillStyle=`rgba(${e.R},${e.G},${e.B},${e.A})`,a.fill()}if(t.border){let e=Em(t.borderColor);a.lineWidth=o,a.strokeStyle=`rgba(${e.R},${e.G},${e.B},${e.A})`,a.stroke()}}if(!e)return i;a.save(),a.beginPath(),a.moveTo(2,2),a.lineTo(t.width-2,2),a.lineTo(t.width-2,t.height-2),a.lineTo(2,t.height-2),a.lineTo(2,2),a.clip();let s=2;if(t.scrollX>0){let e=(t.textWidth+4-t.rawWidth)/t.rawWidth;s+=-t.scrollX*e}let c=2;if(t.scrollY>0){let e=(t.textHeight+2-t.rawHeight)/t.rawHeight;c+=-t.scrollY*e}if(a.setTransform(n,0,0,r,s*n,c*r),a.beginPath(),t.selectIndex>-1&&t.focusIndex>-1){let n=e.textTable.length-1,r=0,i=0;t.focusIndex<=t.selectIndex?(r=Math.min(t.focusIndex,n),i=Math.min(t.selectIndex,n)):(r=Math.min(t.selectIndex,n),i=Math.min(t.focusIndex-1,n));let o=e.textTable[r],s=e.lineTable[o.line],c=Nm(e,s,t),l=0;if(r&&o.mode===`text`){let t=r;for(;t;){let n=e.textTable[--t];if(n.mode!==`text`)break;l+=n.w}}a.fillStyle=`#b4d7ff`;let u=0;for(let t=r;t<=i;++t){let n=e.textTable[t];if(n.mode===`text`&&(u+=n.w,t!==i))continue;let r=0,o=n.mode===`text`?n.line:n.line-1;for(let t=0;t0){let e=(t.textWidth-l)/l;u=t.scrollX*e}let d=l+u,f=t.rawHeight,p=0;if(t.scrollY>0){let e=(t.textHeight-f)/f;p=t.scrollY*e}let m=f+p,h=0,g=0,_=0,v=0,y=!1,b=-1;for(let n=0;n-1&&b>t.stopIndex))break;if(y&&r.mode===`text`)continue;let i=r.textFormat;if(t.autoSize===`none`){if(g>m)break;if(r.mode===`text`&&(u>h+r.w||h>d)){h+=r.w;continue}}let s=Em(i.color||0);if(a.fillStyle=`rgba(${s.R},${s.G},${s.B},${s.A})`,t.focusVisible&&t.focusIndex===n){let t=h+_+.1,n=r.line,i=r.y,o=e.ascentTable[n];r.mode!==`text`&&(i=r.mode===`break`?r.h:e.ascentTable[n-1],n>0?(n=r.line-1,o=e.ascentTable[n]):o=r.h),n>0&&e.ascentTable[n]===0&&n++;for(let t=0;tg+e.heightTable[c]){y=!0;continue}v=e.ascentTable[c],_=Nm(e,r,t),y=!1;break;case`text`:{a.beginPath(),a.font=Pm(i);let e=h+_,n=g+v;if(i.underline){let t=Em(i.color||0);a.lineWidth=o,a.strokeStyle=`rgba(${t.R},${t.G},${t.B},${t.A})`,a.beginPath(),a.moveTo(e,n+2),a.lineTo(e+r.w,n+2),a.stroke()}t.thickness&&a.strokeText(r.text,e,n),a.fillText(r.text,e,n),h+=r.w}}}if(t.focusVisible&&t.focusIndex>=e.textTable.length){let n=e.textTable[t.focusIndex-1];if(n){let e=Em(n.textFormat.color||0);a.strokeStyle=`rgba(${e.R},${e.G},${e.B},${e.A})`;let t=h+_+.1,r=g+v;a.beginPath(),n.mode===`text`?a.moveTo(t,r-n.y):a.moveTo(t,r+n.h),a.lineTo(t,r),a.stroke()}}return a.restore(),i},Im=new TextDecoder,Lm=(e,t)=>{let n=e.subarray(t,t+6);t+=6;let r=e.subarray(t,t+8);t+=8;let i=e.subarray(t,t+4);t+=4;let a=e[t++],o=e[t++],s=e[t++],c=e[t++],l=`${e[t++]}`,u=`${e[t++]}`,d=e[t++],f=!!(d&1),p=!!(d&2),m=e[t++],h=e[t++],g=e[t++],_;if(!e[t++]){let n=Math.ceil(Math.abs(s-a)*m),r=Math.ceil(Math.abs(c-o)*h);if(e[t++])_=W.get(l,u);else{let e=W.get(l,u);e&&$.removeNode(e),_=$.createNode(n,r),W.set(l,u,_)}let i=e[t++],d=new Uint8Array(e.buffer,e.byteOffset+t*4,i);t+=Math.ceil(i/4);let f=`none`;switch(e[t++]){case 0:f=`center`;break;case 1:f=`left`;break;case 2:f=`none`;break;case 3:f=`right`}let p={width:n,height:r,autoSize:f,stopIndex:e[t++],scrollX:e[t++],scrollY:e[t++],textWidth:e[t++],textHeight:e[t++],rawWidth:e[t++],rawHeight:e[t++],focusIndex:e[t++],selectIndex:e[t++],focusVisible:!!e[t++],thickness:e[t++],thicknessColor:e[t++],wordWrap:!!e[t++],border:!!e[t++],borderColor:e[t++],background:!!e[t++],backgroundColor:e[t++],defaultColor:e[t++],defaultSize:e[t++]},g=Fm(JSON.parse(Im.decode(d)),p,m,h),v=$.currentAttachmentObject,y=$.atlasAttachmentObject;y&&$.bind(y),$.reset(),$.beginNodeRendering(_);let b=y?y.height-_.y-r:0;$.setTransform(1,0,0,1,_.x,b),$.drawElement(_,g),$.endNodeRendering(),v&&$.bind(v)}else if(_=W.get(l,u),!_)return t;let v=e[t++];if(e[t++]){let a=!!e[t++],o=e.subarray(t,t+4);t+=4;let s=e[t++],c=e.subarray(t,t+s),l=Math.ceil(Math.abs(i[2]-i[0])),u=Math.ceil(Math.abs(i[3]-i[1]));return $.applyFilter(_,`${g}`,!!Math.max(+f,+a),l,u,!1,n,r,Am(v),o,c),t+=s,t}if($.globalAlpha=Math.min(Math.max(0,r[3]+r[7]/255),1),$.imageSmoothingEnabled=!0,$.globalCompositeOperation=Am(v),p){let e=n[0]*a+n[2]*o+n[4],t=n[1]*a+n[3]*o+n[5];$.setTransform(n[0]/m,n[1]/m,n[2]/h,n[3]/h,e,t)}else{let e=Math.atan2(n[1],n[0]),t=Math.atan2(-n[2],n[3]);if(e||t){let r=a*m,i=o*h,s=Math.cos(e),c=Math.sin(e),l=Math.cos(t),u=Math.sin(t);$.setTransform(s,c,-u,l,r*s-i*u+n[4],r*c+i*l+n[5])}else $.setTransform(1,0,0,1,i[0],i[1])}return $.drawDisplayObject(_,i[0],i[1],i[2],i[3],r),t},Rm=(e,t,n)=>{let r=e.subarray(t,t+6);t+=6;let i=e.subarray(t,t+8);t+=8;let a=e.subarray(t,t+4);t+=4;let o=e[t++],s=e[t++],c=e[t++],l=e[t++],u=`${e[t++]}`,d=!!e[t++],f=`${e[t++]}`,p;if(!e[t++]){let r=Math.abs(c-o),i=Math.abs(l-s);if(e[t++])p=W.get(u,`0`);else{let e=W.get(u,`0`);e&&$.removeNode(e),p=$.createNode(r,i),W.set(u,`0`,p)}if(n&&n.length){let e=$.currentAttachmentObject,t=$.atlasAttachmentObject;t&&$.bind(t),$.reset(),$.beginNodeRendering(p);let r=t?t.height-p.y-i:0;$.setTransform(1,0,0,1,p.x,r);let a=n.shift();$.drawElement(p,a,!0),$.endNodeRendering(),e&&$.bind(e)}}else if(p=W.get(u,`0`),!p)return t;let m=e[t++];if(e[t++]){let n=!!e[t++],o=e.subarray(t,t+4);t+=4;let s=e[t++],c=e.subarray(t,t+s),l=Math.ceil(Math.abs(a[2]-a[0])),u=Math.ceil(Math.abs(a[3]-a[1]));return $.applyFilter(p,f,!!Math.max(+d,+n),l,u,!0,r,i,Am(m),o,c),t+=s,t}return $.globalAlpha=Math.min(Math.max(0,i[3]+i[7]/255),1),$.imageSmoothingEnabled=!0,$.globalCompositeOperation=Am(m),$.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),$.drawDisplayObject(p,a[0],a[1],a[2],a[3],i),t},zm=(e,t)=>{let n=e[t++];for(let r=0;r{let r=0,i=!0,a=Am(e[t++]),o=!!e[t++],s=0,c=0,l=!1,u=!1,d=``,f=``,p=1,m=1,h=null,g=null,_=null,v=null,y=1,b=1;if(o){s=e[t++],c=e[t++];let n=e[t++];if(l=n===1,u=n===2,u){let n=!!e[t++];if(d=`${e[t++]}`,f=`${e[t++]}`,h=e.subarray(t,t+4),t+=4,p=e[t++],m=e[t++],_=e.subarray(t,t+6),t+=6,v=e.subarray(t,t+8),t+=8,n){let e=W.get(d,`bNode`);return e&&($.globalAlpha=Math.min(Math.max(0,v[3]+v[7]/255),1),$.globalCompositeOperation=a,$.setTransform(_[0]/p,_[1]/p,_[2]/m,_[3]/m,_[4],_[5]),$.drawDisplayObject(e,h[0],h[1],h[2],h[3],v)),t}t+=e[t]+1}else if(l){let n=!!e[t++];if(d=`${e[t++]}`,f=`${e[t++]}`,n)return h=e.subarray(t,t+4),t+=4,_=e.subarray(t,t+6),t+=6,t+=2,v=e.subarray(t,t+8),t+=8,$.containerDrawCachedFilter(a,_,v,h,d,f),t;h=e.subarray(t,t+4),t+=4,_=e.subarray(t,t+6),t+=6,y=e[t++],b=e[t++],v=e.subarray(t,t+8),t+=8;let r=e[t++];g=e.subarray(t,t+r),t+=r}else _=e.subarray(t,t+6),t+=6,v=e.subarray(t,t+8),t+=8}let x=null;u?x=$.containerBeginAtlasNode(s,c):o&&$.containerBeginLayer(s,c);let S=!!e[t++];if(S){switch($.drawArraysInstanced(),$.save(),$.beginMask(),$.setMaskBounds(e[t++],e[t++],e[t++],e[t++]),e[t++]){case 0:t=zm(e,t);break;case 1:t=Mm(e,t)}$.endMask()}let C=e[t++];for(let a=0;C>a;a++){let a=e[t++],o=e[t++];if(r&&a>r&&(i&&($.restore(),$.leaveMask()),r=0,i=!0),i){if(o){if(r=o,i=!!e[t++],!i)continue;switch($.drawArraysInstanced(),$.save(),$.beginMask(),$.setMaskBounds(e[t++],e[t++],e[t++],e[t++]),e[t++]){case 0:t=zm(e,t);break;case 1:t=Mm(e,t)}$.endMask();continue}if(e[t++])switch(e[t++]){case 0:t=Bm(e,t,n);break;case 1:t=jm(e,t);break;case 2:t=Lm(e,t);break;case 3:t=Rm(e,t,n)}}}if((r||S)&&($.restore(),$.leaveMask()),x){$.containerEndAtlasNode();let e=W.get(d,`bNode`);e&&$.removeNode(e),W.set(d,`bNode`,x),W.set(d,`bKey`,f),$.globalAlpha=Math.min(Math.max(0,v[3]+v[7]/255),1),$.globalCompositeOperation=a,$.setTransform(_[0]/p,_[1]/p,_[2]/m,_[3]/m,_[4],_[5]),$.drawDisplayObject(x,h[0],h[1],h[2],h[3],v)}else o&&$.containerEndLayer(a,_,v,l,h,g,d,f,y,b);return t},Vm=-1,Hm=(e,t)=>{Sm()&&Cm(),$.clearTransferBounds();let n=0,r=e[n++];for(Vm!==r&&(Vm=r,Vm===-1?$.updateBackgroundColor(0,0,0,0):$.updateBackgroundColor((Vm>>16&255)/255,(Vm>>8&255)/255,(Vm&255)/255,1)),$.reset(),$.setTransform(1,0,0,1,0,0),$.fillBackgroundColor();e.length>n;){if(!e[n++])continue;let r=e[n++];switch(r){case 0:n=Bm(e,n,t);break;case 1:n=jm(e,n);break;case 2:n=Lm(e,n);break;case 3:n=Rm(e,n,t);break;default:console.error(`unknown type`,r)}}$.drawArraysInstanced(),$.transferMainCanvas()},Um=e=>{for(let t=0;t{$.clearTransferBounds();let o=1;$.reset(),$.setTransform(1,0,0,1,0,0);let s=$.$clearColorR,c=$.$clearColorG,l=$.$clearColorB,u=$.$clearColorA;for($.updateBackgroundColor((r>>16&255)/255,(r>>8&255)/255,(r&255)/255,i),$.fillBackgroundColor();e.length>o;){if(!e[o++])continue;let t=e[o++];switch(t){case 0:o=Bm(e,o,a);break;case 1:o=jm(e,o);break;case 2:o=Lm(e,o);break;case 3:o=Rm(e,o,a);break;default:console.error(`unknown type`,t)}}$.drawArraysInstanced();let d=await $.createImageBitmap(t,n);return $.updateBackgroundColor(s,c,l,u),d},Gm=new class{state;queue;constructor(){this.state=`deactivate`,this.queue=[]}async execute(){for(this.state=`active`;this.queue.length;){let e=this.queue.shift();if(e)switch(e.command){case`render`:Hm(e.buffer.subarray(0,e.length),e.imageBitmaps),globalThis.postMessage({message:`render`,buffer:e.buffer},[e.buffer.buffer]);break;case`resize`:Om(e.buffer[0],e.buffer[1],!!e.buffer[2]);break;case`initialize`:await Dm(e.canvas,e.devicePixelRatio);break;case`removeCache`:Um(e.buffer);break;case`cacheClear`:W.reset();break;case`capture`:{let t=await Wm(e.buffer.subarray(0,e.length),e.width,e.height,e.bgColor,e.bgAlpha,e.imageBitmaps);globalThis.postMessage({message:`capture`,buffer:e.buffer,imageBitmap:t},[e.buffer.buffer,t])}}}this.state=`deactivate`}};self.addEventListener(`message`,async e=>{Gm.queue.push(e.data),Gm.state===`deactivate`&&await Gm.execute()})})();",y=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,v],{type:`text/javascript;charset=utf-8`});function b(e){let t;try{if(t=y&&(self.URL||self.webkitURL).createObjectURL(y),!t)throw``;let n=new Worker(t,{name:e?.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch{return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(v),{name:e?.name})}}var x=new b,S=e=>{let t=e.transferControlToOffscreen();x.postMessage({command:`initialize`,canvas:t,devicePixelRatio:window.devicePixelRatio},[t])},C=class{static get AT_TARGET(){return 2}static get BUBBLING_PHASE(){return 3}static get CAPTURING_PHASE(){return 1}},w=class{type;bubbles;listener;target;currentTarget;eventPhase;_$stopImmediatePropagation;_$stopPropagation;constructor(e,t=!1){this.type=`${e}`,this.bubbles=t,this.target=null,this.currentTarget=null,this.eventPhase=C.AT_TARGET,this.listener=null,this._$stopImmediatePropagation=!1,this._$stopPropagation=!1}static get ADDED(){return`added`}static get ADDED_TO_STAGE(){return`addedToStage`}static get CHANGE(){return`change`}static get COMPLETE(){return`complete`}static get ENDED(){return`ended`}static get ENTER_FRAME(){return`enterFrame`}static get FRAME_LABEL(){return`frameLabel`}static get INPUT(){return`input`}static get OPEN(){return`open`}static get REMOVED(){return`removed`}static get REMOVED_FROM_STAGE(){return`removedFromStage`}static get RESIZE(){return`resize`}static get SCROLL(){return`scroll`}stopImmediatePropagation(){this._$stopImmediatePropagation=!0}stopPropagation(){this._$stopPropagation=!0}},T=new Map,E=[],ee=()=>E.length?E.pop():[],te=e=>{10>E.length&&(e.length=0,E.push(e))},ne=null,re=e=>{ne=e},ie=()=>ne,D=class e extends w{constructor(t,n=!0){return super(t,n),new Proxy(this,{get:(t,n)=>{if(n in t)return t[n];let r=ie();if(r)switch(r.type){case e.KEY_DOWN:case e.KEY_UP:return n in r?$event[n]:void 0;default:return}}})}static get KEY_DOWN(){return`keydown`}static get KEY_UP(){return`keyup`}},ae=(e,t,n,r=!1,i=0)=>{let a;switch(t){case w.ENTER_FRAME:case D.KEY_DOWN:case D.KEY_UP:(!T.size||!T.has(t))&&T.set(t,ee()),a=T.get(t);break;default:e._$events||=new Map,(!e._$events.size||!e._$events.has(t))&&e._$events.set(t,ee()),a=e._$events.get(t)}let o=a.length,s=0;for(;s1&&a.sort((e,t)=>{switch(!0){case e.priority>t.priority:return-1;case e.priority{switch(t){case w.ENTER_FRAME:case D.KEY_DOWN:case D.KEY_UP:return!!(T.size&&T.has(t));default:return!!(e._$events&&e._$events.size&&e._$events.has(t))}},se=(e,t,n,r=!1)=>{let i;switch(t){case w.ENTER_FRAME:case D.KEY_DOWN:case D.KEY_UP:if(!T.size||!T.has(t))return;i=T.get(t);break;default:if(!e._$events||!e._$events.size||!e._$events.has(t))return;i=e._$events.get(t)}if(i){for(let e=0;e1&&i.sort((e,t)=>{switch(!0){case e.priority>t.priority:return-1;case e.priority{let r;switch(t){case w.ENTER_FRAME:case D.KEY_DOWN:case D.KEY_UP:if(!T.size||!T.has(t))return;r=T.get(t);break;default:if(!e._$events||!e._$events.size||!e._$events.has(t))return;r=e._$events.get(t)}if(!r)return;let i=ee();for(let e=0;e1&&i.sort((e,t)=>{switch(!0){case e.priority>t.priority:return-1;case e.priority{if(e.hasEventListener(t))return!0;if(`parent`in e){let n=e.parent;for(;n;){if(n.hasEventListener(t))return!0;if(!(`parent`in n))break;n=n.parent}}return!1},ue=(e,t)=>{switch(t.type){case w.ENTER_FRAME:case D.KEY_DOWN:case D.KEY_UP:{if(!T.size||!T.has(t.type))return!1;let e=T.get(t.type);if(!e.length)return!1;for(let n=0;n-1;--e){let n=r[e];for(let e=0;e{if(n in t)return t[n];let r=ie();if(r)switch(r.type){case e.FOCUS_IN:case e.FOCUS_OUT:return n in r?$event[n]:void 0;default:return}}})}static get FOCUS_IN(){return`focusin`}static get FOCUS_OUT(){return`focusout`}},O=class extends w{gamepadIndex;buttonIndex;buttonValue;axisIndex;axisValue;constructor(e,t=!0){super(e,t),this.gamepadIndex=0,this.buttonIndex=void 0,this.buttonValue=void 0,this.axisIndex=void 0,this.axisValue=void 0}static get GAMEPAD_CONNECTED(){return`gamepadconnected`}static get GAMEPAD_DISCONNECTED(){return`gamepaddisconnected`}static get BUTTON_DOWN(){return`gamepadbuttondown`}static get BUTTON_UP(){return`gamepadbuttonup`}static get AXES_MOTION(){return`gamepadaxesmotion`}},pe=class extends w{status;responseHeaders;responseURL;constructor(e,t=!1,n=0,r=``,i=[]){super(e,t),this.status=n|0,this.responseHeaders=i,this.responseURL=r}static get HTTP_STATUS(){return`httpStatus`}},me=class extends w{text;constructor(e,t=!1,n=``){super(e,t),this.text=`${n}`}static get IO_ERROR(){return`ioError`}},k=()=>{let e=ie();if(!e)return null;switch(e.type){case A.POINTER_DOWN:case A.POINTER_MOVE:case A.POINTER_UP:case A.POINTER_LEAVE:case A.POINTER_OVER:case A.POINTER_OUT:return e;default:return null}},A=class extends w{constructor(e,t=!0){super(e,t)}get pointerId(){return k()?.pointerId}get pointerType(){return k()?.pointerType}get width(){return k()?.width}get height(){return k()?.height}get pressure(){return k()?.pressure}get tangentialPressure(){return k()?.tangentialPressure}get tiltX(){return k()?.tiltX}get tiltY(){return k()?.tiltY}get twist(){return k()?.twist}get isPrimary(){return k()?.isPrimary}get clientX(){return k()?.clientX}get clientY(){return k()?.clientY}get pageX(){return k()?.pageX}get pageY(){return k()?.pageY}get screenX(){return k()?.screenX}get screenY(){return k()?.screenY}get offsetX(){return k()?.offsetX}get offsetY(){return k()?.offsetY}get movementX(){return k()?.movementX}get movementY(){return k()?.movementY}get x(){return k()?.x}get y(){return k()?.y}get button(){return k()?.button}get buttons(){return k()?.buttons}get altKey(){return k()?.altKey}get ctrlKey(){return k()?.ctrlKey}get metaKey(){return k()?.metaKey}get shiftKey(){return k()?.shiftKey}get detail(){return k()?.detail}get timeStamp(){return k()?.timeStamp}static get DOUBLE_CLICK(){return`dblclick`}static get POINTER_DOWN(){return`pointerdown`}static get POINTER_LEAVE(){return`pointerleave`}static get POINTER_MOVE(){return`pointermove`}static get POINTER_OUT(){return`pointerout`}static get POINTER_OVER(){return`pointerover`}static get POINTER_UP(){return`pointerup`}static get POINTER_CANCEL(){return`pointercancel`}},j=class extends w{bytesLoaded;bytesTotal;constructor(e,t=!1,n=0,r=0){super(e,t),this.bytesLoaded=n|0,this.bytesTotal=r|0}static get PROGRESS(){return`progress`}},he=class extends w{static get PLAY(){return`play`}static get PLAYING(){return`playing`}static get PAUSE(){return`pause`}static get SEEK(){return`seek`}},ge=class extends w{static get UPDATE(){return`jobupdate`}static get STOP(){return`jobstop`}},_e=class e extends w{constructor(t,n=!0){return super(t,n),new Proxy(this,{get:(t,n)=>{if(n in t)return t[n];let r=ie();if(r&&r.type===e.WHEEL)return n in r?$event[n]:void 0}})}static get WHEEL(){return`wheel`}},ve=[],ye=e=>{e.size&&e.clear(),ve.push(e)},be=()=>ve.pop()||new Map,xe=(e,t,n)=>{n.clear(),e.$timerId!==null&&clearTimeout(e.$timerId);for(let n of t.values()){for(let t of n.values())t&&e.destroy(t);ye(n)}t.clear()},Se=(e,t)=>{if(!(!t||typeof t!=`object`)&&`canvas`in t){let n=t.canvas,r=n.width,i=n.height;t.clearRect(0,0,r+1,i+1),n.width=n.height=1,e.push(n)}},Ce=(e,t,n)=>{if(!e.has(t))return;let r=e.get(t);r.has(n)&&(r.delete(n),r.size||(ye(r),e.delete(t)))},we=(e,t,n)=>{if(!t.has(n))return;let r=t.get(n);for(let t of r.values())e.destroy(t);t.delete(n),ye(r)},Te=(e,t,n,r,i)=>{let a=t.get(r)||null;return a?(n.has(r)&&(n.delete(r),a.delete(`trash`)),e.$maxStoreSize>0&&(t.delete(r),t.set(r,a)),a.get(i)||null):null},Ee=(e,t,n,r,i=null)=>{t.has(n)||t.set(n,be());let a=t.get(n);if(i===null){if(!a.has(r))return;e.destroy(a.get(r)),a.delete(r),a.size||(t.delete(n),ye(a));return}if(a.set(r,i),e.$maxStoreSize>0)for(t.delete(n),t.set(n,a);t.size>e.$maxStoreSize;){let r=t.keys().next().value;if(r===n)break;e.removeById(r),e.$removeIds.push(+r)}},De=(e,t,n=``)=>n?e.has(t)?e.get(t).has(n):!1:e.has(t),Oe=(e,t,n)=>{let r=2166136261,i=e*100|0;return r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619),i=t*100|0,r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619),n&&(i=n*100|0,r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619)),(r>>>0)%16777216},ke=(e,t,n,r)=>{let i=2166136261,a=e*100|0;return i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=t*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=n*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=r*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),(i>>>0)%16777216},Ae=(e,t,n,r)=>{if(n.has(r))return;let i=t.get(r);i&&(i.set(`trash`,!0),n.set(r,i),e.$timerId!==null&&clearTimeout(e.$timerId),e.$removeCache=!1,e.$timerId=setTimeout(()=>{e.$removeCache=!0,e.$timerId=null},1e3))},je=(e,t)=>{if(t.size){for(let[n,r]of t)r.has(`trash`)&&(e.removeById(n),e.$removeIds.push(+n));t.clear(),e.$removeCache=!1}},Me=(e,t,n)=>{if(!t.has(n))return;t.delete(n);let r=e.get(n);r&&r.delete(`trash`)},M=new class{_$pool;_$store;_$trash;$timerId;$removeCache;$removeIds;$maxStoreSize;constructor(){this._$pool=[],this._$store=new Map,this._$trash=new Map,this.$timerId=null,this.$removeIds=[],this.$removeCache=!1,this.$maxStoreSize=0}reset(){xe(this,this._$store,this._$trash)}destroy(e=null){Se(this._$pool,e)}getCanvas(){return this._$pool.pop()||document.createElement(`canvas`)}remove(e,t){Ce(this._$store,e,t)}removeTimer(e){Ae(this,this._$store,this._$trash,e)}cancelRemoveTimer(e){Me(this._$store,this._$trash,e)}removeTimerScheduledCache(){je(this,this._$trash)}removeById(e){we(this,this._$store,e)}getById(e){let t=this._$store.get(e);return t&&this.$maxStoreSize>0&&(this._$store.delete(e),this._$store.set(e,t)),t}get(e,t){return Te(this,this._$store,this._$trash,e,t)}set(e,t,n=null){Ee(this,this._$store,e,t,n)}has(e,t=``){return De(this._$store,e,t)}generateKeys(e,t,n){return Oe(e,t,n)}generateFilterKeys(e,t,n,r){return ke(e,t,n,r)}},Ne=e=>{let t=M.getCanvas();t.width=e.width,t.height=e.height;let n=t.getContext(`2d`,{willReadFrequently:!0});n.drawImage(e,0,0);let r=n.getImageData(0,0,e.width,e.height),i=new Uint8Array(r.data.buffer);return M.destroy(n),i},Pe=e=>{let t=M.getCanvas();t.width=e.width,t.height=e.height;let n=t.getContext(`2d`);n.setTransform(1,0,0,1,0,0),n.drawImage(e,0,0);let r=n.getImageData(0,0,e.width,e.height),i=new Uint8Array(r.data.buffer);return M.destroy(n),i},Fe=class e{width;height;buffer;constructor(e=0,t=0){this.width=e|0,this.height=t|0,this.buffer=null}set image(e){if(!e){this.width=0,this.height=0,this.buffer=null;return}this.buffer=Ne(e),this.width=e.width,this.height=e.height}set canvas(e){if(!e){this.width=0,this.height=0,this.buffer=null;return}this.buffer=Pe(e),this.width=e.width,this.height=e.height}clone(){let t=new e(this.width,this.height);return this.buffer!==null&&(t.buffer=this.buffer.slice()),t}},Ie=class{static get ADD(){return`add`}static get ALPHA(){return`alpha`}static get DARKEN(){return`darken`}static get DIFFERENCE(){return`difference`}static get ERASE(){return`erase`}static get HARDLIGHT(){return`hardlight`}static get INVERT(){return`invert`}static get LAYER(){return`layer`}static get LIGHTEN(){return`lighten`}static get MULTIPLY(){return`multiply`}static get NORMAL(){return`normal`}static get OVERLAY(){return`overlay`}static get SCREEN(){return`screen`}static get SUBTRACT(){return`subtract`}},Le=(e,t)=>{let n=N.multiply(e._$colorTransform,t._$colorTransform);e._$colorTransform[0]=n[0],e._$colorTransform[1]=n[1],e._$colorTransform[2]=n[2],e._$colorTransform[3]=n[3],e._$colorTransform[4]=n[4],e._$colorTransform[5]=n[5],e._$colorTransform[6]=n[6],e._$colorTransform[7]=n[7],N.release(n)},Re=[],ze=(e=1,t=0,n=0,r=1,i=0,a=0)=>{let o=Re.pop()||new Float32Array(6);return o[0]=e,o[1]=t,o[2]=n,o[3]=r,o[4]=i,o[5]=a,o},Be=e=>{Re.push(e)},Ve=[],He=(e=1,t=1,n=1,r=1,i=0,a=0,o=0,s=0)=>{let c=Ve.pop()||new Float32Array(8);return c[0]=e,c[1]=t,c[2]=n,c[3]=r,c[4]=i,c[5]=a,c[6]=o,c[7]=s,c},Ue=e=>{Ve.push(e)},We=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},N=class e{_$colorTransform;constructor(e=1,t=1,n=1,r=1,i=0,a=0,o=0,s=0){this._$colorTransform=He(e,t,n,r,i,a,o,s)}get rawData(){return this._$colorTransform}get alphaMultiplier(){return this._$colorTransform[3]}set alphaMultiplier(e){this._$colorTransform[3]=We(e,0,1,1)}get alphaOffset(){return this._$colorTransform[7]}set alphaOffset(e){this._$colorTransform[7]=We(e,-255,255,0)}get blueMultiplier(){return this._$colorTransform[2]}set blueMultiplier(e){this._$colorTransform[2]=We(e,0,1,1)}get blueOffset(){return this._$colorTransform[6]}set blueOffset(e){this._$colorTransform[6]=We(e,-255,255,0)}get greenMultiplier(){return this._$colorTransform[1]}set greenMultiplier(e){this._$colorTransform[1]=We(e,0,1,1)}get greenOffset(){return this._$colorTransform[5]}set greenOffset(e){this._$colorTransform[5]=We(e,-255,255,0)}get redMultiplier(){return this._$colorTransform[0]}set redMultiplier(e){this._$colorTransform[0]=We(e,0,1,1)}get redOffset(){return this._$colorTransform[4]}set redOffset(e){this._$colorTransform[4]=We(e,-255,255,0)}clone(){return new e(...this._$colorTransform)}concat(e){Le(this,e)}static multiply(e,t){return He(e[0]*t[0],e[1]*t[1],e[2]*t[2],e[3]*t[3],e[0]*t[4]+e[4],e[1]*t[5]+e[5],e[2]*t[6]+e[6],e[3]*t[7]+e[7])}static release(e){Ue(e)}},Ge=e=>new F(e._$matrix[0],e._$matrix[1],e._$matrix[2],e._$matrix[3],e._$matrix[4],e._$matrix[5]),Ke=(e,t)=>{let n=e._$matrix,r=t._$matrix,i=n[0]*r[0],a=0,o=0,s=n[3]*r[3],c=n[4]*r[0]+r[4],l=n[5]*r[3]+r[5];(n[1]||n[2]||r[1]||r[2])&&(i+=n[1]*r[2],s+=n[2]*r[1],a+=n[0]*r[1]+n[1]*r[3],o+=n[2]*r[0]+n[3]*r[2],c+=n[5]*r[2],l+=n[4]*r[1]),n[0]=i,n[1]=a,n[2]=o,n[3]=s,n[4]=c,n[5]=l},qe=(e,t)=>{e._$matrix[0]=t._$matrix[0],e._$matrix[1]=t._$matrix[1],e._$matrix[2]=t._$matrix[2],e._$matrix[3]=t._$matrix[3],e._$matrix[4]=t._$matrix[4],e._$matrix[5]=t._$matrix[5]},Je=(e,t,n,r=0,i=0,a=0)=>{e.identity(),e.rotate(r),e.scale(t,n),e.translate(i,a)},Ye=(e,t,n,r=0,i=0,a=0)=>{let o=e._$matrix;if(o[0]=t/1638.4,o[3]=n/1638.4,r){let e=Math.cos(r),t=Math.sin(r);o[1]=t*o[3],o[2]=-t*o[0],o[0]*=e,o[3]*=e}else o[1]=0,o[2]=0;o[4]=i+t/2,o[5]=a+n/2},Xe=(e,t)=>new P(e.x+t.x,e.y+t.y),Ze=e=>new P(e.x,e.y),Qe=(e,t)=>{e.x=t.x,e.y=t.y},$e=(e,t)=>Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2),et=(e,t)=>e.x===t.x&&e.y===t.y,tt=(e,t,n)=>new P(e.x+(t.x-e.x)*(1-n),e.y+(t.y-e.y)*(1-n)),nt=(e,t)=>{let n=t/e.length;e.x*=n,e.y*=n},rt=(e,t,n)=>{e.x+=t,e.y+=n},it=(e,t)=>new P(e*Math.cos(t),e*Math.sin(t)),at=(e,t,n)=>{e.x=t,e.y=n},ot=(e,t)=>new P(e.x-t.x,e.y-t.y),P=class{x;y;constructor(e=0,t=0){this.x=e,this.y=t}get length(){return Math.sqrt(this.x**2+this.y**2)}add(e){return Xe(this,e)}clone(){return Ze(this)}copyFrom(e){Qe(this,e)}static distance(e,t){return $e(e,t)}equals(e){return et(this,e)}static interpolate(e,t,n){return tt(e,t,n)}normalize(e){nt(this,e)}offset(e,t){rt(this,e,t)}static polar(e,t){return it(e,t)}setTo(e,t){at(this,e,t)}subtract(e){return ot(this,e)}},st=(e,t)=>new P(t.x*e._$matrix[0]+t.y*e._$matrix[2],t.x*e._$matrix[1]+t.y*e._$matrix[3]),ct=e=>{e._$matrix[0]=1,e._$matrix[1]=0,e._$matrix[2]=0,e._$matrix[3]=1,e._$matrix[4]=0,e._$matrix[5]=0},lt=e=>{let t=e._$matrix[0],n=e._$matrix[1],r=e._$matrix[2],i=e._$matrix[3],a=e._$matrix[4],o=e._$matrix[5];if(n===0&&r===0)e._$matrix[0]=1/t,e._$matrix[1]=0,e._$matrix[2]=0,e._$matrix[3]=1/i,e._$matrix[4]=-e._$matrix[0]*a,e._$matrix[5]=-e._$matrix[3]*o;else{let s=t*i-n*r;if(s){let c=1/s;e._$matrix[0]=i*c,e._$matrix[1]=-n*c,e._$matrix[2]=-r*c,e._$matrix[3]=t*c,e._$matrix[4]=-(e._$matrix[0]*a+e._$matrix[2]*o),e._$matrix[5]=-(e._$matrix[1]*a+e._$matrix[3]*o)}}},ut=(e,t)=>{let n=e._$matrix,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5];n[0]=r*Math.cos(t)-i*Math.sin(t),n[1]=r*Math.sin(t)+i*Math.cos(t),n[2]=a*Math.cos(t)-o*Math.sin(t),n[3]=a*Math.sin(t)+o*Math.cos(t),n[4]=s*Math.cos(t)-c*Math.sin(t),n[5]=s*Math.sin(t)+c*Math.cos(t)},dt=(e,t,n)=>{let r=e._$matrix;r[0]*=t,r[2]*=t,r[4]*=t,r[1]*=n,r[3]*=n,r[5]*=n},ft=(e,t,n,r,i,a,o)=>{let s=e._$matrix;s[0]=t,s[1]=n,s[2]=r,s[3]=i,s[4]=a,s[5]=o},pt=(e,t)=>{let n=t.x,r=t.y,i=e._$matrix;return new P(n*i[0]+r*i[2]+i[4],n*i[1]+r*i[3]+i[5])},mt=(e,t,n)=>{e.tx+=t,e.ty+=n},F=class{_$matrix;constructor(e=1,t=0,n=0,r=1,i=0,a=0){this._$matrix=ze(e,t,n,r,i,a)}get a(){return this._$matrix[0]}set a(e){this._$matrix[0]=e}get b(){return this._$matrix[1]}set b(e){this._$matrix[1]=e}get c(){return this._$matrix[2]}set c(e){this._$matrix[2]=e}get d(){return this._$matrix[3]}set d(e){this._$matrix[3]=e}get tx(){return this._$matrix[4]}set tx(e){this._$matrix[4]=e}get ty(){return this._$matrix[5]}set ty(e){this._$matrix[5]=e}get rawData(){return this._$matrix}clone(){return Ge(this)}concat(e){Ke(this,e)}copyFrom(e){qe(this,e)}createBox(e,t,n=0,r=0,i=0){Je(this,e,t,n,r,i)}createGradientBox(e,t,n=0,r=0,i=0){Ye(this,e,t,n,r,i)}deltaTransformPoint(e){return st(this,e)}identity(){ct(this)}invert(){lt(this)}rotate(e){ut(this,e)}scale(e,t){dt(this,e,t)}setTo(e,t,n,r,i,a){ft(this,e,t,n,r,i,a)}transformPoint(e){return pt(this,e)}translate(e,t){mt(this,e,t)}static multiply(e,t){let n=e[0],r=e[1],i=e[2],a=e[3],o=e[4],s=e[5],c=t[0],l=t[1],u=t[2],d=t[3],f=t[4],p=t[5];return ze(n*c+i*l,r*c+a*l,n*u+i*d,r*u+a*d,n*f+i*p+o,r*f+a*p+s)}static release(e){Be(e)}},ht=e=>new jt(e.x,e.y,e.width,e.height),gt=(e,t,n)=>e.x<=t&&e.y<=n&&e.right>t&&e.bottom>n,_t=(e,t)=>e.x<=t.x&&e.y<=t.y&&e.right>t.x&&e.bottom>t.y,vt=(e,t)=>e.x<=t.x&&e.y<=t.y&&e.right>=t.right&&e.bottom>=t.bottom,yt=(e,t)=>{e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height},bt=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,xt=(e,t,n)=>{e.x-=t,e.width+=2*t,e.y-=n,e.height+=2*n},St=(e,t)=>{e.x-=t.x,e.width+=2*t.x,e.y-=t.y,e.height+=2*t.y},Ct=(e,t)=>{let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y),i=Math.min(e.right,t.right),a=Math.min(e.bottom,t.bottom),o=i-n,s=a-r;return o>0&&s>0?new jt(n,r,o,s):new jt(0,0,0,0)},wt=(e,t)=>{let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y),i=Math.min(e.right,t.right),a=Math.min(e.bottom,t.bottom);return i-n>0&&a-r>0},Tt=e=>e.width<=0||e.height<=0,Et=(e,t,n)=>{e.x+=t,e.y+=n},Dt=(e,t)=>{e.x+=t.x,e.y+=t.y},Ot=e=>{e.x=e.y=e.width=e.height=0},kt=(e,t,n,r,i)=>{e.x=t,e.y=n,e.width=r,e.height=i},At=(e,t)=>e.isEmpty()?t.clone():t.isEmpty()?e.clone():new jt(Math.min(e.x,t.x),Math.min(e.y,t.y),Math.max(e.right-t.left,t.right-e.left),Math.max(e.bottom-t.top,t.bottom-e.top)),jt=class{x;y;width;height;constructor(e=0,t=0,n=0,r=0){this.x=e,this.y=t,this.width=n,this.height=r}get bottom(){return this.y+this.height}set bottom(e){this.height=e-this.y}get bottomRight(){return new P(this.right,this.bottom)}set bottomRight(e){this.right=e.x,this.bottom=e.y}get left(){return this.x}set left(e){this.width=this.right-e,this.x=e}get right(){return this.x+this.width}set right(e){this.width=e-this.x}get size(){return new P(this.width,this.height)}set size(e){this.width=e.x,this.height=e.y}get top(){return this.y}set top(e){this.height=this.bottom-e,this.y=e}get topLeft(){return new P(this.x,this.y)}set topLeft(e){this.left=e.x,this.top=e.y}clone(){return ht(this)}contains(e,t){return gt(this,e,t)}containsPoint(e){return _t(this,e)}containsRect(e){return vt(this,e)}copyFrom(e){yt(this,e)}equals(e){return bt(this,e)}inflate(e,t){xt(this,e,t)}inflatePoint(e){St(this,e)}intersection(e){return Ct(this,e)}intersects(e){return wt(this,e)}isEmpty(){return Tt(this)}offset(e,t){Et(this,e,t)}offsetPoint(e){Dt(this,e)}setEmpty(){Ot(this)}setTo(e,t,n,r){kt(this,e,t,n,r)}union(e){return At(this,e)}},I=e=>{e.changed=!0;let t=e.parent;for(;t&&!t.changed;)t.changed=!0,t=t.parent},Mt=e=>{if(e.placeObject)return e.placeObject;let t=e.placeId;if(t===-1)return null;let n=e.parent;if(!n)return null;let r=n.loaderInfo;if(!r||!r.data)return null;let i=r.data.characters[n.characterId],a=n.isTimelineEnabled?n.currentFrame:1,o=i.placeMap[a];if(!o||!(t in o))return null;let s=o[t],c=i.placeObjects[s];return c?(e.placeObject=c,c):null},Nt=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),L=new class{buffer;offset;constructor(){this.buffer=new Float32Array(256),this.offset=0}push(...e){this.buffer.lengthIt++,Rt=[],zt=[],Bt=[],Vt=[],R=(e=0,t=0,n=0,r=0,i=0,a=0)=>{let o=Bt.pop()||new Float32Array(6);return o[0]=e,o[1]=t,o[2]=n,o[3]=r,o[4]=i,o[5]=a,o},Ht=e=>{Bt.push(e)},Ut=(e=1,t=1,n=1,r=1,i=0,a=0,o=0,s=0)=>{let c=Vt.pop()||new Float32Array(8);return c[0]=e,c[1]=t,c[2]=n,c[3]=r,c[4]=i,c[5]=a,c[6]=o,c[7]=s,c},Wt=[],Gt=()=>Wt.pop()||new Map,Kt=e=>{e.clear(),Wt.push(e)},z=(...e)=>{let t=Rt.pop()||[];return e.length&&t.push(...e),t},qt=e=>{e.length&&=0,Rt.push(e)},B=(e,t,n,r)=>{let i=zt.length?zt.pop():new Float32Array(4);return i[0]=e,i[1]=t,i[2]=n,i[3]=r,i},V=e=>{zt.push(e)},Jt=!1,Yt=()=>Jt,Xt=(e,t)=>{Jt=!1;let n=0;for(let r=0;r{for(let t=0;t{let t=null;switch(e.method.toUpperCase()){case`GET`:if(e.data){let t=e.url.split(`?`);t[1]=t.length===1?e.data.toString():`${t[1]}&${e.data.toString()}`,e.url=t.join(`?`)}break;case`PUT`:case`POST`:e.data&&(t=e.data.toString())}let n=new XMLHttpRequest;if(n.open(e.method,e.url,!0),n.responseType=e.format,n.withCredentials=e.withCredentials,e.event){let t=Object.keys(e.event);for(let r=0;r{let t=z();if(e){let n=e.trim().split(` -`);for(let e=0;eon?(on.fillStyle=e,+`0x${on.fillStyle.slice(1)}`):0,cn=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},ln=[],un=[],dn=new Map,fn=null,pn=e=>{fn=e},mn=()=>fn,H=e=>{if(e.$matrix)return e.$matrix.rawData;let t=Mt(e);if(!t||!t.matrix)return null;if(!t.typedMatrix){let e=t.matrix;t.typedMatrix=R(e[0],e[1],e[2],e[3],e[4],e[5])}return t.typedMatrix},hn=e=>{let t=H(e)||Ft,n=e.parent;for(;n;){let e=H(n);e&&(t=F.multiply(e,t)),n=n.parent}return new F(t[0],t[1],t[2],t[3],t[4],t[5])},gn=e=>{if(e.$colorTransform)return e.$colorTransform.rawData;let t=Mt(e);if(!t||!t.colorTransform)return null;if(!t.typedColorTransform){let e=t.colorTransform;t.typedColorTransform=Ut(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7])}return t.typedColorTransform},_n=e=>{if(e.$alpha!==null)return e.$alpha;if(e.$colorTransform){let t=e.$colorTransform.rawData;return t[3]+t[7]/255}let t=gn(e);return t?t[3]+t[7]/255:1},vn=(e,t)=>{if(t=cn(t,0,1),e.$alpha===t)return;e.$alpha=t;let n=e.$colorTransform;if(!n){let t=gn(e);n=t?new N(...t):new N}n.alphaMultiplier=t,n.alphaOffset=0,e.$colorTransform=n,I(e)},yn=class{$updated;$buffer;constructor(){this.$updated=!0,this.$buffer=null}canApplyFilter(){return!0}getBounds(e){return e}},U=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},bn=document.createElement(`canvas`);bn.width=bn.height=1;var xn=bn.getContext(`2d`),Sn=e=>xn?(xn.fillStyle=e,+`0x${xn.fillStyle.slice(1)}`):0,Cn=Math.PI/180,wn=e=>{switch(e){case`full`:return 0;case`inner`:return 1;case`outer`:return 2;default:return 0}},Tn=e=>e.strength>0&&e.distance!==0&&e.blurX>0&&e.blurY>0&&e.quality>0,En=e=>e.blurX>0&&e.blurY>0&&e.quality>0,Dn=[.5,1.05,1.4,1.55,1.75,1.9,2,2.15,2.2,2.3,2.5,3,3,3.5,3.5],On=(e,t)=>{if(!En(e))return t;let n=Dn[e.quality-1],r=Math.round(e.blurX*n),i=Math.round(e.blurY*n);return t[0]-=r,t[2]+=r,t[1]-=i,t[3]+=i,t},kn=(e,t)=>{if(!Tn(e)||e.type===`inner`)return t;On(e,t);let n=e.angle*Cn,r=e.distance,i=Math.abs(Math.cos(n)*r),a=Math.abs(Math.sin(n)*r);return t[0]-=i,t[2]+=i,t[1]-=a,t[3]+=a,t},An=e=>[e.$filterType,e.distance,e.angle,e.highlightColor,e.highlightAlpha,e.shadowColor,e.shadowAlpha,e.blurX,e.blurY,e.strength,e.quality,e.type,e.knockout],jn=e=>new Float32Array([e.$filterType,e.distance,e.angle,e.highlightColor,e.highlightAlpha,e.shadowColor,e.shadowAlpha,e.blurX,e.blurY,e.strength,e.quality,wn(e.type),+e.knockout]),Mn=class e extends yn{$filterType=0;_$blurX;_$blurY;_$quality;_$distance;_$angle;_$highlightColor;_$highlightAlpha;_$shadowColor;_$shadowAlpha;_$strength;_$type;_$knockout;constructor(e=4,t=45,n=16777215,r=1,i=0,a=1,o=4,s=4,c=1,l=1,u=`inner`,d=!1){super(),this._$distance=4,this._$angle=45,this._$highlightColor=16777215,this._$highlightAlpha=1,this._$blurX=4,this._$blurY=4,this._$quality=1,this._$shadowColor=0,this._$shadowAlpha=1,this._$strength=1,this._$type=`inner`,this._$knockout=!1,this.blurX=o,this.blurY=s,this.quality=l,this.distance=e,this.angle=t,this.highlightColor=n,this.highlightAlpha=r,this.shadowColor=i,this.shadowAlpha=a,this.strength=c,this.type=u,this.knockout=d}get angle(){return this._$angle}set angle(e){e=U(e%360,-360,360,45),e!==this._$angle&&(this._$angle=e,this.$updated=!0)}get blurX(){return this._$blurX}set blurX(e){e=U(+e,0,255,0),e!==this._$blurX&&(this._$blurX=e,this.$updated=!0)}get blurY(){return this._$blurY}set blurY(e){e=U(+e,0,255,0),e!==this._$blurY&&(this._$blurY=e,this.$updated=!0)}get distance(){return this._$distance}set distance(e){e=U(+e,-255,255,4),e!==this._$distance&&(this._$distance=e,this.$updated=!0)}get highlightAlpha(){return this._$highlightAlpha}set highlightAlpha(e){e=U(+e,0,1,0),e!==this._$highlightAlpha&&(this._$highlightAlpha=e,this.$updated=!0)}get highlightColor(){return this._$highlightColor}set highlightColor(e){e=U(typeof e==`string`?Sn(e):e,0,16777215,16777215),e!==this._$highlightColor&&(this._$highlightColor=e,this.$updated=!0)}get knockout(){return this._$knockout}set knockout(e){e=!!e,e!==this._$knockout&&(this._$knockout=e,this.$updated=!0)}get quality(){return this._$quality}set quality(e){e=U(e|0,0,15,1),e!==this._$quality&&(this._$quality=e,this.$updated=!0)}get shadowAlpha(){return this._$shadowAlpha}set shadowAlpha(e){e=U(e,0,1,0),e!==this._$shadowAlpha&&(this._$shadowAlpha=e,this.$updated=!0)}get shadowColor(){return this._$shadowColor}set shadowColor(e){e=U(typeof e==`string`?Sn(e):e,0,16777215,0),e!==this._$shadowColor&&(this._$shadowColor=e,this.$updated=!0)}get strength(){return this._$strength}set strength(e){e=U(e|0,0,255,0),e!==this._$strength&&(this._$strength=e,this.$updated=!0)}get type(){return this._$type}set type(e){if(e=`${e}`.toLowerCase(),e!==this._$type){switch(e){case`inner`:case`outer`:case`full`:break;default:return}this._$type=e,this.$updated=!0}}clone(){return new e(this._$distance,this._$angle,this._$highlightColor,this._$highlightAlpha,this._$shadowColor,this._$shadowAlpha,this._$blurX,this._$blurY,this._$strength,this._$quality,this._$type,this._$knockout)}toArray(){return An(this)}toNumberArray(){return jn(this)}canApplyFilter(){return Tn(this)}getBounds(e){return kn(this,e)}},Nn=e=>[e.$filterType,e.blurX,e.blurY,e.quality],Pn=e=>new Float32Array([e.$filterType,e.blurX,e.blurY,e.quality]),Fn=class e extends yn{$filterType=1;_$blurX;_$blurY;_$quality;constructor(e=4,t=4,n=1){super(),this._$blurX=4,this._$blurY=4,this._$quality=1,this.blurX=e,this.blurY=t,this.quality=n}get blurX(){return this._$blurX}set blurX(e){e=U(+e,0,255,0),e!==this._$blurX&&(this._$blurX=e,this.$updated=!0)}get blurY(){return this._$blurY}set blurY(e){e=U(+e,0,255,0),e!==this._$blurY&&(this._$blurY=e,this.$updated=!0)}get quality(){return this._$quality}set quality(e){e=U(e|0,0,15,1),e!==this._$quality&&(this._$quality=e,this.$updated=!0)}clone(){return new e(this._$blurX,this._$blurY,this._$quality)}toArray(){return Nn(this)}toNumberArray(){return Pn(this)}canApplyFilter(){return En(this)}getBounds(e){return On(this,e)}},In=e=>[e.$filterType,e.matrix],Ln=e=>new Float32Array([e.$filterType,...e.matrix]),Rn=class e extends yn{$filterType=2;_$matrix;constructor(e=null){super(),this._$matrix=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],e&&e.length===20&&(this.matrix=e)}get matrix(){return this._$matrix}set matrix(e){if(this._$matrix!==e&&!(!Array.isArray(e)||e.length!==20)){for(let t=0;t<20;t++)if(e[t]!==this._$matrix[t]){this.$updated=!0;break}this.$updated&&(this._$matrix=e)}}clone(){return new e(this._$matrix)}toArray(){return In(this)}toNumberArray(){return Ln(this)}},zn=e=>e.matrix!==null&&e.matrixX*e.matrixY===e.matrix.length,Bn=e=>[e.$filterType,e.matrixX,e.matrixY,e.matrix,e.divisor,e.bias,e.preserveAlpha,e.clamp,e.color,e.alpha],Vn=e=>{let t=e.matrix||[];return new Float32Array([e.$filterType,e.matrixX,e.matrixY,...t,e.divisor,e.bias,+e.preserveAlpha,+e.clamp,e.color,e.alpha])},Hn=class e extends yn{$filterType=3;_$matrixX;_$matrixY;_$matrix;_$divisor;_$bias;_$preserveAlpha;_$clamp;_$color;_$alpha;constructor(e=0,t=0,n=null,r=1,i=0,a=!0,o=!0,s=0,c=0){super(),this._$matrixX=0,this._$matrixY=0,this._$matrix=null,this._$divisor=1,this._$bias=0,this._$preserveAlpha=!0,this._$clamp=!0,this._$color=0,this._$alpha=0,this.matrixX=e,this.matrixY=t,this.matrix=n,this.divisor=r,this.bias=i,this.preserveAlpha=a,this.clamp=o,this.color=s,this.alpha=c}get alpha(){return this._$alpha}set alpha(e){e=U(+e,0,1,0),e!==this._$alpha&&(this._$alpha=e,this.$updated=!0)}get bias(){return this._$bias}set bias(e){e|=0,e!==this._$bias&&(this._$bias=e,this.$updated=!0)}get clamp(){return this._$clamp}set clamp(e){e=!!e,e!==this._$clamp&&(this._$clamp=e,this.$updated=!0)}get color(){return this._$color}set color(e){e=U(typeof e==`string`?Sn(e):e,0,16777215,0),e!==this._$color&&(this._$color=e,this.$updated=!0)}get divisor(){return this._$divisor}set divisor(e){e|=0,e!==this._$divisor&&(this._$divisor=e,this.$updated=!0)}get matrix(){return this._$matrix}set matrix(e){this._$matrix!==e&&(this._$matrix=e,this.$updated=!0)}get matrixX(){return this._$matrixX}set matrixX(e){e=U(e|0,0,15,0)|0,e!==this._$matrixX&&(this._$matrixX=e,this.$updated=!0)}get matrixY(){return this._$matrixY}set matrixY(e){e=U(e|0,0,15,0)|0,e!==this._$matrixY&&(this._$matrixY=e,this.$updated=!0)}get preserveAlpha(){return this._$preserveAlpha}set preserveAlpha(e){e=!!e,e!==this._$preserveAlpha&&(this._$preserveAlpha=e,this.$updated=!0)}clone(){return new e(this._$matrixX,this._$matrixY,this._$matrix?this._$matrix.slice():null,this._$divisor,this._$bias,this._$preserveAlpha,this._$clamp,this._$color,this._$alpha)}toArray(){return Bn(this)}toNumberArray(){return Vn(this)}canApplyFilter(){return zn(this)}},Un=e=>e.bitmapBuffer!==null&&e.componentX>0&&e.componentY>0&&e.scaleX!==0&&e.scaleY!==0,Wn=e=>[e.$filterType,e.bitmapBuffer?Array.from(e.bitmapBuffer):null,e.bitmapWidth,e.bitmapHeight,e.mapPointX,e.mapPointY,e.componentX,e.componentY,e.scaleX,e.scaleY,e.mode,e.color,e.alpha],Gn=e=>{let t=2;switch(e.mode){case`clamp`:t=0;break;case`color`:t=1;break;case`wrap`:t=2;break;case`ignore`:t=3;break;default:t=2}let n=e.bitmapBuffer||new Uint8Array,r=[e.$filterType,n.length];for(let e=0;e[e.$filterType,e.distance,e.angle,e.color,e.alpha,e.blurX,e.blurY,e.strength,e.quality,e.inner,e.knockout,e.hideObject],Jn=e=>new Float32Array([e.$filterType,e.distance,e.angle,e.color,e.alpha,e.blurX,e.blurY,e.strength,e.quality,+e.inner,+e.knockout,+e.hideObject]),Yn=e=>e.alpha>0&&e.strength!==0&&e.blurX>0&&e.blurY>0&&e.quality>0,Xn=(e,t)=>{if(!Yn(e)||e.inner)return t;On(e,t);let n=e.angle*Cn,r=e.distance,i=Math.cos(n)*r,a=Math.sin(n)*r;return t[0]=Math.min(t[0],i),i>0&&(t[2]+=i),t[1]=Math.min(t[1],a),a>0&&(t[3]+=a),t},Zn=class e extends yn{$filterType=5;_$blurX;_$blurY;_$quality;_$distance;_$angle;_$color;_$alpha;_$strength;_$inner;_$knockout;_$hideObject;constructor(e=4,t=45,n=0,r=1,i=4,a=4,o=1,s=1,c=!1,l=!1,u=!1){super(),this._$blurX=4,this._$blurY=4,this._$quality=1,this._$distance=4,this._$angle=45,this._$color=0,this._$alpha=1,this._$strength=1,this._$inner=!1,this._$knockout=!1,this._$hideObject=!1,this.blurX=i,this.blurY=a,this.quality=s,this.distance=e,this.angle=t,this.color=n,this.alpha=r,this.strength=o,this.inner=c,this.knockout=l,this.hideObject=u}get alpha(){return this._$alpha}set alpha(e){e=U(+e,0,1,0),e!==this._$alpha&&(this._$alpha=e,this.$updated=!0)}get angle(){return this._$angle}set angle(e){e=U(e%360,-360,360,45),e!==this._$angle&&(this._$angle=e,this.$updated=!0)}get blurX(){return this._$blurX}set blurX(e){e=U(+e,0,255,0),e!==this._$blurX&&(this._$blurX=e,this.$updated=!0)}get blurY(){return this._$blurY}set blurY(e){e=U(+e,0,255,0),e!==this._$blurY&&(this._$blurY=e,this.$updated=!0)}get color(){return this._$color}set color(e){e=U(typeof e==`string`?Sn(e):e,0,16777215,0),e!==this._$color&&(this._$color=e,this.$updated=!0)}get distance(){return this._$distance}set distance(e){e=U(+e,-255,255,4),e!==this._$distance&&(this._$distance=e,this.$updated=!0)}get hideObject(){return this._$hideObject}set hideObject(e){e=!!e,e!==this._$hideObject&&(this._$hideObject=e,this.$updated=!0)}get inner(){return this._$inner}set inner(e){e=!!e,e!==this._$inner&&(this._$inner=e,this.$updated=!0)}get knockout(){return this._$knockout}set knockout(e){e=!!e,e!==this._$knockout&&(this._$knockout=e,this.$updated=!0)}get quality(){return this._$quality}set quality(e){e=U(e|0,0,15,1),e!==this._$quality&&(this._$quality=e,this.$updated=!0)}get strength(){return this._$strength}set strength(e){e=U(e|0,0,255,0),e!==this._$strength&&(this._$strength=e,this.$updated=!0)}clone(){return new e(this._$distance,this._$angle,this._$color,this._$alpha,this._$blurX,this._$blurY,this._$strength,this._$quality,this._$inner,this._$knockout,this._$hideObject)}toArray(){return qn(this)}toNumberArray(){return Jn(this)}canApplyFilter(){return Yn(this)}getBounds(e){return Xn(this,e)}},Qn=e=>[e.$filterType,e.color,e.alpha,e.blurX,e.blurY,e.strength,e.quality,e.inner,e.knockout],$n=e=>new Float32Array([e.$filterType,e.color,e.alpha,e.blurX,e.blurY,e.strength,e.quality,+e.inner,+e.knockout]),er=e=>e.alpha>0&&e.strength!==0&&e.blurX>0&&e.blurY>0&&e.quality>0,tr=(e,t)=>!er(e)||e.inner?t:On(e,t),nr=class e extends yn{$filterType=6;_$blurX;_$blurY;_$quality;_$color;_$alpha;_$strength;_$inner;_$knockout;constructor(e=0,t=1,n=4,r=4,i=1,a=1,o=!1,s=!1){super(),this._$blurX=4,this._$blurY=4,this._$quality=1,this._$color=0,this._$alpha=1,this._$strength=1,this._$inner=!1,this._$knockout=!1,this.blurX=n,this.blurY=r,this.quality=a,this.color=e,this.alpha=t,this.strength=i,this.inner=o,this.knockout=s}get alpha(){return this._$alpha}set alpha(e){e=U(+e,0,1,0),e!==this._$alpha&&(this._$alpha=e,this.$updated=!0)}get blurX(){return this._$blurX}set blurX(e){e=U(+e,0,255,0),e!==this._$blurX&&(this._$blurX=e,this.$updated=!0)}get blurY(){return this._$blurY}set blurY(e){e=U(+e,0,255,0),e!==this._$blurY&&(this._$blurY=e,this.$updated=!0)}get color(){return this._$color}set color(e){e=U(typeof e==`string`?Sn(e):e,0,16777215,4),e!==this._$color&&(this._$color=e,this.$updated=!0)}get inner(){return this._$inner}set inner(e){e=!!e,e!==this._$inner&&(this._$inner=e,this.$updated=!0)}get knockout(){return this._$knockout}set knockout(e){e=!!e,e!==this._$knockout&&(this._$knockout=e,this.$updated=!0)}get quality(){return this._$quality}set quality(e){e=U(e|0,0,15,1),e!==this._$quality&&(this._$quality=e,this.$updated=!0)}get strength(){return this._$strength}set strength(e){e=U(e|0,0,255,0),e!==this._$strength&&(this._$strength=e,this.$updated=!0)}clone(){return new e(this._$color,this._$alpha,this._$blurX,this._$blurY,this._$strength,this._$quality,this._$inner,this._$knockout)}toArray(){return Qn(this)}toNumberArray(){return $n(this)}canApplyFilter(){return er(this)}getBounds(e){return tr(this,e)}},rr=e=>e.strength>0&&e.distance>0&&e.alphas!==null&&e.ratios!==null&&e.colors!==null&&e.blurX>0&&e.blurY>0&&e.quality>0,ir=e=>[e.$filterType,e.distance,e.angle,e.colors,e.alphas,e.ratios,e.blurX,e.blurY,e.strength,e.quality,e.type,e.knockout],ar=e=>{let t=e.colors?e.colors:[],n=e.alphas?e.alphas:[],r=e.ratios?e.ratios:[];return new Float32Array([e.$filterType,e.distance,e.angle,t.length,...t,n.length,...n,r.length,...r,e.blurX,e.blurY,e.strength,e.quality,wn(e.type),+e.knockout])},or=(e,t)=>{if(!rr(e)||e.type===`inner`)return t;On(e,t);let n=e.angle*Cn,r=e.distance,i=Math.abs(Math.cos(n)*r),a=Math.abs(Math.sin(n)*r);return t[0]-=i,t[2]+=i,t[1]-=a,t[3]+=a,t},sr=class e extends yn{$filterType=7;_$blurX;_$blurY;_$quality;_$distance;_$angle;_$colors;_$alphas;_$ratios;_$strength;_$type;_$knockout;constructor(e=4,t=45,n=null,r=null,i=null,a=4,o=4,s=1,c=1,l=`inner`,u=!1){super(),this._$blurX=4,this._$blurY=4,this._$quality=1,this._$distance=4,this._$angle=45,this._$colors=null,this._$alphas=null,this._$ratios=null,this._$strength=1,this._$type=`inner`,this._$knockout=!1,this.blurX=a,this.blurY=o,this.quality=c,this.distance=e,this.angle=t,this.colors=n,this.alphas=r,this.ratios=i,this.strength=s,this.type=l,this.knockout=u}get alphas(){return this._$alphas}set alphas(e){if(e!==this._$alphas){if(Array.isArray(e))for(let t=0;t[e.$filterType,e.distance,e.angle,e.colors,e.alphas,e.ratios,e.blurX,e.blurY,e.strength,e.quality,e.type,e.knockout],lr=e=>e.strength>0&&e.distance>0&&e.alphas!==null&&e.ratios!==null&&e.colors!==null&&e.blurX>0&&e.blurY>0&&e.quality>0,ur=e=>{let t=e.colors?e.colors:[],n=e.alphas?e.alphas:[],r=e.ratios?e.ratios:[];return new Float32Array([e.$filterType,e.distance,e.angle,t.length,...t,n.length,...n,r.length,...r,e.blurX,e.blurY,e.strength,e.quality,wn(e.type),+e.knockout])},dr=(e,t)=>!lr(e)||e.type===`inner`?t:On(e,t),fr=class e extends yn{$filterType=8;_$blurX;_$blurY;_$quality;_$distance;_$angle;_$colors;_$alphas;_$ratios;_$strength;_$type;_$knockout;constructor(e=4,t=45,n=null,r=null,i=null,a=4,o=4,s=1,c=1,l=`outer`,u=!1){super(),this._$blurX=4,this._$blurY=4,this._$quality=1,this._$distance=4,this._$angle=45,this._$colors=null,this._$alphas=null,this._$ratios=null,this._$strength=1,this._$type=`outer`,this._$knockout=!1,this.blurX=a,this.blurY=o,this.quality=c,this.distance=e,this.angle=t,this.colors=n,this.alphas=r,this.ratios=i,this.strength=s,this.type=l,this.knockout=u}get alphas(){return this._$alphas}set alphas(e){if(e!==this._$alphas){if(Array.isArray(e))for(let t=0;t{let t=z();for(let n=0;n{if(e.$filters)return e.$filters;let t=Mt(e);return t&&t.surfaceFilterList?(t.filters||=pr(t.surfaceFilterList),t.filters):null},hr=(e,t)=>{e.$filters=t,I(e)},gr=e=>{if(e.$blendMode)return e.$blendMode;let t=Mt(e);return t&&t.blendMode?t.blendMode:`normal`},_r=(e,t)=>{e.$blendMode!==t&&(e.$blendMode=t,I(e))},vr=180/Math.PI,yr=e=>{let t=e.$matrix?e.$matrix.rawData:H(e);return t?Math.atan2(t[1],t[0])*vr:0},br=Math.PI/180,xr=(e,t)=>{if(t=cn(t%360,-360,360,0),e.$rotation===t)return;let n=e.$matrix;if(!n){let t=H(e);e.$matrix=n=t?new F(...t):new F}let r=Math.sqrt(n.a*n.a+n.b*n.b),i=Math.sqrt(n.c*n.c+n.d*n.d);if(t===0)n.a=r,n.b=0,n.c=0,n.d=i;else{let e=Math.atan2(n.b,n.a),a=Math.atan2(-n.c,n.d),o=t*br;a=a+o-e,e=o;let s=Math.sin(e),c=Math.cos(e);n.b=r*s,n.a=Math.abs(s)===1?0:r*c;let l=Math.sin(a),u=Math.cos(a);n.c=-i*l,n.d=Math.abs(l)===1?0:i*u}e.$scaleX=null,e.$scaleY=null,e.$rotation=t,I(e)},Sr=e=>{let t=e.$matrix?e.$matrix.rawData:H(e);if(!t)return 1;let n=(Math.abs(t[0])>=1e-12?Math.sign(t[0]):Math.sign(t[1]))||1,r=Math.hypot(t[0],t[1]);return Math.round(r*n*1e4)/1e4},Cr=(e,t)=>{t=cn(t,-Number.MAX_VALUE,Number.MAX_VALUE,1);let n=Math.round(t*1e4)/1e4;if(e.$scaleX===n)return;let r=e.$matrix;if(!r){let t=H(e);e.$matrix=r=t?new F(...t):new F}if(r.b===0||isNaN(r.b))r.a=n;else{let e=Math.atan2(r.b,r.a),t=(Math.hypot(r.a,r.b)*((Math.abs(r.a)>=1e-12?Math.sign(r.a):Math.sign(r.b))||1)>=0?e:e-Math.PI)+(n<0?Math.PI:0),i=Math.abs(n);r.a=i*Math.cos(t),r.b=i*Math.sin(t)}e.$scaleX=n,e.$rotation=null,I(e)},wr=e=>{let t=e.$matrix?e.$matrix.rawData:H(e);if(!t)return 1;let n=Math.hypot(t[0],t[1]),r=(Math.abs(t[0])>=1e-12?Math.sign(t[0]):Math.sign(t[1]))||1;return Math.round((t[0]*t[3]-t[1]*t[2])/(n*r)*1e4)/1e4},Tr=(e,t)=>{t=cn(t,-Number.MAX_VALUE,Number.MAX_VALUE,1);let n=Math.round(t*1e4)/1e4;if(e.$scaleY===n)return;let r=e.$matrix;if(!r){let t=H(e);e.$matrix=r=t?new F(...t):new F}if(r.c===0||isNaN(r.c))r.d=n;else{let e=Math.max(0,Math.abs(n)),t=Math.atan2(r.b,r.a);(r.a<0||Math.abs(r.a)<1e-12&&r.b<0)&&(t-=Math.PI),t<=-Math.PI&&(t+=2*Math.PI),t>Math.PI&&(t-=2*Math.PI);let i=t+(n<0?Math.PI:0);r.c=-e*Math.sin(i),r.d=e*Math.cos(i)}e.$scaleY=n,e.$rotation=null,I(e)},Er=e=>{let t=e.$matrix?e.$matrix.rawData:H(e);return t?t[4]:0},Dr=(e,t)=>{let n=e.$matrix;if(!n){let t=H(e);e.$matrix=n=t?new F(...t):new F}e.$x!==t&&(e.$x=n.tx=t,I(e))},Or=e=>{let t=e.$matrix?e.$matrix.rawData:H(e);return t?t[5]:0},kr=(e,t)=>{let n=e.$matrix;if(!n){let t=H(e);e.$matrix=n=t?new F(...t):new F}e.$y!==t&&(e.$y=n.ty=t,I(e))},W=(e,t,n,r,i)=>{let a=i[0],o=i[1],s=i[2],c=i[3],l=i[4],u=i[5],d=n*a+r*s+l,f=n*a+t*s+l,p=e*a+r*s+l,m=e*a+t*s+l,h=n*o+r*c+u,g=n*o+t*c+u,_=e*o+r*c+u,v=e*o+t*c+u;return B(Math.min(d,f,p,m),Math.min(h,g,_,v),Math.max(d,f,p,m),Math.max(h,g,_,v))},Ar=e=>{let t=e.graphics;return B(t.xMin,t.yMin,t.xMax,t.yMax)},jr=(e,t=null)=>{let n=Ar(e),r=H(e),i=e.cacheAsBitmap,a=null;if(i){let e=i.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);a=r?R(r[0]*t,r[1]*t,r[2]*n,r[3]*n,r[4],r[5]):R(t,0,0,n,0,0),r=a}if(!r){if(t){let e=W(n[0],n[1],n[2],n[3],t);return V(n),e}return n}let o=W(n[0],n[1],n[2],n[3],t?F.multiply(t,r):r);return a&&Ht(a),V(n),o},Mr=e=>B(0,0,e.videoWidth,e.videoHeight),Nr=(e,t=null)=>{let n=Mr(e),r=H(e);if(!r){if(t){let e=W(n[0],n[1],n[2],n[3],t);return V(n),e}return n}let i=W(n[0],n[1],n[2],n[3],t?F.multiply(t,r):r);return V(n),i},Pr=e=>B(e.xMin,e.yMin,e.xMax,e.yMax),Fr=(e,t=null)=>{let n=Pr(e),r=H(e),i=e.cacheAsBitmap,a=null;if(i){let e=i.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);a=r?R(r[0]*t,r[1]*t,r[2]*n,r[3]*n,r[4],r[5]):R(t,0,0,n,0,0),r=a}if(!r){if(t){let e=W(n[0],n[1],n[2],n[3],t);return V(n),e}return n}let o=W(n[0],n[1],n[2],n[3],t?F.multiply(t,r):r);return a&&Ht(a),V(n),o},Ir=(e,t=null)=>{let n=e.children;if(!n.length)return B(0,0,0,0);let r=H(e),i=e.cacheAsBitmap,a=null;if(i){let e=i.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);a=r?R(r[0]*t,r[1]*t,r[2]*n,r[3]*n,r[4],r[5]):R(t,0,0,n,0,0),r=a}let o=r?t?F.multiply(t,r):r:t,s=Number.MAX_VALUE,c=s,l=-s,u=s,d=-s;for(let e=0;e{switch(!0){case e.isContainerEnabled:return Ir(e);case e.isShape:return jr(e);case e.isText:return Fr(e);case e.isVideo:return Nr(e);default:return B(0,0,0,0)}},Rr=e=>{let t=Lr(e),n=Math.abs(t[2]-t[0]);switch(V(t),!0){case n===0:case n===1/0:case n===-1/0:return 0;default:return Math.round(n*100)/100}},zr=(e,t=null)=>{let n=e.children;if(!n.length)return B(0,0,0,0);let r=H(e),i=t;r&&(i=t?F.multiply(t,r):r);let a=Number.MAX_VALUE,o=a,s=-a,c=a,l=-a;for(let e=0;e{switch(!0){case e.isContainerEnabled:return zr(e);case e.isShape:return Ar(e);case e.isText:return Pr(e);case e.isVideo:return Mr(e);default:return B(0,0,0,0)}},Vr=(e,t)=>{if(t=+t,isNaN(t)||0>t)return;let n=Br(e),r=Math.abs(n[2]-n[0]);switch(!0){case r===0:case r===1/0:case r===-1/0:return;default:r=Math.round(r*100)/100}Cr(e,t/r)},Hr=(e,t)=>{let n=e.concatenatedMatrix,r=new P(t.x*n.a+t.y*n.c+n.tx,t.x*n.b+t.y*n.d+n.ty);return F.release(n.rawData),r},Ur=(e,t)=>{let n=e.concatenatedMatrix;n.invert();let r=new P(t.x*n.a+t.y*n.c+n.tx,t.x*n.b+t.y*n.d+n.ty);return F.release(n.rawData),r},Wr=e=>{let t=Lr(e),n=Math.abs(t[3]-t[1]);switch(V(t),!0){case n===0:case n===1/0:case n===-1/0:return 0;default:return Math.round(n*100)/100}},Gr=(e,t)=>{if(t=+t,isNaN(t)||0>t)return;let n=Br(e),r=Math.abs(n[3]-n[1]);switch(!0){case r===0:case r===1/0:case r===-1/0:return;default:r=Math.round(r*100)/100}Tr(e,t/r)},Kr=e=>{let t=e.parent;t&&t.removeChild(e)},qr=(e,t=null)=>{let n=e.concatenatedMatrix,r=Br(e),i=W(r[0],r[1],r[2],r[3],n.rawData);if(V(r),F.release(n.rawData),!t){let e=new jt(i[0],i[1],Math.abs(i[2]-i[0]),Math.abs(i[3]-i[1]));return V(i),e}let a=t.concatenatedMatrix;a.invert();let o=W(i[0],i[1],i[2],i[3],a.rawData);V(i),F.release(a.rawData);let s=new jt(o[0],o[1],Math.abs(o[2]-o[0]),Math.abs(o[3]-o[1]));return V(o),s},Jr=(e,t)=>{let n=Br(e),r=e.concatenatedMatrix,i=W(n[0],n[1],n[2],n[3],r.rawData);V(n),F.release(r.rawData);let a=Br(t),o=t.concatenatedMatrix,s=W(a[0],a[1],a[2],a[3],o.rawData);V(a),F.release(o.rawData);let c=Math.max(i[0],s[0]),l=Math.max(i[1],s[1]),u=Math.min(i[2],s[2]),d=Math.min(i[3],s[3]);return V(i),V(s),u-c>=0&&d-l>=0},Yr=class e{_$bitmapData;_$matrix;_$repeat;_$smooth;constructor(e,t=null,n=!0,r=!1){this._$bitmapData=e,this._$matrix=t,this._$repeat=n,this._$smooth=r}clone(){return new e(this._$bitmapData.clone(),this._$matrix?this._$matrix.clone():null,this._$repeat,this._$smooth)}toArray(){return z(this._$bitmapData,this._$matrix,this._$repeat,this._$smooth)}},Xr=class e{_$type;_$colors;_$alphas;_$ratios;_$matrix;_$spreadMethod;_$interpolationMethod;_$focalPointRatio;_$colorStops;constructor(e,t,n,r,i=null,a=`pad`,o=`rgb`,s=0){this._$type=e,this._$colors=t,this._$alphas=n,this._$ratios=r,this._$matrix=i,this._$spreadMethod=a,this._$interpolationMethod=o,this._$focalPointRatio=s,this._$colorStops=z()}get colorStops(){if(!this._$colorStops.length){let e=Math.min(Math.min(this._$alphas.length,this._$colors.length),this._$ratios.length);for(let t=0;t>>16&255,G:n>>>8&255,B:n&255,A:this._$alphas[t]*255&255}}}return this._$colorStops}toArray(){return z(this._$type,this.colorStops,this._$matrix?this._$matrix.rawData:Ft,this._$spreadMethod,this._$interpolationMethod,this._$focalPointRatio)}clone(){return new e(this._$type,this._$colors.slice(),this._$alphas.slice(),this._$ratios.slice(),this._$matrix?this._$matrix.clone():null,this._$spreadMethod,this._$interpolationMethod,this._$focalPointRatio)}},Zr=(e,t=0,n=0)=>{e.xMin=Math.min(e.xMin,t),e.xMax=Math.max(e.xMax,t),e.yMin=Math.min(e.yMin,n),e.yMax=Math.max(e.yMax,n)},Qr=(e,t=0,n=0,r=0,i=0,a=0,o=`none`)=>{e.xMin=Math.min(e.xMin,Math.min(t,r)),e.xMax=Math.max(e.xMax,Math.max(t,r)),e.yMin=Math.min(e.yMin,Math.min(n,i)),e.yMax=Math.max(e.yMax,Math.max(n,i));let s=r-t,c=i-n,l=Math.sqrt(s*s+c*c);if(!l)return;let u=s/l,d=c/l,f=-d,p=u,m=a/2,h=Math.min(t+f*m,t-f*m,r+f*m,r-f*m),g=Math.max(t+f*m,t-f*m,r+f*m,r-f*m),_=Math.min(n+p*m,n-p*m,i+p*m,i-p*m),v=Math.max(n+p*m,n-p*m,i+p*m,i-p*m);if(e.xMin=Math.min(e.xMin,h),e.xMax=Math.max(e.xMax,g),e.yMin=Math.min(e.yMin,_),e.yMax=Math.max(e.yMax,v),o===`round`||o===`square`){let r=t+m*-u,i=n+m*-d,a=Math.min(r+m*u+m*f,r-m*u+m*f,r+m*u-m*f,r-m*u-m*f),o=Math.max(r+m*u+m*f,r-m*u+m*f,r+m*u-m*f,r-m*u-m*f),s=Math.min(i+m*d+m*p,i+m*d-m*p,i-m*d-m*p,i-m*d+m*p),c=Math.max(i+m*d+m*p,i+m*d-m*p,i-m*d-m*p,i-m*d+m*p);e.xMin=Math.min(e.xMin,a),e.xMax=Math.max(e.xMax,o),e.yMin=Math.min(e.yMin,s),e.yMax=Math.max(e.yMax,c)}},$r=(e,t,n=0,r=0,i=0,a=`none`,...o)=>{for(let s=0;s{e.isConfirmed=!1,t&&r&&r.push(...a),n&&i&&i.push(...a)},ti=(e,t,n,r,i)=>{t=+t||0,n=+n||0,r=+r||0,i=+i||0,r=Math.round(r),i=Math.round(i);let a=r/2,o=i/2,s=t+a,c=n+o,l=t+r,u=n+i,d=4/3*(Math.SQRT2-1),f=d*a,p=d*o;return e.moveTo(s,n).cubicCurveTo(s+f,n,l,c-p,l,c).cubicCurveTo(l,c+p,s+f,u,s,u).cubicCurveTo(s-f,u,t,c+p,t,c).cubicCurveTo(t,c-p,s-f,n,s,n)},ni=(e,t,n,r,i)=>{t=+t||0,n=+n||0,r=+r||0,i=+i||0;let a=Math.round(t+r),o=Math.round(n+i);return e.moveTo(t,n).lineTo(t,o).lineTo(a,o).lineTo(a,n).lineTo(t,n)},ri=(e,t,n,r,i,a,o=NaN)=>{t=+t||0,n=+n||0,r=+r||0,i=+i||0,a=+a||0,o=+o||a,r=Math.round(r),i=Math.round(i),a=Math.round(a),o=Math.round(o);let s=a/2,c=o/2,l=4/3*(Math.SQRT2-1),u=l*s,d=l*c,f=t+s,p=t+r,m=p-s,h=n+c,g=n+i,_=g-c;return e.moveTo(f,n).lineTo(m,n).cubicCurveTo(m+u,n,p,h-d,p,h).lineTo(p,_).cubicCurveTo(p,_+d,m+u,g,m,g).lineTo(f,g).cubicCurveTo(f-u,g,t,_+d,t,_).lineTo(t,h).cubicCurveTo(t,h-d,f-u,n,f,n)},ii=e=>{if(!e)return[];let t=z();for(let n=0;ne.ratio-t.ratio);for(let e=0;e{let t=rn.get(e);t&&(t.uniqueKey!==``&&M.has(t.uniqueKey)&&M.removeById(t.uniqueKey),t.uniqueKey=``,t.$cache=null,I(t))},G=class e{isConfirmed;xMin;yMin;xMax;yMax;$recodes;_$buffer;_$maxAlpha;_$isBeginning;_$positionX;_$positionY;_$hasFillEnabled;_$fillType;_$fillColor;_$fillGradient;_$fillBitmap;_$fills;_$hasLineEnabled;_$lineType;_$lineColor;_$lineGradient;_$joints;_$miterLimit;_$caps;_$lineWidth;_$lines;constructor(){this.isConfirmed=!1,this.xMin=Number.MAX_VALUE,this.yMin=Number.MAX_VALUE,this.xMax=-Number.MAX_VALUE,this.yMax=-Number.MAX_VALUE,this.$recodes=null,this._$buffer=null,this._$positionX=0,this._$positionY=0,this._$maxAlpha=0,this._$isBeginning=!1,this._$fills=null,this._$hasFillEnabled=!1,this._$fillType=0,this._$fillGradient=null,this._$fillBitmap=null,this._$fillColor=0,this._$caps=`none`,this._$lineWidth=1,this._$lines=null,this._$hasLineEnabled=!1,this._$lineType=0,this._$lineGradient=null,this._$joints=`round`,this._$miterLimit=0,this._$lineColor=0}static get MOVE_TO(){return 0}static get CURVE_TO(){return 1}static get LINE_TO(){return 2}static get CUBIC(){return 3}static get ARC(){return 4}static get FILL_STYLE(){return 5}static get STROKE_STYLE(){return 6}static get END_FILL(){return 7}static get END_STROKE(){return 8}static get BEGIN_PATH(){return 9}static get GRADIENT_FILL(){return 10}static get GRADIENT_STROKE(){return 11}static get CLOSE_PATH(){return 12}static get BITMAP_FILL(){return 13}static get BITMAP_STROKE(){return 14}get isDrawable(){if(!this._$isBeginning||!this._$maxAlpha)return!1;let e=Math.abs(this.xMax-this.xMin),t=Math.abs(this.yMax-this.yMin);return e>0&&t>0}beginBitmapFill(t,n=null,r=!0,i=!1){return this._$hasFillEnabled&&this.endFill(),this._$fills||=z(),this._$maxAlpha=1,this._$hasFillEnabled=!0,this._$isBeginning=!0,this._$fills.push(e.BEGIN_PATH),this._$fillType=e.BITMAP_FILL,this._$fillBitmap=new Yr(t,n,r,i),this}beginFill(t=0,n=1){this._$hasFillEnabled&&this.endFill(),this._$fills||=z(),typeof t==`string`&&(t=sn(t)),t=cn(t,0,16777215,0),n=cn(n,0,1,1),this._$maxAlpha=Math.max(this._$maxAlpha,n),this._$hasFillEnabled=!0,this._$isBeginning=!0,this._$fills.push(e.BEGIN_PATH),this._$fillType=e.FILL_STYLE;let r=t>>>16&255,i=t>>>8&255,a=t&255;return this._$fillColor=r<<24|i<<16|a<<8|n*255,this}beginGradientFill(t,n,r,i,a=null,o=`pad`,s=`rgb`,c=0){this._$hasFillEnabled&&this.endFill(),this._$fills||=z();for(let e=0;ethis._$fills.length)return this;switch(this.$recodes||=z(),(this._$fills[2]!==this._$fills[this._$fills.length-2]||this._$fills[3]!==this._$fills[this._$fills.length-1])&&this._$fills.push(e.LINE_TO,this._$fills[2],this._$fills[3]),this.$recodes.push(...this._$fills),qt(this._$fills),this._$fills=null,this._$fillType){case e.FILL_STYLE:this.$recodes.push(this._$fillType,this._$fillColor>>>24&255,this._$fillColor>>>16&255,this._$fillColor>>>8&255,this._$fillColor&255,e.END_FILL);break;case e.GRADIENT_FILL:this._$fillGradient&&this.$recodes.push(this._$fillType,...this._$fillGradient.toArray());break;case e.BITMAP_FILL:this._$fillBitmap&&this.$recodes.push(this._$fillType,...this._$fillBitmap.toArray())}return this._$fillType=0,this._$fillColor=0,this._$fillGradient=null,this._$fillBitmap=null,this._$hasFillEnabled=!1,this}endLine(){if(!this._$hasLineEnabled||!this._$lines)return this;switch(this.$recodes||=z(),this.$recodes.push(...this._$lines),qt(this._$lines),this._$lines=null,this._$lineType){case e.STROKE_STYLE:this.$recodes.push(this._$lineType,this._$lineWidth,this._$caps,this._$joints,this._$miterLimit,this._$lineColor>>>24&255,this._$lineColor>>>16&255,this._$lineColor>>>8&255,this._$lineColor&255,e.END_STROKE);break;case e.GRADIENT_STROKE:this._$lineGradient&&this.$recodes.push(this._$lineType,this._$lineWidth,this._$caps,this._$joints,this._$miterLimit,...this._$lineGradient.toArray());break;case e.BITMAP_STROKE:this._$fillBitmap&&this.$recodes.push(this._$lineType,this._$lineWidth,this._$caps,this._$joints,this._$miterLimit,...this._$fillBitmap.toArray())}return this._$lineType=0,this._$lineWidth=0,this._$lineGradient=null,this._$lineColor=0,this._$caps=`none`,this._$joints=`round`,this._$miterLimit=0,this._$hasLineEnabled=!1,this}lineBitmapStyle(t,n=null,r=!0,i=!1){return this._$hasLineEnabled?(this._$lines||=z(),this._$maxAlpha=1,this._$hasLineEnabled=!0,this._$isBeginning=!0,this._$lines.push(e.BEGIN_PATH),this._$lineType=e.BITMAP_STROKE,this._$fillBitmap=new Yr(t,n,r,i),this):this}lineGradientStyle(t,n,r,i,a=null,o=`pad`,s=`rgb`,c=0){if(!this._$hasLineEnabled)return this;this._$lines||=z();for(let e=0;e>>16&255,c=n>>>8&255,l=n&255;return this._$lineColor=s<<24|c<<16|l<<8|r*255,this._$lineWidth=t,this._$caps=`${i}`,this._$joints=`${a}`,this._$joints===`miter`&&(this._$miterLimit=o),this}lineTo(t,n){return t=+t||0,n=+n||0,this._$positionX===t&&this._$positionY===n?this:($r(this,this._$hasLineEnabled,this._$positionX,this._$positionY,this._$lineWidth,this._$caps,t,n),ei(this,this._$hasFillEnabled,this._$hasLineEnabled,this._$fills,this._$lines,e.LINE_TO,t,n),this._$positionX=t,this._$positionY=n,this)}moveTo(t,n){t=+t||0,n=+n||0,this._$positionX=t,this._$positionY=n,$r(this,this._$hasLineEnabled,this._$positionX,this._$positionY,this._$lineWidth,this._$caps,t,n);let r=!1;return this._$hasFillEnabled&&this._$fills&&this._$fills[this._$fills.length-3]===e.MOVE_TO&&(r=!0,this._$fills[this._$fills.length-2]=t,this._$fills[this._$fills.length-1]=n),this._$hasLineEnabled&&this._$lines&&this._$lines[this._$lines.length-3]===e.MOVE_TO&&(r=!0,this._$lines[this._$lines.length-2]=t,this._$lines[this._$lines.length-1]=n),r||ei(this,this._$hasFillEnabled,this._$hasLineEnabled,this._$fills,this._$lines,e.MOVE_TO,t,n),this}get buffer(){if(this.isConfirmed&&this._$buffer)return this._$buffer;this._$hasLineEnabled&&this.endLine(),this._$hasFillEnabled&&this.endFill();let e=ii(this.$recodes);return this._$buffer=new Float32Array(e),qt(e),this.isConfirmed=!0,this._$buffer}set buffer(e){this._$buffer=e,this.isConfirmed=!0,this._$isBeginning=!0,this._$maxAlpha=1}},oi=(e,t,n)=>{for(let r=0;r{let i=e.graphics,a=i.xMax-i.xMin,o=i.yMax-i.yMin;if(a<=0||o<=0)return!1;let s=H(e),c=e.cacheAsBitmap,l=null;if(c){let e=c.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);l=s?R(s[0]*t,s[1]*t,s[2]*n,s[3]*n,s[4],s[5]):R(t,0,0,n,0,0),s=l}let u=s?F.multiply(n,s):n;l&&Ht(l);let d=u[0]*u[3]-u[1]*u[2];if(d){let e=r.x-u[4],t=r.y-u[5],s=(u[3]*e-u[2]*t)/d,c=(u[0]*t-u[1]*e)/d,l=i.buffer.length>0,f=l?i.xMin:0,p=l?i.yMin:0,m=l?i.xMax:a,h=l?i.yMax:o;if(sm||ch)return u!==n&&F.release(u),!1}t.beginPath(),t.setTransform(u[0],u[1],u[2],u[3],u[4],u[5]);let f=!1;return i.buffer.length?f=oi(t,i.buffer,r):(t.moveTo(0,0),t.lineTo(a,0),t.lineTo(a,o),t.lineTo(0,o),t.lineTo(0,0),f=t.isPointInPath(r.x,r.y)),u!==n&&F.release(u),f},ci=(e,t,n,r)=>{let i=Math.ceil(Math.abs(e.xMax-e.xMin)),a=Math.ceil(Math.abs(e.yMax-e.yMin));if(i<=0||a<=0)return!1;let o=H(e),s=e.cacheAsBitmap,c=null;if(s){let e=s.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);c=o?R(o[0]*t,o[1]*t,o[2]*n,o[3]*n,o[4],o[5]):R(t,0,0,n,0,0),o=c}let l=o?F.multiply(n,o):n;return c&&Ht(c),t.setTransform(l[0],l[1],l[2],l[3],l[4],l[5]),t.beginPath(),t.moveTo(0,0),t.lineTo(i,0),t.lineTo(i,a),t.lineTo(0,a),t.lineTo(0,0),l!==n&&F.release(l),t.isPointInPath(r.x,r.y)},li=(e,t,n,r)=>{let i=e.videoWidth,a=e.videoHeight;if(i<=0||a<=0)return!1;let o=H(e),s=o?F.multiply(n,o):n;return t.beginPath(),t.setTransform(s[0],s[1],s[2],s[3],s[4],s[5]),t.beginPath(),t.moveTo(0,0),t.lineTo(i,0),t.lineTo(i,a),t.lineTo(0,a),t.lineTo(0,0),s!==n&&F.release(s),t.isPointInPath(r.x,r.y)},ui=(e,t,n,r,i=!0)=>{let a=e.children;if(!a.length)return!1;let o=H(e),s=e.cacheAsBitmap,c=null;if(s){let e=s.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);c=o?R(o[0]*t,o[1]*t,o[2]*n,o[3]*n,o[4],o[5]):R(t,0,0,n,0,0),o=c}let l=o?F.multiply(n,o):n;c&&Ht(c);let u=z(),d=z(),f=Gt(),p=0,m=0;for(let e=0;ep&&(m=0,p=0),m&&f.set(t.instanceId,m),d.push(t))}}let h=e.mouseChildren&&i;if(e.isSprite&&e.hitArea&&e.hitArea.isSprite){let n=ui(e.hitArea,t,l,r,h);return n&&h&&e.mouseEnabled&&((e.isTimelineEnabled||e.buttonMode&&e.useHandCursor)&&(r.pointer=`pointer`),r.hit||=e),n}let g=!1,_=e.mask;if(_){let e=!1;switch(!0){case _.isContainerEnabled:e=ui(_,t,l,r,h);break;case _.isShape:e=si(_,t,l,r);break;case _.isText:e=ci(_,t,l,r);break;case _.isVideo:e=li(_,t,l,r)}if(!e)return!1}for(;d.length;){let e=d.pop();if(!e||e.isMask)continue;if(f.has(e.instanceId)){let n=f.get(e.instanceId);if(!n)continue;let i=u[n];if(!i)continue;let a=!1;switch(!0){case i.isContainerEnabled:a=ui(i,t,l,r,h);break;case i.isShape:a=si(i,t,l,r);break;case i.isText:a=ci(i,t,l,r);break;case i.isVideo:a=li(i,t,l,r)}if(!a)continue}let n=!1;switch(!0){case e.isContainerEnabled:n=ui(e,t,l,r,h);break;case e.isShape:n=si(e,t,l,r);break;case e.isText:n=ci(e,t,l,r);break;case e.isVideo:n=li(e,t,l,r)}if(n){if(g=!0,!h)break;if(e.isInteractive&&e.mouseEnabled){if(r.pointer===`auto`)switch(!0){case e.isText:e.type===`input`&&(r.pointer=`text`);break;case e.isSprite:(e.isTimelineEnabled||e.buttonMode&&e.useHandCursor)&&(r.pointer=`pointer`);break;default:r.pointer=`pointer`}r.hit||=e;break}}}return qt(u),qt(d),Kt(f),l!==n&&F.release(l),g},di={x:0,y:0,pointer:``,hit:null},fi=(e,t,n,r=!1)=>{if(r){let r=e.parent,i=r?r.concatenatedMatrix.rawData:Ft;switch(on.setTransform(1,0,0,1,0,0),on.beginPath(),di.x=t,di.y=n,di.hit=null,!0){case e.isContainerEnabled:return ui(e,on,i,di);case e.isShape:return si(e,on,i,di);case e.isText:return ci(e,on,i,di);case e.isVideo:return li(e,on,i,di);default:return!1}}let i=Br(e),a=H(e),o=e.cacheAsBitmap,s=a||Ft,c=null;if(o&&s){let e=o.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);c=R(s[0]*t,s[1]*t,s[2]*n,s[3]*n,s[4],s[5]),s=c}let l=W(i[0],i[1],i[2],i[3],s);V(i),c&&Ht(c);let u=new jt(l[0],l[1],Math.abs(l[2]-l[0]),Math.abs(l[3]-l[1]));V(l);let d=e.parent,f=d?d.globalToLocal(new P(t,n)):new P(t,n);return u.containsPoint(f)},pi=e=>{let t=H(e);return t?new F(t[0],t[1],t[2],t[3],t[4],t[5]):new F},mi=e=>{let t=gn(e);return t?new N(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7]):new N},hi=class extends de{instanceId;$instanceIdString;dictionaryId;isSprite;isInteractive;isContainerEnabled;isTimelineEnabled;isShape;isVideo;isText;placeId;placeObject;characterId;clipDepth;name;startFrame;endFrame;changed;$added;$addedToStage;uniqueKey;$matrix;$colorTransform;$filters;$blendMode;$scaleX;$scaleY;$rotation;$x;$y;$alpha;$cache;_$scale9Grid;_$visible;_$cacheAsBitmap;_$variables;isMask;parent;cacheTransform=null;constructor(){super(),this.instanceId=Lt(),this.dictionaryId=-1,this.uniqueKey=``,this.$instanceIdString=``,this.isSprite=!1,this.isContainerEnabled=!1,this.isTimelineEnabled=!1,this.isShape=!1,this.isVideo=!1,this.isText=!1,this.isInteractive=!1,this.placeId=-1,this.placeObject=null,this.characterId=-1,this.clipDepth=0,this.name=``,this.startFrame=1,this.endFrame=0,this.parent=null,this.isMask=!1,this.changed=!0,this.$added=!1,this.$addedToStage=!1,this.$matrix=null,this.$colorTransform=null,this.$filters=null,this.$blendMode=null,this._$visible=!0,this._$cacheAsBitmap=null,this._$scale9Grid=null,this._$variables=null,this.$x=null,this.$y=null,this.$alpha=null,this.$scaleX=null,this.$scaleY=null,this.$rotation=null,this.$cache=null}get concatenatedMatrix(){return hn(this)}get alpha(){return _n(this)}set alpha(e){vn(this,e)}get blendMode(){return gr(this)}set blendMode(e){_r(this,e)}get filters(){return mr(this)}set filters(e){hr(this,e)}get dropTarget(){return mn()}get height(){return Wr(this)}set height(e){Gr(this,e)}get loaderInfo(){return en.has(this)?en.get(this):null}get colorTransform(){return mi(this)}set colorTransform(e){this.$colorTransform=e}get matrix(){return pi(this)}set matrix(e){this.$matrix=e}get mouseX(){return this.globalToLocal(Pt).x}get mouseY(){return this.globalToLocal(Pt).y}get root(){return tn.has(this)?tn.get(this):null}get rotation(){return this.$rotation===null?yr(this):this.$rotation}set rotation(e){xr(this,e)}get scale9Grid(){return this._$scale9Grid}set scale9Grid(e){this._$scale9Grid!==e&&(this._$scale9Grid=e,I(this))}get scaleX(){let e=this.$scaleX===null?Sr(this):this.$scaleX;if(this._$cacheAsBitmap){let t=this._$cacheAsBitmap.rawData;return e*Math.sqrt(t[0]*t[0]+t[1]*t[1])}return e}set scaleX(e){Cr(this,e)}get scaleY(){let e=this.$scaleY===null?wr(this):this.$scaleY;if(this._$cacheAsBitmap){let t=this._$cacheAsBitmap.rawData;return e*Math.sqrt(t[2]*t[2]+t[3]*t[3])}return e}set scaleY(e){Tr(this,e)}get visible(){return this._$visible}set visible(e){e=!!e,this._$visible!==e&&(this._$visible=e,I(this))}get cacheAsBitmap(){return this._$cacheAsBitmap}set cacheAsBitmap(e){e!==null&&!(e instanceof F)||this._$cacheAsBitmap!==e&&(this._$cacheAsBitmap=e,I(this))}get width(){return Rr(this)}set width(e){Vr(this,e)}get x(){return this.$x===null?Er(this):this.$x}set x(e){Dr(this,e)}get y(){return this.$y===null?Or(this):this.$y}set y(e){kr(this,e)}getBounds(e=null){return qr(this,e)}globalToLocal(e){return Ur(this,e)}hitTestObject(e){return Jr(this,e)}hitTestPoint(e,t,n=!1){return fi(this,e,t,n)}localToGlobal(e){return Hr(this,e)}getLocalVariable(e){if(!this._$variables)return null;if(this._$variables.has(e))return this._$variables.get(e)}setLocalVariable(e,t){this._$variables||=new Map,this._$variables.set(e,t)}hasLocalVariable(e){return this._$variables?this._$variables.has(e):!1}deleteLocalVariable(e){this._$variables&&this._$variables.has(e)&&(this._$variables.delete(e),this._$variables.size||(this._$variables=null))}getGlobalVariable(e){return dn.has(e)?dn.get(e):null}setGlobalVariable(e,t){dn.set(e,t)}hasGlobalVariable(e){return dn.has(e)}deleteGlobalVariable(e){dn.has(e)&&dn.delete(e)}clearGlobalVariable(){return dn.clear()}remove(){Kr(this)}$syncLoaderInfo(e){en.set(this,e)}},gi=e=>{let t=e.children;for(let n=0;n{e.$addedToStage||!nn.has(e.instanceId)||(e.uniqueKey&&M.cancelRemoveTimer(e.uniqueKey),M.cancelRemoveTimer(`${e.instanceId}`),e.$addedToStage=!0,e.willTrigger(w.ADDED_TO_STAGE)&&e.dispatchEvent(new w(w.ADDED_TO_STAGE)))},vi=e=>{let t=e.children;for(let e=0;e{e.$added||(e.$added=!0,e.willTrigger(w.ADDED)&&e.dispatchEvent(new w(w.ADDED,!0)))},bi=(e,t,n=-1)=>{let r=t.parent;r&&r.removeChild(t);let i=e.children;return 0>n?i.push(t):i.splice(n,0,t),e.$container=null,t.parent=e,nn.has(e.instanceId)&&(tn.set(t,e.root),nn.add(t.instanceId),t.isContainerEnabled&&gi(t)),yi(t),nn.has(e.instanceId)&&(_i(t),t.isContainerEnabled&&vi(t)),I(t),t},xi=e=>{let t=e.children;for(let e=0;e{e.$added&&(e.$added=!1,e.willTrigger(w.REMOVED)&&e.dispatchEvent(new w(w.REMOVED,!0)))},Ci=e=>{if(!e.$addedToStage||!nn.has(e.instanceId))return;e.$addedToStage=!1,e.willTrigger(w.REMOVED_FROM_STAGE)&&e.dispatchEvent(new w(w.REMOVED_FROM_STAGE)),e.uniqueKey&&M.has(e.uniqueKey)&&M.removeTimer(e.uniqueKey);let t=`${e.instanceId}`;M.has(t)?M.removeTimer(t):M.$removeIds.push(e.instanceId)},wi=e=>{let t=e.children;for(let e=0;e{let n=t.parent;if(n&&n.instanceId!==e.instanceId)return;let r=e.children,i=r.indexOf(t);i>-1&&r.splice(i,1),e.$container=null,t.hasEventListener(w.ENTER_FRAME)&&t.removeAllEventListener(w.ENTER_FRAME),t.hasEventListener(D.KEY_DOWN)&&t.removeAllEventListener(D.KEY_DOWN),t.hasEventListener(D.KEY_UP)&&t.removeAllEventListener(D.KEY_UP),Si(t),nn.has(e.instanceId)&&(Ci(t),t.isContainerEnabled&&wi(t)),nn.has(e.instanceId)&&(tn.delete(t),nn.delete(t.instanceId),t.isVideo&&t.pause(),t.isContainerEnabled&&xi(t)),t.parent=null,I(e)},Ei=(e,t)=>{let n=e.children;return t in n?n[t]:null},Di=(e,t)=>{let n=Ei(e,t);n&&Ti(e,n)},Oi=(e,t)=>{if(e.instanceId===t.instanceId)return!0;let n=e.children;for(let e=0;e{if(!t)return null;let n=e.children;for(let e=0;e{let n=e.children.slice();if(n.length)for(let r=0;r{let r=e.getChildIndex(t);if(r===-1||r===n)return;let i=e.children;i.splice(r,1),i.splice(n,0,t),I(e)},Mi=(e,t,n)=>{let r=e.getChildIndex(t),i=e.getChildIndex(n);if(r===-1||i===-1)return;let a=e.children;a[r]=n,a[i]=t,I(e)},Ni=(e,t,n)=>{let r=e.children,i=r[t],a=r[n];!i||!a||(r[t]=a,r[n]=i,I(e))},Pi=class extends hi{mouseEnabled;isInteractive;constructor(){super(),this.isInteractive=!0,this.mouseEnabled=!0}},Fi=class extends Pi{_$children;_$mask;mouseChildren;$container;$layerScaleX;$layerScaleY;isContainerEnabled;constructor(){super(),this.isContainerEnabled=!0,this.mouseChildren=!0,this._$mask=null,this._$children=z(),this.$container=null,this.$layerScaleX=-1,this.$layerScaleY=-1}get children(){return this._$children}get numChildren(){return this.children.length}get mask(){return this._$mask}set mask(e){e!==this._$mask&&(this._$mask&&=(this._$mask.isMask=!1,null),e&&(e.isMask=!0,this._$mask=e),I(this))}addChild(e){return bi(this,e)}addChildAt(e,t){return bi(this,e,t)}contains(e){return Oi(this,e)}getChildAt(e){return Ei(this,e)}getChildByName(e){return ki(this,e)}getChildIndex(e){return this.children.indexOf(e)}removeChild(e){Ti(this,e)}removeChildAt(e){Di(this,e)}removeChildren(...e){Ai(this,e)}setChildIndex(e,t){ji(this,e,t)}swapChildren(e,t){Mi(this,e,t)}swapChildrenAt(e,t){Ni(this,e,t)}},Ii=class extends de{name;frame;constructor(e,t){super(),this.name=`${e}`,this.frame=t|0}},Li=class extends de{id;content;data;url;format;constructor(){super(),this.id=Lt(),this.url=``,this.content=null,this.data=null,this.format=`json`}},Ri=(e,t=!1,n=null)=>{let r=e.parent?e.parent.globalToLocal(Pt):e.globalToLocal(Pt);e.$lockCenter=t,e.$offsetX=e.x-r.x,e.$offsetY=e.y-r.y,e.$boundedRect=n,pn(e)},zi=e=>{e.$lockCenter=!1,e.$offsetX=0,e.$offsetY=0,e.$boundedRect=null,pn(null)},Bi=class extends Fi{buttonMode;useHandCursor;isSprite;hitArea;_$soundTransform;$offsetX=0;$offsetY=0;$lockCenter=!1;$boundedRect=null;constructor(){super(),this.isSprite=!0,this.buttonMode=!1,this.useHandCursor=!0,this.hitArea=null,this.$offsetX=0,this.$offsetY=0,this.$lockCenter=!1,this.$boundedRect=null,this._$soundTransform=null}static get namespace(){return`next2d.display.Sprite`}get namespace(){return`next2d.display.Sprite`}get soundTransform(){return this._$soundTransform}set soundTransform(e){this._$soundTransform=e}startDrag(e=!1,t=null){Ri(this,e,t)}stopDrag(){zi(this)}},Vi=e=>{e.isBitmap=!1,e.$bitmapBuffer=null,e.graphics.clear()},Hi=(e,t,n,r)=>{Vi(e),e.isBitmap=!0,e.$bitmapBuffer=r,e.graphics.xMin=0,e.graphics.yMin=0,e.graphics.xMax=t,e.graphics.yMax=n},Ui=(e,t)=>{let n=new Image;n.crossOrigin=`anonymous`,n.addEventListener(`load`,()=>{let t=n.width,r=n.height,i=M.getCanvas();i.width=t,i.height=r;let a=i.getContext(`2d`,{willReadFrequently:!0});a.drawImage(n,0,0,t,r),Hi(e,t,r,new Uint8Array(a.getImageData(0,0,t,r).data)),M.destroy(a),e.hasEventListener(w.COMPLETE)&&e.dispatchEvent(new w(w.COMPLETE))}),n.src=t},Wi=(e,t)=>{let n=e.graphics,r=Math.ceil(Math.abs(t.bounds.xMax-t.bounds.xMin)),i=Math.ceil(Math.abs(t.bounds.yMax-t.bounds.yMin));switch(!0){case t.bitmapId>0:{let a=e.loaderInfo.data?.characters[t.bitmapId];if(!a)break;e.isBitmap=!0,a.imageBuffer||(a.imageBuffer=new Uint8Array(a.buffer),a.buffer=null);let o=Math.ceil(Math.abs(a.bounds.xMax-a.bounds.xMin)),s=Math.ceil(Math.abs(a.bounds.yMax-a.bounds.yMin));if(t.grid){if(t.recodes){let e=t.recodes.slice(0);e.splice(-6,6);let r=new Fe(o,s);r.buffer=a.imageBuffer,e.push(G.BITMAP_FILL,r,null,!0,!1,9);let i=ii(e);n.buffer=new Float32Array(i),qt(e),qt(i)}}else if(r===o&&i===s)e.setBitmapBuffer(Math.ceil(Math.abs(a.bounds.xMax-a.bounds.xMin)),Math.ceil(Math.abs(a.bounds.yMax-a.bounds.yMin)),a.imageBuffer);else{let e=new Fe(o,s);if(e.buffer=a.imageBuffer,t.recodes)if(t.recodes[t.recodes.length-10]===G.BITMAP_STROKE){let r=t.recodes.slice(0);r.splice(-5,5),r.push(e,null,!0,!1);let i=ii(r);n.buffer=new Float32Array(i),qt(r),qt(i)}else n.beginBitmapFill(e).drawRect(0,0,r,i)}}break;case t.inBitmap:{e.isBitmap=!0;let a=t.recodes,o=a[a.length-4];if(r===o.width&&i===o.height)e.setBitmapBuffer(o.width,o.height,o.buffer);else{let e=new Fe(o.width,o.height);e.buffer=o.buffer,n.beginBitmapFill(e).drawRect(0,0,r,i)}}break;case`buffer`in t:t.imageBuffer||(t.imageBuffer=new Uint8Array(t.buffer),t.buffer=null),e.setBitmapBuffer(Math.ceil(Math.abs(n.xMax-n.xMin)),Math.ceil(Math.abs(n.yMax-n.yMin)),t.imageBuffer);break;default:t.recodes&&=(t.recodeBuffer=new Float32Array(ii(t.recodes)),qt(t.recodes),null),t.recodeBuffer&&(n.buffer=t.recodeBuffer)}n.xMin=t.bounds.xMin,n.xMax=t.bounds.xMax,n.yMin=t.bounds.yMin,n.yMax=t.bounds.yMax,t.grid&&(e.scale9Grid=new jt(t.grid.x,t.grid.y,t.grid.w,t.grid.h))},Gi=(e,t)=>new Promise(n=>{let r=()=>{e.removeEventListener(w.COMPLETE,r),n()};e.addEventListener(w.COMPLETE,r),e.src=t}),Ki=class extends hi{_$graphics;_$src;isShape;cacheKey;cacheParams;isBitmap;$bitmapBuffer;constructor(){super(),this.isShape=!0,this.cacheKey=0,this.cacheParams=z(0,0,0),this._$graphics=null,this._$src=``,this.$bitmapBuffer=null,this.isBitmap=!1}static get namespace(){return`next2d.display.Shape`}get namespace(){return`next2d.display.Shape`}get graphics(){return this._$graphics||(this._$graphics=new G,rn.set(this._$graphics,this)),this._$graphics}get src(){return this._$src}set src(e){this._$src!==e&&(this._$src=e,Ui(this,e))}load(e){return Gi(this,e)}get bitmapData(){let e=new Fe(this.width,this.height);return this.$bitmapBuffer&&(e.buffer=this.$bitmapBuffer),e}clearBitmapBuffer(){Vi(this)}setBitmapBuffer(e,t,n){Hi(this,e,t,n)}$sync(e,t=null){t&&super.$syncLoaderInfo(t),Wi(this,e)}},qi=null,Ji=e=>{qi=e},Yi=()=>qi,K=document.createElement(`textarea`);K.tabIndex=-1;var Xi=``;Xi+=`position: fixed;`,Xi+=`top: 0;`,Xi+=`left: 0;`,Xi+=`font-size: 16px;`,Xi+=`border: 0;`,Xi+=`resize: none;`,Xi+=`opacity: 0;`,Xi+=`z-index: -1;`,Xi+=`pointer-events: none;`,K.setAttribute(`style`,Xi);var Zi=document.createElement(`canvas`);Zi.width=Zi.height=1;var Qi=Zi.getContext(`2d`),$i=0,ea=()=>$i,ta=e=>{$i=e},na=``,ra=e=>{na!==e&&(na=e,Qi.font=e)},ia=new Map,aa=e=>{if(!Qi)return 0;let t=ia.get(e);if(t!==void 0)return t;Qi.fillStyle=e;let n=+`0x${Qi.fillStyle.slice(1)}`;return 256>ia.size&&ia.set(e,n),n},oa=e=>isNaN(+e)?aa(`${e}`):+e,sa=(e,t=1)=>({R:(e&16711680)>>16,G:(e&65280)>>8,B:e&255,A:t*255}),ca=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},la,ua=()=>la,da=e=>{la=e},fa={x:0,y:0},pa=class e{align;bold;color;font;italic;leading;leftMargin;letterSpacing;rightMargin;size;underline;constructor(e=null,t=null,n=null,r=null,i=null,a=null,o=null,s=null,c=null,l=null,u=null){this.font=e,this.size=t,this.color=n,this.bold=r,this.italic=i,this.underline=a,this.align=o,this.leftMargin=s,this.rightMargin=c,this.leading=l,this.letterSpacing=u}clone(){return new e(this.font,this.size,this.color,this.bold,this.italic,this.underline,this.align,this.leftMargin,this.rightMargin,this.leading,this.letterSpacing)}toObject(){return{font:this.font,size:this.size,color:oa(this.color),bold:this.bold,italic:this.italic,underline:this.underline,align:this.align,leftMargin:this.leftMargin,rightMargin:this.rightMargin,leading:this.leading,letterSpacing:this.letterSpacing}}},ma=e=>{e.align=`left`,e.bold=!1,e.color=0,e.font=`Times New Roman`,e.italic=!1,e.leading=0,e.leftMargin=0,e.letterSpacing=0,e.rightMargin=0,e.size=12,e.underline=!1},ha=e=>{let t=``;if(e.font&&(t+=`font-family: ${e.font};`),e.size&&(t+=`font-size: ${e.size}px;`),e.color){let n=sa(oa(e.color)),r=n.R.toString(16).padStart(2,`0`),i=n.G.toString(16).padStart(2,`0`),a=n.B.toString(16).padStart(2,`0`);t+=`color: #${r}${i}${a};`}return e.bold&&(t+=`font-weight: bold;`),e.italic&&(t+=`font-style: italic;`),e.underline&&(t+=`text-decoration: underline;`),e.align&&(t+=`text-align: ${e.align};`),e.leftMargin&&(t+=`margin-left: ${e.leftMargin}px;`),e.rightMargin&&(t+=`margin-right: ${e.rightMargin}px;`),e.leading&&(t+=`margin-bottom: ${e.leading}px;`),e.letterSpacing&&(t+=`letter-spacing: ${e.letterSpacing}px;`),t},ga=class{_$textWidth;_$textHeight;heightTable;ascentTable;widthTable;textTable;lineTable;constructor(){this._$textWidth=-1,this._$textHeight=-1,this.widthTable=[],this.heightTable=[],this.ascentTable=[],this.textTable=[],this.lineTable=[]}get textWidth(){if(this._$textWidth!==-1)return this._$textWidth;this._$textWidth=0;for(let e=0;e{let t=``;return e.italic&&(t=`italic `),e.bold&&(t+=`bold `),`${t}${e.size}px '${e.font}',sans-serif`},va=(e,t)=>{ta(0);let n=e.lineTable.length;ra(_a(t));let r=Qi.measureText(``),i={mode:`break`,text:``,x:0,y:0,w:0,h:r.fontBoundingBoxAscent+r.fontBoundingBoxDescent,line:n,textFormat:t.toObject()};e.heightTable[n]=0,e.ascentTable[n]=0,e.widthTable[n]=0,e.lineTable.push(i),e.textTable.push(i)},ya=e=>{let t=e.heightTable.length-1;for(let n=1;n0)continue;let t=e.lineTable[n];t&&(e.heightTable[n]=t.h=e.heightTable[n-1])}},ba=e=>{let t=0;return e.leftMargin&&(t+=e.leftMargin),e.rightMargin&&(t+=e.rightMargin),t},xa=(e,t,n,r)=>{let i=n.lineTable.length-1,a=r.width-ba(t)-4,o=null,s=``;for(let c=0;ca){ta(p),i++,d.line=i;let e={mode:`wrap`,text:``,x:0,y:0,w:0,h:0,line:i,textFormat:l.toObject()},t=1,r=!0,a=/[0-9a-zA-Z?!;:.,?!。、;:〜]/g;for(;;){let e=n.textTable.length-t;if(0>=e){r=!1,t=0;break}let i=n.textTable[e];if(!i){r=!1,t=0;break}if(i.mode!==`text`){r=!1;break}if(i.text===` `){t--;break}if(!i.text.match(a)){t--;break}t++}if(n.widthTable[i]=0,n.heightTable[i]=0,n.ascentTable[i]=0,t>0&&r){let r=n.textTable.length-t;n.textTable.splice(r,0,e),n.lineTable.push(e);let a=i-1;n.widthTable[a]=0,n.heightTable[a]=0,n.ascentTable[a]=0;for(let e=0;e{let t=e.trim().split(`;`),n=[];for(let e=0;e{q=e,J=0,Y=e.length,Na(Ca,t,n,r),q=``},Na=(e,t,n,r)=>{for(;JJ&&xa(q.substring(J,i),t,n,r),J=i+1,J>=Y)break;if(q.charCodeAt(J)===47){J++;let t=q.indexOf(`>`,J);if(t===-1){J=Y;break}if(e!==Ca&&Ba(J,t)===e){J=t+1;return}J=t+1;continue}let a=J;for(;J{let e=q.indexOf(`>`,J);J=e===-1?Y:e+1},Fa=()=>{J{for(;;){for(;J=Y)break;let n=q.charCodeAt(J);if(n===62||n===47)break;let r=J;for(;J{switch(e){case 4:t===102||t===70?r.font=n:t===115||t===83?(r.size=+n,i.subFontSize&&(r.size-=i.subFontSize,1>r.size&&(r.size=1))):(t===98||t===66)&&(r.bold=!0);break;case 5:t===99||t===67?r.color=oa(n):t===115||t===83?za(Sa(n),r,i):(t===97||t===65)&&(r.align=n);break;case 6:(t===105||t===73)&&(r.italic=!0);break;case 7:(t===108||t===76)&&(r.leading=parseInt(n));break;case 9:(t===117||t===85)&&(r.underline=!0);break;case 10:(t===108||t===76)&&(r.leftMargin=parseInt(n));break;case 11:(t===114||t===82)&&(r.rightMargin=parseInt(n));break;case 14:(t===108||t===76)&&(r.letterSpacing=parseInt(n))}},Ra=(e,t,n)=>{e===4&&(t===98||t===66)?n.bold=!0:e===6&&(t===105||t===73)?n.italic=!0:e===9&&(t===117||t===85)&&(n.underline=!0)},za=(e,t,n)=>{for(let r=0;rt.size&&(t.size=1));break;case`color`:t.color=oa(i.value);break;case`align`:t.align=i.value;break;case`letterSpacing`:t.letterSpacing=parseInt(i.value);break;case`leading`:t.leading=parseInt(i.value);break;case`leftMargin`:t.leftMargin=parseInt(i.value);break;case`rightMargin`:t.rightMargin=parseInt(i.value);break;case`underline`:t.underline=!0;break;case`bold`:t.bold=!0;break;case`italic`:t.italic=!0}}},Ba=(e,t)=>{for(;ee;){let e=q.charCodeAt(t-1);if(e!==32&&e!==9)break;t--}let n=t-e;if(n===1){let t=q.charCodeAt(e);return t>=97&&(t-=32),t===66?wa:t===73?Ta:t===85?Ea:t===80?Da:Ca}if(n===2){let t=q.charCodeAt(e),n=q.charCodeAt(e+1);return t>=97&&(t-=32),n>=97&&(n-=32),t===66&&n===82?Oa:Ca}if(n===3){let t=q.charCodeAt(e);if(t>=97&&(t-=32),t===68){let t=q.charCodeAt(e+1),n=q.charCodeAt(e+2);if(t>=97&&(t-=32),n>=97&&(n-=32),t===73&&n===86)return ka}return Ca}if(n===4){let t=q.charCodeAt(e);if(t>=97&&(t-=32),t===70){let t=q.charCodeAt(e+1),n=q.charCodeAt(e+2),r=q.charCodeAt(e+3);if(t>=97&&(t-=32),n>=97&&(n-=32),r>=97&&(r-=32),t===79&&n===78&&r===84)return Aa}if(t===83){let t=q.charCodeAt(e+1),n=q.charCodeAt(e+2),r=q.charCodeAt(e+3);if(t>=97&&(t-=32),n>=97&&(n-=32),r>=97&&(r-=32),t===80&&n===65&&r===78)return ja}return Ca}return Ca},Va=(e,t,n)=>{let r=new ga;if(!e)return r;let i=e.trim().replace(/\r?\n/g,``).replace(/\t/g,``),a=t.clone();return n.subFontSize&&n.subFontSize>0&&a.size&&(a.size-=n.subFontSize,1>a.size&&(a.size=1)),va(r,a),Ma(i,a,r,n),ya(r),r},X=(e,t=0)=>(e.$textData||=Va(e.htmlText,e.defaultTextFormat,{width:e.width,multiline:e.multiline,wordWrap:e.wordWrap,subFontSize:t,textFormats:e.$textFormats}),e.$textData),Z=e=>{e.changed=!0;let t=e.parent;t&&!t.changed&&Z(t)},Ha=e=>{e.$textData=null,Z(e),e.uniqueKey!==``&&M.has(e.uniqueKey)&&M.removeById(e.uniqueKey)},Ua=e=>{if(Z(e),e.autoSize===`none`){e.xMin=e.bounds.xMin,e.yMin=e.bounds.yMin,e.xMax=e.bounds.xMax,e.yMax=e.bounds.yMax;return}let t=e.defaultTextFormat,n=e.textWidth+4+ba(t);if(e.wordWrap)e.xMin=e.bounds.xMin,e.xMax=e.bounds.xMax;else switch(e.autoSize){case`left`:e.xMax=n+e.xMin;break;case`center`:e.xMax=n+e.xMin;break;case`right`:e.xMax=e.bounds.xMax-(e.bounds.xMax-e.bounds.xMin-(n-e.bounds.xMin))}e.yMax=e.textHeight+e.bounds.yMin+4},Wa=e=>{let t=0,n=X(e);for(let e=0;er&&e.textWidth+4>e.width;)Ha(e),X(e,r++);if(e.height&&e.textHeight)for(;t>r&&e.textHeight+4>e.height;)Ha(e),X(e,r++);Z(e)},Ga=e=>{Ha(e),X(e),e.autoSize===`none`&&e.autoFontSize&&Wa(e),Ua(e)},Ka=(e,t)=>{let n=X(e);if(2>n.textTable.length)return;let r=2,i=0;for(let e=1;e=t){i=e;break}a.mode===`break`&&(o=!0,r=2),o&&i++}let a=n.textTable[i];if(!a)return;e.$scrollX=e.$scrollY=0;let o=a.line,s=0;for(let e=0;e<=o;++e)s+=n.heightTable[e];let c=Math.abs(e.yMax-e.yMin),l=0;for(let e=o;e>-1;--e){let t=n.heightTable[e];if(cc){let t=(e.textHeight-c)/c;e.$scrollY=Math.max(0,Math.min((s-l)/t,c))}let u=Math.abs(e.xMax-e.xMin),d=0;for(let e=i;e>0;--e){let t=n.textTable[e];if(t.mode===`text`){if(uu){let t=(e.textWidth-u)/u;e.$scrollX=Math.max(0,Math.min((r-d)/t,u+.5))}Z(e)},qa=()=>{let e=ua();e!==void 0&&clearTimeout(e),da(void 0)},Ja=window.devicePixelRatio,Ya=e=>{let t=e.$textData;if(!t)return{x:0,y:0,lineHeight:0,fontSize:0};let n=t.textTable,r=0,i=e.focusIndex,a=n[i];if(a)r=a.mode===`break`||a.mode===`wrap`?a.line-1:a.line;else{let e=n[n.length-1];r=e?e.line:0}r<0&&(r=0);let o=0;for(let e=1;e=i);++e){let t=n[e];!t||t.mode!==`text`||t.line!==r||(o+=t.w)}let s=0;for(let e=0;e=i))break}return{x:o,y:s,lineHeight:c,fontSize:l}},Xa=e=>{let t=Ya(e),n=t.x;if(e.scrollX>0){let t=e.width;n-=e.scrollX*(e.textWidth-t)/t}let r=t.y;if(e.scrollY>0){let t=e.height;r-=e.scrollY*(e.textHeight-t)/t}let i=e.localToGlobal(new P(n,r)),a=Q.rendererScale/Ja,o=(Q.rendererWidth-Q.stageWidth*Q.rendererScale)/2,s=(Q.rendererHeight-Q.stageHeight*Q.rendererScale)/2;K.style.left=`${fa.x+o/Ja+i.x*a}px`,K.style.top=`${fa.y+s/Ja+i.y*a}px`;let c=t.lineHeight;if(c>0){let e=t.fontSize||c;K.style.height=`${c*a}px`,K.style.fontSize=`${e*a}px`,K.style.lineHeight=`${c*a}px`}},Za=e=>{e.focusVisible=!e.focusVisible,Z(e),da(setTimeout(()=>Za(e),500)),Xa(e)},Qa=(e,t)=>{e.willTrigger(t)&&e.dispatchEvent(new fe(t)),K.value=``,e.focus?(Ji(e),setTimeout(()=>{K.focus()},300),ua()===void 0&&(e.focusIndex===-1&&(e.focusIndex=1,e.selectIndex=-1),Za(e))):(Yi()===e&&Ji(null),e.focusIndex=-1,e.selectIndex=-1,e.focusVisible=!1,qa(),K.blur()),Z(e)},$a=(e,t,n,r)=>e/r*n+t,eo=(e,t,n,r)=>(e/=r)*e*n+t,to=(e,t,n,r)=>-(e/=r)*(e-2)*n+t,no=(e,t,n,r)=>(e/=r/2)<1?e*e*n/2+t:-(--e*(e-2)-1)*n/2+t,ro=(e,t,n,r)=>(e/=r)*e*e*n+t,io=(e,t,n,r)=>(e/=r,(--e*e*e+1)*n+t),ao=(e,t,n,r)=>(e/=r/2)<1?e*e*e*n/2+t:((e-=2)*e*e+2)*n/2+t,oo=(e,t,n,r)=>(e/=r)*e*e*e*n+t,so=(e,t,n,r)=>(e/=r,(--e*e*e*e-1)*-n+t),co=(e,t,n,r)=>(e/=r/2)<1?e*e*e*e*n/2+t:((e-=2)*e*e*e-2)*-n/2+t,lo=(e,t,n,r)=>(e/=r)*e*e*e*e*n+t,uo=(e,t,n,r)=>(e/=r,(--e*e*e*e*e+1)*n+t),fo=(e,t,n,r)=>(e/=r/2)<1?e*e*e*e*e*n/2+t:((e-=2)*e*e*e*e+2)*n/2+t,po=(e,t,n,r)=>-n*Math.cos(e/r*(Math.PI/2))+n+t,mo=(e,t,n,r)=>n*Math.sin(e/r*(Math.PI/2))+t,ho=(e,t,n,r)=>-n/2*(Math.cos(Math.PI*e/r)-1)+t,go=(e,t,n,r)=>n*2**(10*(e/r-1))+t,_o=(e,t,n,r)=>n*(-(2**(-10*e/r))+1)+t,vo=(e,t,n,r)=>(e/=r/2)<1?n/2*2**(10*(e-1))+t:n/2*(-(2**(-10*(e-1)))+2)+t,yo=(e,t,n,r)=>(1-Math.sqrt(1-(e/=r)*e))*n+t,bo=(e,t,n,r)=>(e/=r,Math.sqrt(1- --e*e)*n+t),xo=(e,t,n,r)=>(e/=r*2)<1?(Math.sqrt(1-e*e)-1)/-2*n+t:(Math.sqrt(1-(e-=2)*e)+1)/2*n+t,So=(e,t,n,r)=>(2.70158*(e/=r)*e*e-1.70158*e*e)*n+t,Co=(e,t,n,r)=>(1+2.70158*((e/=r)-1)**3+1.70158*(e-1)**2)*n+t,wo=(e,t,n,r)=>{let i=1.70158;return(e/=r/2)<1?e*e*(((i*=1.525)+1)*e-i)*n/2+t:((e-=2)*e*(((i*=1.525)+1)*e+i)+2)*n/2+t},To=(e,t,n,r)=>(e/=r)===0?t:e===1?n+t:-(2**((e*=10)-10))*Math.sin((e-10.75)*(2*Math.PI/3))*n+t,Eo=(e,t,n,r)=>(e/=r)===0?t:e===1?n+t:(2**(-10*e)*Math.sin((e*10-.75)*(2*Math.PI/3))+1)*n+t,Do=(e,t,n,r)=>(e/=r)===0?t:e===1?n+t:e<.5?-(2**(20*e-10)*Math.sin((20*e-11.125)*(2*Math.PI/4.5)))/2*n+t:(2**(-20*e+10)*Math.sin((20*e-11.125)*(2*Math.PI/4.5))/2+1)*n+t,Oo=(e,t,n,r)=>(e/=r)<1/2.75?7.5625*e*e*n+t:e<2/2.75?(7.5625*(e-=1.5/2.75)*e+.75)*n+t:e<2.5/2.75?(7.5625*(e-=2.25/2.75)*e+.9375)*n+t:(7.5625*(e-=2.625/2.75)*e+.984375)*n+t,ko=(e,t,n,r)=>n-jo.outBounce(r-e,0,n,r)+t,Ao=(e,t,n,r)=>e{cancelAnimationFrame(e.$timerId),e.hasEventListener(ge.STOP)&&e.dispatchEvent(new ge(ge.STOP)),e.entries=null,e.stopFlag=!0},No=e=>{let t=[];for(let[n,r]of Object.entries(e))t.push({name:n,value:typeof r==`number`?r:No(r)});return t},Po=(e,t,n,r,i)=>{for(let a=0;ae.currentTime?e.ease(e.currentTime,c,r[s]-c,e.duration):r[s]}},Fo=(e,t)=>e.stopFlag||!e.entries?-1:(e.currentTime=(t-e.startTime)/1e3,Po(e,e.target,e.from,e.to,e.entries),e.hasEventListener(ge.UPDATE)&&e.dispatchEvent(new ge(ge.UPDATE)),e.currentTime>=e.duration?(e.hasEventListener(ge.COMPLETE)&&e.dispatchEvent(new ge(ge.COMPLETE)),e.nextJob&&e.nextJob.start(),-1):requestAnimationFrame(t=>{Fo(e,t)})),Io=e=>{e.stopFlag||(e.entries=No(e.from),e.entries&&(e.startTime=performance.now(),e.$timerId=Fo(e,e.startTime)))},Lo=e=>{cancelAnimationFrame(e.$timerId),e.stopFlag=!1,e.delay?setTimeout(()=>{Io(e)},e.delay*1e3):Io(e)},Ro=class extends de{target;entries;startTime;stopFlag;$timerId;delay;duration;ease;from;to;currentTime;nextJob;constructor(e,t,n,r=0,i=1,a=null){super(),this.target=e,this.from=t,this.to=n,this.delay=r,this.duration=i,this.ease=a||jo.linear,this.currentTime=0,this.nextJob=null,this.entries=null,this.startTime=0,this.stopFlag=!1,this.$timerId=-1}chain(e){return this.nextJob=e,e}start(){Lo(this)}stop(){Mo(this)}},zo=class{static add(e,t,n,r=0,i=1,a=null){return new Ro(e,t,n,r,i,a)}},Bo=(e,t)=>{if(!e.scrollEnabled||e.autoSize!==`none`||e.yScrollShape.hasLocalVariable(`job`))return;let n=e.width;if(t=ca(t,0,n,0),e.scrollX!==t){if(e.textWidth>n){Z(e);let r=e.xScrollShape;r.width=n*n/e.textWidth;let i=e.parent;if(i){r.hasLocalVariable(`job`)&&r.getLocalVariable(`job`).stop(),r.alpha=.9,r.x=e.x+1+(n-1-r.width)/(n-1)*(t-1),r.y=e.y+e.height-r.height-.5,i.addChildAt(r,i.getChildIndex(e)+1);let a=zo.add(r,{alpha:.9},{alpha:0},.5,.2,jo.outQuad);a.addEventListener(w.COMPLETE,e=>{let t=e.target.target;t.deleteLocalVariable(`job`),t.parent&&t.parent.removeChild(t)}),a.start(),r.setLocalVariable(`job`,a)}e.$scrollX=t}e.willTrigger(w.SCROLL)&&e.dispatchEvent(new w(w.SCROLL,!0))}},Vo=(e,t)=>{if(!e.scrollEnabled||e.autoSize!==`none`||!e.multiline&&!e.wordWrap||e.xScrollShape.hasLocalVariable(`job`))return;let n=e.height;if(t=ca(t,0,n,0),e.scrollY!==t){if(e.textHeight>n){Z(e);let r=e.yScrollShape;r.height=n*n/e.textHeight;let i=e.parent;if(i){r.hasLocalVariable(`job`)&&r.getLocalVariable(`job`).stop(),r.alpha=.9,r.x=e.x+e.width-r.width-.5,r.y=e.y+.5+(n-1-r.height)/(n-1)*(t-1),i.addChildAt(r,i.getChildIndex(e)+1);let a=zo.add(r,{alpha:.9},{alpha:0},.5,.2,jo.outQuad);a.addEventListener(w.COMPLETE,e=>{let t=e.target.target;t.deleteLocalVariable(`job`),t.parent&&t.parent.removeChild(t)}),a.start(),r.setLocalVariable(`job`,a),e.$scrollY=t}}e.willTrigger(w.SCROLL)&&e.dispatchEvent(new w(w.SCROLL,!0))}},Ho=e=>{let t=``,n=X(e);for(let e=1;e{let n=``,r=X(e);for(let e=1;et)break;i.line===t&&i.mode===`text`&&(n+=i.text)}}return n},Wo=(e,t,n,r)=>{if(0>n||n>r)return;let i=e.text;e.text=(n?i.slice(0,n):``)+t+i.slice(r,i.length)},Go=async e=>{if(e.focusIndex===-1||e.selectIndex===-1)return;let t=``,n=Math.min(e.focusIndex,e.selectIndex),r=Math.max(e.focusIndex,e.selectIndex)+1,i=X(e);for(let e=n;e{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},r=document.createElement(`canvas`);r.width=r.height=1;var i=r.getContext(`2d`),a=null,o=e=>{a=e},s=null,c=e=>{s=e},l=()=>s,u=()=>a,d=new Float32Array([1,0,0,1,0,0]),f=new Float32Array([1,0,0,1,0,0]),p={x:0,y:0,pointer:``,hit:null},m=null,h=e=>{m=e},g=()=>m,_=(e,t=1)=>{let n=``;n+=`-webkit-tap-highlight-color: rgba(0,0,0,0);`,n+=`backface-visibility: hidden;`,n+=`touch-action: none;`,n+=`user-select: none;`,n+=`-webkit-user-select: none;`,n+=`-webkit-touch-callout: none;`,t>1&&(n+=`transform: scale(${1/t});`),e.width=1,e.height=1,e.setAttribute(`style`,n)},v="\"use strict\";(function(){let e=2048,t=t=>{e=Math.max(2048,t/2)},n=4,r=e=>{n=e},i,a=e=>{i=e;let t=e.getParameter(e.SCISSOR_BOX);t&&t.length>=4&&(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=t[3])},o=new Int32Array(4),s=(e,t,n,r)=>{o[0]=e,o[1]=t,o[2]=n,o[3]=r,i.scissor(e,t,n,r)},c,l=e=>{c=e},u=!1,d=()=>{u||(u=!0,i.enable(i.SCISSOR_TEST))},f=()=>{u&&(u=!1,i.disable(i.SCISSOR_TEST))},p=!1,m=()=>{p||(p=!0,i.enable(i.STENCIL_TEST))},h=()=>{p&&(p=!1,i.disable(i.STENCIL_TEST))},g=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},_=[],v=(...e)=>{let t=_.pop()||[];return e.length&&t.push(...e),t},y=(e=null)=>{e&&(e.length&&=0,_.push(e))},b=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),x=[],S=(e=0,t=0,n=0,r=0)=>{let i=x.pop()||new Float32Array(4);return i[0]=e,i[1]=t,i[2]=n,i[3]=r,i},C=e=>{x.push(e)},w=[],T=(e=0,t=0,n=0,r=0,i=0,a=0,o=0,s=0,c=0)=>{let l=w.pop()||new Float32Array(9);return l[0]=e,l[1]=t,l[2]=n,l[3]=r,l[4]=i,l[5]=a,l[6]=o,l[7]=s,l[8]=c,l},E=e=>{w.push(e)},D=[],O=(e=0,t=0,n=0,r=0,i=0,a=0)=>{let o=D.pop()||new Float32Array(6);return o[0]=e,o[1]=t,o[2]=n,o[3]=r,o[4]=i,o[5]=a,o},k=e=>{D.push(e)},A=e=>{let t=1/(e[0]*e[4]-e[3]*e[1]),n=e[3]*e[7]-e[4]*e[6],r=e[1]*e[6]-e[0]*e[7];return T(e[4]*t,0-e[1]*t,0,0-e[3]*t,e[0]*t,0,n*t,r*t,1)},j=0,M=0,N=(e,t)=>{j=e,M=t},P=e=>{let t=-819.2*e[0]-819.2*e[2]+e[4],n=819.2*e[0]-819.2*e[2]+e[4],r=-819.2*e[0]+819.2*e[2]+e[4],i=-819.2*e[1]-819.2*e[3]+e[5],a=819.2*e[1]-819.2*e[3]+e[5],o=-819.2*e[1]+819.2*e[3]+e[5],s=r-t,c=o-i,l=Math.sqrt(s*s+c*c);l?(s/=l,c/=l):(s=0,c=0);let u=(n-t)*s+(a-i)*c;return S(t+u*s,i+u*c,n,a)},F=1,I=e=>{F=e},ee=(e,t)=>{let n=e[0],r=e[1],i=e[2],a=e[3],o=e[4],s=e[5],c=t[0],l=t[1],u=t[2],d=t[3],f=t[4],p=t[5];return O(n*c+i*l,r*c+a*l,n*u+i*d,r*u+a*d,n*f+i*p+o,r*f+a*p+s)},L=()=>typeof crypto?.randomUUID==`function`?crypto.randomUUID():`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)}),R=v(),z=v(),te=(e=!1)=>{let t=e?6:9;R.length>=t&&z.push(R.slice(0)),R.length=0;let n=[];for(let e=0;e=t&&n.push(r)}return z.length=0,n},ne=()=>{for(R.length=0;z.length;)y(z.pop())},re=(e,t,n)=>{R.push(e,t,n)},ie=(e,t)=>{let n=R.length,r=+R[n-3],i=+R[n-2];return e===r&&t===i},ae=()=>{if(R.length<3){R.length=0;return}z.push(R.slice(0)),R.length=0},oe=(e,t)=>{if(!R.length){re(e,t,!1);return}ie(e,t)||(ae(),re(e,t,!1))},se=(e,t)=>{R.length||oe(e,t),!ie(e,t)&&re(e,t,!1)},ce=(e,t,n,r)=>{R.length||oe(0,0),!ie(n,r)&&(re(e,t,!0),re(n,r,!1))},le=()=>{if(R.length<7)return;let e=+R[0],t=+R[1];ie(e,t)||re(e,t,!1)},B=new Float32Array(64),ue=0,de=.5,fe=(e,t,n,r,i,a,o,s)=>{let c=3*n-2*e-o,l=3*r-2*t-s,u=3*i-2*o-e,d=3*a-2*s-t;return Math.max(c*c+l*l,u*u+d*d)},pe=(e,t,n,r,i,a,o,s)=>{let c=fe(e,t,n,r,i,a,o,s);if(c{B.length{ue=e},ge=[],_e=0,ve=()=>{_e=0},V=()=>(_e>=ge.length&&ge.push(new Float32Array(8)),ge[_e++]),ye=(e,t,n,r,i,a,o,s,c,l,u)=>{let d=1-c,f=d*e+c*n,p=d*t+c*r,m=d*n+c*i,h=d*r+c*a,g=d*i+c*o,_=d*a+c*s,v=d*f+c*m,y=d*p+c*h,b=d*m+c*g,x=d*h+c*_,S=d*v+c*b,C=d*y+c*x;l[0]=e,l[1]=t,l[2]=f,l[3]=p,l[4]=v,l[5]=y,l[6]=S,l[7]=C,u[0]=S,u[1]=C,u[2]=b,u[3]=x,u[4]=g,u[5]=_,u[6]=o,u[7]=s},be=(e,t,n,r,i,a,o,s,c,l)=>{let u=(3*n+3*i-e-o)*.25,d=(3*r+3*a-t-s)*.25;c[l]=u,c[l+1]=d,c[l+2]=o,c[l+3]=s},xe=new Float32Array(8),Se=new Float32Array(8),Ce=(e,t,n,r,i,a,o,s)=>{let c=pe(e,t,n,r,i,a,o,s),l=c*4;me(l);let u=0;if(c<=2)ye(e,t,n,r,i,a,o,s,.5,xe,Se),be(xe[0],xe[1],xe[2],xe[3],xe[4],xe[5],xe[6],xe[7],B,u),u+=4,be(Se[0],Se[1],Se[2],Se[3],Se[4],Se[5],Se[6],Se[7],B,u),u+=4;else if(c<=4){ve();let c=V(),l=V();ye(e,t,n,r,i,a,o,s,.5,c,l);let d=V(),f=V(),p=V(),m=V();ye(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],.5,d,f),ye(l[0],l[1],l[2],l[3],l[4],l[5],l[6],l[7],.5,p,m),be(d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7],B,u),u+=4,be(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],B,u),u+=4,be(p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],B,u),u+=4,be(m[0],m[1],m[2],m[3],m[4],m[5],m[6],m[7],B,u),u+=4}else{ve();let c=V(),l=V();ye(e,t,n,r,i,a,o,s,.5,c,l);let d=V(),f=V(),p=V(),m=V();ye(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],.5,d,f),ye(l[0],l[1],l[2],l[3],l[4],l[5],l[6],l[7],.5,p,m);let h=V(),g=V(),_=V(),v=V(),y=V(),b=V(),x=V(),S=V();ye(d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7],.5,h,g),ye(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],.5,_,v),ye(p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],.5,y,b),ye(m[0],m[1],m[2],m[3],m[4],m[5],m[6],m[7],.5,x,S),be(h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],B,u),u+=4,be(g[0],g[1],g[2],g[3],g[4],g[5],g[6],g[7],B,u),u+=4,be(_[0],_[1],_[2],_[3],_[4],_[5],_[6],_[7],B,u),u+=4,be(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],B,u),u+=4,be(y[0],y[1],y[2],y[3],y[4],y[5],y[6],y[7],B,u),u+=4,be(b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7],B,u),u+=4,be(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],B,u),u+=4,be(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],B,u),u+=4}return he(u/4),{buffer:B,count:ue}},we=(e,t,n,r,i,a)=>{if(R.length||oe(0,0),ie(i,a))return;let o=R.length,s=+R[o-3],c=+R[o-2],l=Ce(s,c,e,t,n,r,i,a),u=l.buffer,d=l.count;for(let e=0;e{let r=n,i=n*.5522847498307936;we(e+r,t+i,e+i,t+r,e,t+r),we(e-i,t+r,e-r,t+i,e-r,t),we(e-r,t-i,e-i,t-r,e,t-r),we(e+i,t-r,e+r,t-i,e+r,t)},Ee=(e,t,n,r,i)=>{e.$clearColorR=g(t,0,1,0),e.$clearColorG=g(n,0,1,0),e.$clearColorB=g(r,0,1,0),e.$clearColorA=g(i,0,1,0)},De=(e,t,n,r)=>{i.clearColor(e,t,n,r),i.clear(i.COLOR_BUFFER_BIT|i.STENCIL_BUFFER_BIT),i.clearColor(0,0,0,0)},Oe=[],ke=e=>{let t=-1,n=Oe.length;for(;Math.abs(n-t)>1;){let r=Math.floor((n+t)/2);e<=Oe[r].area?n=r:t=r}return n},Ae=e=>{if(Oe.indexOf(e)>-1)return;let t=ke(e.area);e.dirty=!0,Oe.splice(t,0,e)},je=-1,Me=e=>{je=e},Ne=[null,null,null],Pe=new Map,Fe=0,Ie=(e,t)=>e*65536+t,Le=(e,t)=>{let n=Pe.get(Ie(e,t));if(!n||!n.length)return null;--Fe;let r=n.pop();return r.pooled=!1,r},Re=e=>{if(e.pooled)return!0;if(Fe>=32)return!1;let t=Ie(e.width,e.height),n=Pe.get(t);return n||(n=[],Pe.set(t,n)),n.length>=4?!1:(e.pooled=!0,e.dirty=!0,n.push(e),++Fe,!0)},H=e=>{for(let t=0;t{if(!(ze.indexOf(e)>-1)){if(ze.length>10){i.deleteRenderbuffer(e.resource);return}e.dirty=!0,ze.push(e)}},Ve=[],He,Ue=e=>{He=e.createFramebuffer()},We=null,Ge=e=>{We=e.createFramebuffer()},Ke=null,qe=e=>{Ke=e.createFramebuffer(),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,Ke)},Je=null,Ye=e=>{Je=e},Xe=!1,Ze=e=>{Xe=e},Qe=null,$e=null,et=null,tt=null,nt=e=>{$e=e.createFramebuffer(),Qe=e.createFramebuffer(),et=e.createFramebuffer(),tt=e.createBuffer(),e.bindBuffer(e.PIXEL_PACK_BUFFER,tt)},rt=(e,t=!0)=>{e.msaa?(Ae(e.color),e.color=null,e.stencil=null):(t&&H(e.texture),e.texture=null,Be(e.stencil),e.stencil=null),Ve.push(e)},it=0,at=()=>({id:it++,width:0,height:0,clipLevel:0,msaa:!1,mask:!1,color:null,texture:null,stencil:null}),ot=()=>{let e={id:0,resource:i.createRenderbuffer(),width:0,height:0,area:0,dirty:!1};return{resource:i.createRenderbuffer(),stencil:e,width:0,height:0,area:0,dirty:!1}},st=e=>{if(!Oe.length)return ot();let t=ke(e);if(t{e=Math.max(256,b(e)),t=Math.max(256,b(t));let r=st(e*t);return(r.width({id:lt++,resource:i.createRenderbuffer(),width:0,height:0,area:0,dirty:!1}),dt=(e,t)=>{if(!ze.length)return ut();let n=-1,r=1/0;for(let i=0;i=e&&a.height>=t&&a.area{let n=dt(e,t);return(n.width!==e||n.height!==t)&&(n.width=e,n.height=t,n.area=e*t,n.dirty=!1,i.bindRenderbuffer(i.RENDERBUFFER,n.resource),i.renderbufferStorage(i.RENDERBUFFER,i.STENCIL_INDEX8,e,t)),n},pt=0,mt=(e,t)=>({id:pt++,resource:i.createTexture(),width:e,height:t,area:e*t,smooth:!1,dirty:!1,pooled:!1}),ht=(e,t=!1)=>{je!==i.TEXTURE0&&(Me(i.TEXTURE0),i.activeTexture(i.TEXTURE0)),Ne[0]=e,i.bindTexture(i.TEXTURE_2D,e.resource),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,t?i.LINEAR:i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,t?i.LINEAR:i.NEAREST),i.texStorage2D(i.TEXTURE_2D,1,i.RGBA8,e.width,e.height)},gt=(e,t=!1)=>{if(je!==i.TEXTURE0&&(Me(i.TEXTURE0),i.activeTexture(i.TEXTURE0)),Ne[0]=e,i.bindTexture(i.TEXTURE_2D,e.resource),e.smooth!==t){e.smooth=t;let n=t?i.LINEAR:i.NEAREST;i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,n),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,n)}},_t=(e,t,n=!1,r=!0)=>{if(r){let r=Le(e,t);if(r)return gt(r,n),r}let i=mt(e,t);return ht(i,n),i},vt=(e,t,n=!1)=>{let r=Ve.length?Ve.pop():at();return r.width=e,r.height=t,n?(r.msaa=!0,r.texture=null,r.color=ct(e,t),r.stencil=r.color.stencil):(r.msaa=!1,r.texture=_t(e,t),r.color=null,r.stencil=ft(e,t)),r.mask=!1,r.clipLevel=0,r},yt=()=>{Ye(null),Xe&&(Ze(!1),i.bindFramebuffer(i.FRAMEBUFFER,null))},bt=(t=1)=>{let n=mt(e,e);return i.activeTexture(i.TEXTURE3),i.bindTexture(i.TEXTURE_2D_ARRAY,n.resource),i.texParameteri(i.TEXTURE_2D_ARRAY,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D_ARRAY,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D_ARRAY,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D_ARRAY,i.TEXTURE_MAG_FILTER,i.NEAREST),i.texStorage3D(i.TEXTURE_2D_ARRAY,1,i.RGBA8,n.width,n.height,t),i.activeTexture(je===-1?i.TEXTURE0:je),n},xt=Number.MAX_VALUE,St=-Number.MAX_VALUE,Ct=0,wt=e=>{Ct=e},Tt=[],Et=()=>Tt,Dt=()=>{let t=Tt[Ct];return t||(t=vt(e,e,!0),Tt[Ct]=t),t},Ot=[],kt=null,At=0,jt=[],Mt=e=>{jt[e]=!0},Nt=e=>!!jt[e],Pt=e=>{jt[e]=!1},Ft=()=>(kt||(kt=bt(1),At=1),kt),It=t=>{if(!kt){At=Math.max(1,t),kt=bt(At);return}if(!(t<=At)){i.deleteTexture(kt.resource),kt=bt(t),At=t;for(let t=0;t{let t=Lt[e];return t||(t=new Float32Array([xt,xt,St,St]),Lt[e]=t),t},zt=()=>{for(let e=0;e{Bt=e},Ht=()=>{Ot.length=0,wt(0);let e=Et();for(let t=0;t{if(e.clearArraysInstanced(),e.$stackAttachmentObject.length)for(let t=0;t{d(),s(e,t,n,r),i.clear(i.COLOR_BUFFER_BIT|i.STENCIL_BUFFER_BIT),f()},Gt=(e,t,n=null,r=!1)=>{je!==t&&(Me(t),i.activeTexture(t));let a=Ne[e];if(a!==n&&(a===null||n===null||a.id!==n.id)&&(Ne[e]=n,i.bindTexture(i.TEXTURE_2D,n?n.resource:null),n&&n.smooth!==r)){n.smooth=r;let e=r?i.LINEAR:i.NEAREST;i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,e)}},Kt=(e,t=!1)=>{Gt(2,i.TEXTURE2,null),Gt(1,i.TEXTURE1,null),Gt(0,i.TEXTURE0,e,t)},qt=e=>{Ye(e),Xe||(Ze(!0),i.bindFramebuffer(i.FRAMEBUFFER,He)),e.msaa?(i.bindRenderbuffer(i.RENDERBUFFER,e.color.resource),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,e.color.resource)):(Kt(e.texture),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,e.texture.resource,0),Gt(0,i.TEXTURE0,null)),i.bindRenderbuffer(i.RENDERBUFFER,e.stencil.resource),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.STENCIL_ATTACHMENT,i.RENDERBUFFER,e.stencil.resource)},Jt=()=>{let e=c.currentAttachmentObject;if(!e)return;let t=e.clipLevel,n=0;for(let e=0;e{Yt=e},Zt=()=>Yt,Qt=new Map,$t=new Map,en=e=>{!e&&Zt()?(Xt(!1),h(),f()):e&&!Zt()&&(Xt(!0),m(),Jt())},tn=(e,t)=>{let n=Je;if(n&&t.id===n.id)return;qt(t),(!n||n.width!==t.width||n.height!==t.height)&&(N(t.width,t.height),i.viewport(0,0,t.width,t.height));let r=t.msaa?t.color:t.stencil,a=t.texture;(r.dirty||a&&a.dirty)&&(r.dirty=!1,a&&(a.dirty=!1),e.clearRect(0,0,t.width,t.height)),en(t.mask)},nn=e=>{e.$stack.push(T(...e.$matrix))},rn=e=>{if(!e.$stack.length)return;let t=e.$stack.pop();e.$matrix[0]=t[0],e.$matrix[1]=t[1],e.$matrix[3]=t[3],e.$matrix[4]=t[4],e.$matrix[6]=t[6],e.$matrix[7]=t[7],E(t)},an=(e,t,n,r,i,a,o)=>{e[0]=t,e[1]=n,e[3]=r,e[4]=i,e[6]=a,e[7]=o},on=(e,t,n,r,i,a,o)=>{let s=e.$matrix[0],c=e.$matrix[1],l=e.$matrix[3],u=e.$matrix[4],d=e.$matrix[6],f=e.$matrix[7];e.$matrix[0]=t*s+n*l,e.$matrix[1]=t*c+n*u,e.$matrix[3]=r*s+i*l,e.$matrix[4]=r*c+i*u,e.$matrix[6]=a*s+o*l+d,e.$matrix[7]=a*c+o*u+f},sn=e=>{e.globalAlpha=1,e.globalCompositeOperation=`normal`,e.imageSmoothingEnabled=!1},cn=e=>{e.$fillStyle.fill(1),e.$strokeStyle.fill(1)},ln=(e,t,n,r)=>{d(),s(e,t,n+1,r+1),i.clear(i.COLOR_BUFFER_BIT|i.STENCIL_BUFFER_BIT),s(e,t,n,r)},un=()=>{f()},dn=(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{let p=e.length-5;for(let m=3;m(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),pn=new Float32Array(128),mn=0,hn=()=>pn,gn=()=>mn,_n=e=>{let t=e.length+mn;if(t>pn.length){let n=new Float32Array(fn(t));mn>0&&n.set(pn.subarray(0,mn)),n.set(e,mn),pn=n}else pn.set(e,mn);mn+=e.length},vn=[],yn=[],bn=()=>{yn.length=0,mn=0,vn.length=0},xn=new Float32Array(32),Sn=e=>(xn.length{let n=t===`fill`?c.$fillStyle:c.$strokeStyle,r=n[0],i=n[1],a=n[2],o=n[3],s=c.$matrix,l=j,u=M,d=s[0]/l,f=s[3]/l,p=s[6]/l,m=s[1]/u,h=s[4]/u,g=s[7]/u,_=0;for(let t=0;t{let t=te();if(!t.length)return;yn.push(e);let n=Cn(t);_n(n.buffer),vn.push(n.indexCount)},Tn=[],En=(e,t,n,r,i,a)=>{let o=te();if(!o.length)return;yn.push(e===0?`linear`:`radial`);let s=Cn(o);_n(s.buffer),vn.push(s.indexCount),Tn.push(t,n,r,i),e===1&&Tn.push(a)},Dn=(e,t,n)=>{let r=Math.sqrt(e*e+t*t);return{x:-(t/r)*n,y:e/r*n}},On=(e,t,n)=>{let r={x:t.x-e.x,y:t.y-e.y},i=Dn(r.x,r.y,n),a={x:e.x+i.x,y:e.y+i.y},o={x:t.x+i.x,y:t.y+i.y},s={x:e.x-i.x,y:e.y-i.y},c={x:t.x-i.x,y:t.y-i.y};return[a.x,a.y,!1,o.x,o.y,!1,c.x,c.y,!1,s.x,s.y,!1,a.x,a.y,!1]},kn=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}),An=(e,t,n,r=.5)=>{let i=kn(e,t,r),a=kn(t,n,r),o=kn(i,a,r);return[[e,i,o],[o,a,n]]},jn=(e,t,n,r=4)=>{let i=[[e,t,n]];for(let e=0;e({x:(1-e)**2*t.x+2*(1-e)*e*n.x+e**2*r.x,y:(1-e)**2*t.y+2*(1-e)*e*n.y+e**2*r.y}),Nn=(e,t,n,r)=>({x:2*(1-e)*(n.x-t.x)+2*e*(r.x-n.x),y:2*(1-e)*(n.y-t.y)+2*e*(r.y-n.y)}),Pn=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:{x:e.x/t,y:e.y/t}},Fn=(e,t,n,r)=>{let i=[0,.5,1],a=[];for(let o=0;o{let i=jn(e,t,n,5),a=[],o=[];for(let e=0;e{let i=[];for(let a=0;a1e-4||i.push(o,s)}return i},Rn=new OffscreenCanvas(1,1).getContext(`2d`),zn=(e,t)=>{Rn.beginPath(),Rn.moveTo(t[0],t[1]);for(let e=3;e{let a=i?0:r.length-1,o=i?r.length-1:r.length-2,s=r[a].length>15,c=r[o].length>15;if(s&&c)return;let l=Ln(e,t,n,r[a]),u=Ln(e,t,n,r[o]),d=zn(l,r[o]);if(!d)return;let f=zn(u,r[a]);if(!f)return;let p=Math.atan2(d[1]-t,d[0]-e),m=Math.atan2(f[1]-t,f[0]-e)-p;m>Math.PI?m-=2*Math.PI:m<-Math.PI&&(m+=2*Math.PI);let h=Math.abs(m);if(h<.1||h>Math.PI-.1)return;let g=m/8,_=[e,t,!1];for(let r=0;r<=8;r++){let i=p+r*g,a=e+n*Math.cos(i),o=t+n*Math.sin(i);_.push(a,o,!1)}r.splice(-1,0,_)},Vn=(e,t,n,r,i=!1)=>{let a=i?0:r.length-1,o=i?r.length-1:r.length-2,s=r[a].length>15,c=r[o].length>15;if(s&&c)return;let l=Ln(e,t,n,r[a]),u=Ln(e,t,n,r[o]);if(l[0]===u[0]&&l[1]===u[1]||l[0]===u[2]&&l[1]===u[3])return;let d=zn(l,r[o]);if(!d)return;let f=zn(u,r[a]);f&&r.splice(-1,0,[e,t,!1,d[0],d[1],!1,f[0],f[1],!1,e,t,!1])},Hn=(e,t,n)=>{for(let r=0;r<2;++r){let i=0,a=0,o=0,s=0;r===0?(i=e[0],a=e[1],o=e[3],s=e[4]):(i=e[e.length-3],a=e[e.length-2],o=e[e.length-6],s=e[e.length-5]);let c=o-i,l=s-a,u=Math.atan2(l,c),d=u+Math.PI/2,f=u-Math.PI/2,p=(f-d)/16,m=[];for(let e=0;e<=16;e++){let n=f+p*e,r=i+t*Math.cos(n),o=a+t*Math.sin(n);m.push(r,o,!1)}r===0?n.unshift(m):n.push(m)}},Un=(e,t,n)=>{for(let r=0;r<2;++r){let i=0,a=0,o=0,s=0;r===0?(i=e[0],a=e[1],o=e[3],s=e[4]):(i=e[e.length-3],a=e[e.length-2],o=e[e.length-6],s=e[e.length-5]);let c=-(o-i),l=-(s-a),u=Math.sqrt(c*c+l*l);if(u===0)continue;let d=c/u,f=l/u,p=i+t*d,m=a+t*f,h=-f,g=d,_=[p+t*d+t*h,m+t*f+t*g,!1,p+t*d-t*h,m+t*f-t*g,!1,p-t*d-t*h,m-t*f-t*g,!1,p+t*d+t*h,m+t*f+t*g,!1,p-t*d-t*h,m-t*f-t*g,!1,p-t*d+t*h,m-t*f+t*g,!1];r===0?n.unshift(_):n.push(_)}},Wn=(e,t,n,r,i,a=!1)=>{let o=a?0:i.length-1,s=a?i.length-1:i.length-2,c=i[o].length>15,l=i[s].length>15;if(c&&l)return;let u=Ln(e.x,e.y,r,i[o]),d=Ln(e.x,e.y,r,i[s]);if(u[0]===d[0]&&u[1]===d[1]||u[0]===d[2]&&u[1]===d[3])return;let f=zn(u,i[s]);if(!f)return;let p=zn(d,i[o]);if(!p)return;let m=t.x-e.x,h=t.y-e.y,g=Math.hypot(m,h),_={x:m/g,y:h/g},v=n.x-e.x,y=n.y-e.y,b=Math.hypot(v,y),x={x:v/b,y:y/b},S=_.x,C=_.y,w=x.x,T=x.y,E=S*T-C*w;if(E===0){i.splice(-1,0,[e.x,e.y,!1,f[0],f[1],!1,p[0],p[1],!1]);return}let D=((p[0]-f[0])*T-(p[1]-f[1])*w)/E,O=f[0]+D*S,k=f[1]+D*C;i.splice(-1,0,[e.x,e.y,!1,f[0],f[1],!1,O,k,!1,e.x,e.y,!1,p[0],p[1],!1,O,k,!1])},Gn={x:0,y:0},Kn={x:0,y:0},qn={x:0,y:0},Jn={x:0,y:0},Yn=(e,t)=>{let n=Gn;n.x=e[0],n.y=e[1];let r=Kn;r.x=0,r.y=0;let i=qn;i.x=0,i.y=0;let a=Jn;a.x=0,a.y=0;let o=[];for(let s=3;s1)switch(c.joints){case 0:Vn(n.x,n.y,t,o);break;case 1:a.x=e[s-6],a.y=e[s-5],Wn(n,i,a,t,o);break;case 2:Bn(n.x,n.y,t,o)}n.x=i.x,n.y=i.y}let s=e[0],l=e[1],u=e[e.length-3],d=e[e.length-2],f=1e-4;if(Math.abs(s-u)1)switch(c.joints){case 0:Vn(s,l,t,o,!0);break;case 1:n.x=s,n.y=l,i.x=e[3],i.y=e[4],a.x=e[e.length-6],a.y=e[e.length-5],Wn(n,i,a,t,o,!0);break;case 2:Bn(s,l,t,o,!0)}else switch(c.caps){case 1:Hn(e,t,o);break;case 2:Un(e,t,o)}return o},Xn=e=>{let t=c.thickness/2,n=v();for(let r=0;r{let o=te(!0);if(!o.length)return;yn.push(e===0?`linear`:`radial`);let s=Xn(o);_n(s.buffer),vn.push(s.indexCount),Tn.push(t,n,r,i),e===1&&Tn.push(a)},Qn=new Map,$n=()=>{Qn.clear()},er=e=>{Qn.set(vn.length,e)},tr=()=>({id:L(),resource:i.createVertexArray(),vertexBuffer:i.createBuffer(),vertexLength:0}),nr,rr=e=>{nr&&nr.id===e.id||(nr=e,i.bindVertexArray(e.resource))},ir=()=>{let e=tr();rr(e),i.bindBuffer(i.ARRAY_BUFFER,e.vertexBuffer);let t=new Float32Array([0,0,1,0,1,1,0,0,1,1,0,1]);return i.bufferData(i.ARRAY_BUFFER,t,i.STATIC_DRAW),i.enableVertexAttribArray(0),i.vertexAttribPointer(0,2,i.FLOAT,!1,0,0),e},ar=[],or=new Float32Array([0,0,0,1,1,0,1,1]),sr,cr=e=>{sr=e.createBuffer()},lr,ur=e=>{lr=e},dr,fr=()=>(dr||=ir(),dr),pr=()=>{if(ar.length)return ar.pop();let e=tr();return rr(e),i.bindBuffer(i.ARRAY_BUFFER,e.vertexBuffer),i.enableVertexAttribArray(0),i.enableVertexAttribArray(1),i.enableVertexAttribArray(2),i.enableVertexAttribArray(3),i.enableVertexAttribArray(4),i.enableVertexAttribArray(5),i.vertexAttribPointer(0,2,i.FLOAT,!1,68,0),i.vertexAttribPointer(1,2,i.FLOAT,!1,68,8),i.vertexAttribPointer(2,4,i.FLOAT,!1,68,16),i.vertexAttribPointer(3,3,i.FLOAT,!1,68,32),i.vertexAttribPointer(4,3,i.FLOAT,!1,68,44),i.vertexAttribPointer(5,3,i.FLOAT,!1,68,56),e},mr=()=>{let e=pr();rr(e);let t=hn(),n=gn();return i.bindBuffer(i.ARRAY_BUFFER,e.vertexBuffer),e.vertexLength{ar.indexOf(e)>-1||ar.push(e)},gr=0,_r=(e,t)=>{let n=i.createProgram(),r=i.createShader(i.VERTEX_SHADER);i.shaderSource(r,e),i.compileShader(r);let a=i.createShader(i.FRAGMENT_SHADER);return i.shaderSource(a,t),i.compileShader(a),i.attachShader(n,r),i.attachShader(n,a),i.linkProgram(n),i.detachShader(n,r),i.detachShader(n,a),i.deleteShader(r),i.deleteShader(a),{id:gr++,resource:n}},vr=(e,t,n=!1)=>{let r=i.getProgramParameter(e,i.ACTIVE_UNIFORMS);for(let a=0;a{yr!==e.id&&(yr=e.id,i.useProgram(e.resource))},xr=e=>{for(let t of e.values())t.method!==void 0&&t.assign!==void 0&&(t.assign<0?t.method(t.array):t.assign>0&&(t.assign--,t.method(t.array)))};var Sr=class{_$programObject;_$uniformMap;highp;mediump;textures;constructor(e,t,n=!1){this._$programObject=_r(e,t),this._$uniformMap=new Map,vr(this._$programObject.resource,this._$uniformMap,n);let r=new Float32Array;this.highp=this._$uniformMap.get(`u_highp`)?.array??r,this.mediump=this._$uniformMap.get(`u_mediump`)?.array??r,this.textures=this._$uniformMap.get(`u_textures`)?.array??r}useProgram(){br(this._$programObject)}bindUniform(){xr(this._$uniformMap)}};let Cr=new Map,wr=()=>`\nvec2 applyMatrix(in vec2 vertex) {\n mat3 matrix = mat3(a_matrix0, a_matrix1, a_matrix2);\n return (matrix * vec3(vertex, 1.0)).xy;\n}`,Tr=e=>`\nvec2 applyMatrix(in vec2 vertex) {\n mat3 parent_matrix = mat3(\n u_highp[${e}].xyz,\n u_highp[${e+1}].xyz,\n u_highp[${e+2}].xyz\n );\n mat3 ancestor_matrix = mat3(\n u_highp[${e+3}].xyz,\n u_highp[${e+4}].xyz,\n u_highp[${e+5}].xyz\n );\n\n vec2 parent_offset = vec2(u_highp[${e+2}].w, u_highp[${e+3}].w);\n vec2 parent_size = vec2(u_highp[${e+4}].w, u_highp[${e+5}].w);\n vec4 grid_min = u_highp[${e+6}];\n vec4 grid_max = u_highp[${e+7}];\n\n vec2 position = (parent_matrix * vec3(vertex, 1.0)).xy;\n position = (position - parent_offset) / parent_size;\n\n vec4 ga = grid_min;\n vec4 gb = grid_max - grid_min;\n vec4 gc = vec4(1.0) - grid_max;\n\n vec2 pa = position;\n vec2 pb = position - grid_min.st;\n vec2 pc = position - grid_max.st;\n\n position = (ga.pq / ga.st) * min(pa, ga.st)\n + (gb.pq / gb.st) * clamp(pb, vec2(0.0), gb.st)\n + (gc.pq / gc.st) * max(vec2(0.0), pc);\n\n position = position * parent_size + parent_offset;\n position = (ancestor_matrix * vec3(position, 1.0)).xy;\n\n position = position + vec2(u_highp[${e+8}].x, u_highp[${e+8}].y);\n return position / vec2(u_highp[0].w, u_highp[1].w);\n}`,Er=()=>`layout (location = 1) in vec2 a_bezier;`,Dr=()=>`layout (location = 3) in vec3 a_matrix0;\nlayout (location = 4) in vec3 a_matrix1;\nlayout (location = 5) in vec3 a_matrix2;`,Or=()=>`out vec2 v_uv;`,kr=()=>`out vec2 v_bezier;`,Ar=()=>`\n mat3 uv_matrix = mat3(\n u_highp[0].xyz,\n u_highp[1].xyz,\n u_highp[2].xyz\n );\n mat3 inverse_matrix = mat3(\n u_highp[3].xyz,\n u_highp[4].xyz,\n vec3(u_highp[2].w, u_highp[3].w, u_highp[4].w)\n );\n v_uv = (inverse_matrix * uv_matrix * vec3(a_vertex, 1.0)).xy;`,jr=()=>`v_bezier = a_bezier;`,Mr=()=>`layout (location = 2) in vec4 a_color;`,Nr=()=>`out vec4 v_color;`,Pr=()=>`v_color = a_color;`,Fr=(e,t,n,r)=>{let i=n?Er():``,a=n?kr():t?Or():``,o=n?jr():t?Ar():``,s=r?Tr(t?5:0):wr(),c=n?``:Mr(),l=n?``:Nr(),u=n?``:Pr();return`#version 300 es\n\nlayout (location = 0) in vec2 a_vertex;\n${i}\n${c}\n${r?``:Dr()}\n\n${e>1?`uniform vec4 u_highp[${e}];`:``}\n${a}\n${l}\n${s}\n\nvoid main() {\n ${u}\n ${o}\n vec2 pos = applyMatrix(a_vertex);\n pos = pos * 2.0 - 1.0;\n gl_Position = vec4(pos.x, -pos.y, 0.0, 1.0);\n}`},Ir=()=>`#version 300 es\nlayout (location = 0) in vec2 a_vertex;\nvoid main() {\n vec2 pos = a_vertex * 2.0 - 1.0;\n gl_Position = vec4(pos.x, -pos.y, 0.0, 1.0);\n}`,Lr=()=>`#version 300 es\nprecision mediump float;\n\nin vec4 v_color;\nout vec4 o_color;\n\nvoid main() {\n o_color = vec4(v_color.rgb * v_color.a, v_color.a);\n}`,Rr=()=>`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\nuniform vec4 u_mediump[1];\n\nin vec2 v_uv;\nout vec4 o_color;\n\nvoid main() {\n vec2 uv = vec2(v_uv.x, u_mediump[0].y - v_uv.y) / u_mediump[0].xy;\n\n vec4 src = texture(u_texture, uv);\n o_color = src;\n}`,zr=()=>`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\nuniform vec4 u_mediump[1];\n\nin vec2 v_uv;\nout vec4 o_color;\n\nvoid main() {\n vec2 uv = fract(vec2(v_uv.x, -v_uv.y) / u_mediump[0].xy);\n\n vec4 src = texture(u_texture, uv);\n o_color = src;\n}`,Br=()=>`#version 300 es\nprecision mediump float;\n\nin vec2 v_bezier;\nout vec4 o_color;\n\nvoid main() {\n float f_val = v_bezier.x * v_bezier.x - v_bezier.y;\n\n float dx = dFdx(f_val);\n float dy = dFdy(f_val);\n\n float dist = f_val / length(vec2(dx, dy));\n float alpha = smoothstep(0.5, -0.5, dist);\n\n if (alpha > 0.001) {\n o_color = vec4(min(alpha, 1.0));\n } else {\n discard;\n }\n}`,Vr=()=>`#version 300 es\nprecision mediump float;\nout vec4 o_color;\nvoid main() {\n o_color = vec4(1.0);\n}`,Hr=e=>{let t=`m${e?`y`:`n`}`;if(Cr.has(t))return Cr.get(t);let n=new Sr(Fr(e?9:0,!1,!0,e),Br());return Cr.set(t,n),n},Ur=(e,t)=>{let n=e.highp;n[0]=t[0],n[1]=t[1],n[2]=0,n[4]=t[2],n[5]=t[3],n[6]=0,n[8]=t[4],n[9]=t[5],n[10]=1,n[12]=t[6],n[13]=t[7],n[14]=0,n[16]=t[8],n[17]=t[9],n[18]=0,n[20]=t[10],n[21]=t[11],n[22]=1,n[3]=j,n[7]=M,n[11]=t[12],n[15]=t[13],n[19]=t[14],n[23]=t[15],n[24]=t[16],n[25]=t[17],n[26]=t[18],n[27]=t[19],n[28]=t[20],n[29]=t[21],n[30]=t[22],n[31]=t[23],n[32]=t[24],n[33]=t[25]},Wr=`normal`,Gr=e=>{Wr=e},Kr=600,qr=e=>{Kr=e},Jr=()=>{Kr!==613&&(qr(613),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA))},Yr=(e,t,n,r)=>{e.useProgram(),e.bindUniform(),Jr(),rr(t),i.drawArrays(i.TRIANGLES,n,r)},Xr=()=>{let e=`rmnn`;if(Cr.has(e))return Cr.get(e);let t=new Sr(Ir(),Vr());return Cr.set(e,t),t},Zr=()=>{let e=c.currentAttachmentObject;if(!e)return;let t=1<{let e=c.currentAttachmentObject;if(!e)return;let t=Qt.get(e.clipLevel),n=t[0],r=t[1],a=t[2],o=t[3],l=Math.ceil(Math.abs(a-n)),u=Math.ceil(Math.abs(o-r));d(),s(n,e.height-r-u,l,u);let p=mr(),m=$t.get(e.clipLevel),h=0,g=null,_=vn.length;for(let t=0;t<_;t++){i.stencilMask(1<7&&(Zr(),m=e.clipLevel+1)}$t.set(e.clipLevel,m),hr(p),bn(),$n(),f()},$r=(e,t,n)=>{if(e.used)return e.left?.insert(t,n)||e.right?.insert(t,n)||null;if(t>e.w||n>e.h)return null;if(t===e.w&&n===e.h)return e.used=!0,e;let r=t+1,i=n+1,a=e.w-r,o=e.h-i;return a>o?(e.left=e.create(e.index,e.x,e.y,t,e.h),e.right=e.create(e.index,e.x+r,e.y,a,e.h)):(e.left=e.create(e.index,e.x,e.y,e.w,n),e.right=e.create(e.index,e.x,e.y+i,e.w,o)),e.used=!0,e.left.insert(t,n)},ei=(e,t,n,r,i)=>e.left?.dispose(t,n,r,i)?(!e.left.used&&!e.right?.used&&(e.left&&e.left.release(),e.right&&e.right.release(),e.left=e.right=null,e.used=!1),!0):e.right?.dispose(t,n,r,i)?(!e.right.used&&!e.left?.used&&(e.left&&e.left.release(),e.right&&e.right.release(),e.left=e.right=null,e.used=!1),!0):t===e.x&&n===e.y&&r===e.w&&i===e.h&&(e.used=!1,!0),ti=[];var ni=class e{index;x;y;w;h;left;right;used;constructor(e,t,n,r,i){this.index=e,this.x=t,this.y=n,this.w=r,this.h=i,this.left=null,this.right=null,this.used=!1}insert(e,t){return $r(this,e,t)}dispose(e,t,n,r){return ei(this,e,t,n,r)}create(t,n,r,i,a){let o=ti.length?ti.pop():new e(t,0,0,0,0);return o.index=t,o.x=n,o.y=r,o.w=i,o.h=a,o.left=null,o.right=null,o.used=!1,o}release(){this.left&&=(this.left.release(),null),this.right&&=(this.right.release(),null),this.used=!1,ti.push(this)}},ri=class{_$root;constructor(e,t,n){this._$root=new ni(e,0,0,t,n)}insert(e,t){return this._$root.insert(e,t)}dispose(e,t,n,r){return this._$root.dispose(e,t,n,r)}};let ii=(t,n)=>{let r=Ct;Ot[r]||(Ot[r]=new ri(r,e,e));let i=Ot[r].insert(t,n);if(i)return i;for(let e=0;e<10;e++){if(r===e)continue;wt(e);let i=Ot[e];if(!i)return ii(t,n);let a=i.insert(t,n);if(a)return a}return ii(t,n)},ai=e=>{let t=Ot[e.index];t&&t.dispose(e.x,e.y,e.w,e.h)},oi=()=>`\nfloat isInside(in vec2 uv) {\n return step(4.0, dot(step(vec4(0.0, uv.x, 0.0, uv.y), vec4(uv.x, 1.0, uv.y, 1.0)), vec4(1.0)));\n}`,si=e=>`\n vec4 mul = u_mediump[${e}];\n vec4 add = u_mediump[${e+1}];\n\n if (mul.x != 1.0 || mul.y != 1.0 || mul.z != 1.0 || mul.w != 1.0\n || add.x != 0.0 || add.y != 0.0 || add.z != 0.0\n ) {\n src.rgb /= max(0.0001, src.a);\n src = clamp(src * mul + add, 0.0, 1.0);\n src.rgb *= src.a;\n }\n`,ci=e=>`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\n${e?`uniform vec4 u_mediump[2];`:``}\n\nin vec2 v_coord;\nout vec4 o_color;\n\nvoid main() {\n vec4 src = texture(u_texture, v_coord);\n ${e?si(0):``}\n o_color = src;\n}`,li=()=>`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\n\nin vec2 v_coord;\nout vec4 o_color;\n\nvoid main() {\n vec4 src = texture(u_texture, v_coord);\n // ストレートアルファのソースをプリマルチプライドアルファへ変換して出力する。\n // アトラスはプリマルチプライ空間で構築され blendFunc(ONE, ONE_MINUS_SRC_ALPHA) で\n // 合成されるため、変換しないと透明部の白抜けや縁の白線が発生する。\n o_color = vec4(src.rgb * src.a, src.a);\n}`,ui=()=>`#version 300 es\nprecision mediump float;\n\nuniform mediump sampler2DArray u_texture;\n\nin vec4 v_mul;\nin vec4 v_add;\nin vec2 v_coord;\nout vec4 o_color;\n\nvoid main() {\n vec4 src = texture(u_texture, vec3(v_coord, v_add.w));\n\n if (v_mul.x != 1.0 || v_mul.y != 1.0 || v_mul.z != 1.0 || v_mul.w != 1.0\n || v_add.x != 0.0 || v_add.y != 0.0 || v_add.z != 0.0\n ) {\n src.rgb /= max(0.0001, src.a);\n src = clamp(src * v_mul + vec4(v_add.xyz, 0.0), 0.0, 1.0);\n src.rgb *= src.a;\n }\n\n o_color = src;\n}`,di=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),fi=new class{buffer;offset;constructor(){this.buffer=new Float32Array(256),this.offset=0}push(...e){this.buffer.length`#version 300 es\n\nlayout (location = 0) in vec2 a_vertex;\n\nout vec2 v_coord;\n\nvoid main() {\n v_coord = a_vertex;\n\n vec2 position = a_vertex * 2.0 - 1.0;\n gl_Position = vec4(position, 0.0, 1.0);\n}`,hi=()=>`#version 300 es\n\nlayout (location = 0) in vec2 a_vertex;\nuniform vec4 u_highp[3];\n\nout vec2 v_coord;\n\nvoid main() {\n v_coord = a_vertex;\n\n mat3 matrix = mat3(\n u_highp[0].x, u_highp[0].y, 0.0,\n u_highp[0].z, u_highp[0].w, 0.0,\n u_highp[1].x, u_highp[1].y, 1.0\n );\n\n vec2 size = u_highp[1].zw;\n vec2 viewport = vec2(u_highp[2].x, u_highp[2].y);\n\n vec2 position = vec2(a_vertex.x, 1.0 - a_vertex.y);\n position = position * size;\n position = (matrix * vec3(position, 1.0)).xy;\n position /= viewport;\n\n position = position * 2.0 - 1.0;\n gl_Position = vec4(position.x, -position.y, 0.0, 1.0);\n}`,gi=()=>`#version 300 es\n\nlayout (location = 0) in vec2 a_vertex;\nuniform vec4 u_highp[2];\n\nout vec2 v_coord;\n\nvoid main() {\n v_coord = a_vertex;\n\n vec2 offset = u_highp[0].xy;\n vec2 size = u_highp[0].zw;\n vec2 viewport = vec2(u_highp[1].x, u_highp[1].y);\n\n vec2 position = vec2(a_vertex.x, 1.0 - a_vertex.y);\n position = position * size + offset;\n position /= viewport;\n\n position = position * 2.0 - 1.0;\n gl_Position = vec4(position.x, -position.y, 0.0, 1.0);\n}`,_i=()=>`#version 300 es\n\nlayout (location = 0) in vec2 a_vertex;\nlayout (location = 1) in vec4 a_rect;\nlayout (location = 2) in vec4 a_size;\nlayout (location = 3) in vec2 a_offset;\nlayout (location = 4) in vec4 a_matrix;\nlayout (location = 5) in vec4 a_mul;\nlayout (location = 6) in vec4 a_add;\n\nout vec2 v_coord;\nout vec4 v_mul;\nout vec4 v_add;\n\nvoid main() {\n v_coord = a_vertex * a_rect.zw + a_rect.xy;\n v_mul = a_mul;\n v_add = a_add;\n\n vec2 position = vec2(a_vertex.x, 1.0 - a_vertex.y);\n position = position * a_size.xy;\n\n mat3 matrix = mat3(\n a_matrix.x, a_matrix.y, 0.0,\n a_matrix.z, a_matrix.w, 0.0,\n a_offset.x, a_offset.y, 1.0\n );\n\n position = (matrix * vec3(position, 1.0)).xy;\n position /= a_size.zw;\n\n position = position * 2.0 - 1.0;\n gl_Position = vec4(position.x, -position.y, 0.0, 1.0);\n}`,vi=new Map,yi=()=>{if(vi.has(`i`))return vi.get(`i`);let e=new pi(_i(),ui());return vi.set(`i`,e),e},bi=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n return src + dst - dst * src.a;\n}`,xi=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 c = vec4(dst.rgb - src.rgb, src.a * dst.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,Si=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n vec4 c = src * dst;\n\n return a + b + c;\n}`,Ci=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 c = vec4(mix(src.rgb, dst.rgb, step(src.rgb, dst.rgb)), src.a * dst.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,wi=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 c = vec4(mix(src.rgb, dst.rgb, step(dst.rgb, src.rgb)), src.a * dst.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,Ti=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 mul = src * dst;\n vec3 c1 = 2.0 * mul.rgb;\n vec3 c2 = 2.0 * (src.rgb + dst.rgb - mul.rgb) - 1.0;\n vec4 c = vec4(mix(c1, c2, step(vec3(0.5), dst.rgb)), mul.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,Ei=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 mul = src * dst;\n vec3 c1 = 2.0 * mul.rgb;\n vec3 c2 = 2.0 * (src.rgb + dst.rgb - mul.rgb) - 1.0;\n vec4 c = vec4(mix(c1, c2, step(vec3(0.5), src.rgb)), mul.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,Di=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 a = src - src * dst.a;\n vec4 b = dst - dst * src.a;\n\n src.rgb /= src.a;\n dst.rgb /= dst.a;\n\n vec4 c = vec4(abs(src.rgb - dst.rgb), src.a * dst.a);\n c.rgb *= c.a;\n\n return a + b + c;\n}`,Oi=()=>`\nvec4 blend (in vec4 src, in vec4 dst) {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n vec4 b = dst - dst * src.a;\n vec4 c = vec4(src.a - dst.rgb * src.a, src.a);\n\n return b + c;\n}`,ki=(e,t)=>{let n;switch(e){case`subtract`:n=xi();break;case`multiply`:n=Si();break;case`lighten`:n=Ci();break;case`darken`:n=wi();break;case`overlay`:n=Ti();break;case`hardlight`:n=Ei();break;case`difference`:n=Di();break;case`invert`:n=Oi();break;default:n=bi()}let r=t?`uniform vec4 u_mediump[2];`:``,i=t?si(0):``;return`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_textures[2];\n${r}\n\nin vec2 v_coord;\nout vec4 o_color;\n\n${n}\n\nvoid main() {\n vec4 dst = texture(u_textures[0], v_coord);\n vec4 src = texture(u_textures[1], v_coord);\n ${i}\n o_color = blend(src, dst);\n}`},Ai=(e,t)=>{let n=`i${e}${t?`y`:`n`}`;if(vi.has(n))return vi.get(n);let r=new Sr(mi(),ki(e,t));return vi.set(n,r),r},ji=Number.MAX_VALUE,Mi=()=>{if(!c.newDrawState)return;let t=c.currentAttachmentObject,n=Et();It(n.length);let r=Ft();d();for(let t=0;t{let t=Ct;wt(e.index),Mi(),i.bindFramebuffer(i.FRAMEBUFFER,Qe);let n=Ft();i.framebufferTextureLayer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,n.resource,0,e.index),i.bindFramebuffer(i.FRAMEBUFFER,$e);let r=_t(e.w,e.h);return i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,r.resource,0),i.bindFramebuffer(i.FRAMEBUFFER,null),i.bindFramebuffer(i.READ_FRAMEBUFFER,Qe),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,$e),i.blitFramebuffer(e.x,e.y,e.x+e.w,e.y+e.h,0,0,e.w,e.h,i.COLOR_BUFFER_BIT,i.NEAREST),wt(t),i.bindFramebuffer(i.READ_FRAMEBUFFER,He),i.bindFramebuffer(i.FRAMEBUFFER,He),r},Pi=(e,t,n=!1)=>{Gt(2,i.TEXTURE2,null,n),Gt(1,i.TEXTURE1,t,n),Gt(0,i.TEXTURE0,e,n)},Fi=()=>{if(vi.has(`p`))return vi.get(`p`);let e=new Sr(gi(),ci(!1));return vi.set(`p`,e),e},Ii=(e,t,n)=>{let r=e.highp,i=c.$matrix;r[0]=i[6],r[1]=i[7],r[2]=t,r[3]=n,r[4]=j,r[5]=M},Li=e=>{e.useProgram(),e.bindUniform(),rr(fr()),i.drawArrays(i.TRIANGLES,0,6)},Ri=null,zi=(e,t,n,r)=>{let a=c.currentAttachmentObject,o=c.$mainAttachmentObject;return c.bind(o),i.bindFramebuffer(i.FRAMEBUFFER,$e),(!Ri||Ri.width!==o.width||Ri.height!==o.height)&&(Ri=_t(o.width,o.height)),Kt(Ri),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,Ri.resource,0),i.bindFramebuffer(i.FRAMEBUFFER,null),i.bindFramebuffer(i.READ_FRAMEBUFFER,He),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,$e),d(),s(e,o.height-t-r,n+1,r+1),i.blitFramebuffer(0,0,o.width,o.height,0,0,o.width,o.height,i.COLOR_BUFFER_BIT,i.NEAREST),f(),i.bindFramebuffer(i.FRAMEBUFFER,He),a&&c.bind(a),Ri},Bi=(e,t,n,r)=>{let i=c.currentAttachmentObject,a=zi(e,t,n,r),o=vt(n,r,!1);c.bind(o),c.save(),c.setTransform(1,0,0,1,-e,-t);let s=Fi();Ii(s,a.width,a.height),Jr(),Kt(a),Li(s);let l=o.texture;return c.restore(),rt(o,!1),i&&c.bind(i),l},Vi=()=>{Kr!==610&&(qr(610),i.blendFunc(i.ONE,i.ZERO))},Hi=e=>{Kt(e),Vi();let t=Fi();Ii(t,e.width,e.height),Li(t),Jr()},Ui=(e,t,n,r,i,a,o,s,c)=>{let l=e.textures;l[0]=0,l[1]=1;let u=e.mediump;u[0]=t,u[1]=n,u[2]=r,u[3]=i,u[4]=a,u[5]=o,u[6]=s,u[7]=c},Wi=(e=!1)=>{let t=`m${e?`y`:`n`}`;if(vi.has(t))return vi.get(t);let n=new Sr(hi(),ci(e));return vi.set(t,n),n},Gi=(e,t,n)=>{let r=e.highp,i=c.$matrix;r[0]=i[0],r[1]=i[1],r[2]=i[3],r[3]=i[4],r[4]=i[6],r[5]=i[7],r[6]=t,r[7]=n,r[8]=j,r[9]=M},Ki=(t,n,r,i,a,o)=>{let s=o[0],l=o[1],u=o[2],d=c.globalAlpha,f=o[4]/255,p=o[5]/255,m=o[6]/255,h=c.$matrix;switch(c.globalCompositeOperation){case`normal`:case`layer`:case`add`:case`screen`:case`alpha`:case`erase`:case`copy`:{if(Wr!==c.globalCompositeOperation){let e=c.globalCompositeOperation;c.globalCompositeOperation=Wr,c.drawArraysInstanced(),c.globalCompositeOperation=e,Gr(c.globalCompositeOperation)}Bt!==t.index&&(Vt(t.index),wt(t.index));let n=yi();fi.pushDisplayObjectBuffer((t.x+.5)/e,(t.y+.5)/e,(t.w-1)/e,(t.h-1)/e,t.w,t.h,j,M,h[6],h[7],h[0],h[1],h[3],h[4],s,l,u,d,f,p,m,t.index),n.count++}break;default:{let e=c.currentAttachmentObject;c.drawArraysInstanced();let o=Math.ceil(Math.abs(i-n)),g=Math.ceil(Math.abs(a-r)),_=0,v=0,y=Ni(t);if(h[0]!==1||h[1]!==0||h[3]!==0||h[4]!==1){let n=vt(o,g,!1),r=O(h[0],h[1],h[3],h[4],o/2,g/2),i=O(1,0,0,1,-t.w/2,-t.h/2),a=O(r[0]*i[0]+r[2]*i[1],r[1]*i[0]+r[3]*i[1],r[0]*i[2]+r[2]*i[3],r[1]*i[2]+r[3]*i[3],r[0]*i[4]+r[2]*i[5]+r[4],r[1]*i[4]+r[3]*i[5]+r[5]);c.save(),c.bind(n),c.setTransform(a[0],a[1],a[2],a[3],a[4],a[5]),_=a[4],v=a[5];let s=Wi();Gi(s,y.width,y.height),Kt(y,!0),Li(s),H(y),y=n.texture,rt(n,!1),e&&c.bind(e),c.restore()}(_||v)&&(h[6]-=_,h[7]-=v);let b=Bi(h[6],h[7],o,g),x=vt(o,g,!1);c.bind(x),Pi(b,y);let S=Ai(c.globalCompositeOperation,!0);Ui(S,s,l,u,d,f,p,m,0),Li(S),e&&c.bind(e),Hi(x.texture),(_||v)&&(h[6]+=_,h[7]+=v),H(y),H(b),rt(x),Gr(c.globalCompositeOperation),Vt(t.index),wt(t.index)}}},qi=()=>{yi().clear()},Ji=0,Yi=()=>{rr(lr),i.bindBuffer(i.ARRAY_BUFFER,sr),fi.buffer.length>Ji&&(Ji=fi.buffer.length),i.bufferData(i.ARRAY_BUFFER,Ji*4,i.STREAM_DRAW),i.bufferSubData(i.ARRAY_BUFFER,0,fi.buffer,0,fi.offset)},Xi=e=>{e.useProgram(),e.bindUniform(),Yi(),i.drawArraysInstanced(i.TRIANGLES,0,6,e.count)},Zi=()=>{Kr!==611&&(qr(611),i.blendFunc(i.ONE,i.ONE))},Qi=()=>{Kr!==641&&(qr(641),i.blendFunc(i.ONE_MINUS_DST_COLOR,i.ONE))},$i=()=>{Kr!==606&&(qr(606),i.blendFunc(i.ZERO,i.SRC_ALPHA))},ea=()=>{Kr!==603&&(qr(603),i.blendFunc(i.ZERO,i.ONE_MINUS_SRC_ALPHA))},ta=e=>{switch(e){case`add`:Zi();break;case`screen`:Qi();break;case`alpha`:$i();break;case`erase`:ea();break;case`copy`:Vi();break;default:Jr()}},na=()=>{let e=yi();e.count&&(Mi(),ta(Wr),Xi(e),e.clear())},ra=()=>{let e=tr();return rr(e),i.bindBuffer(i.ARRAY_BUFFER,e.vertexBuffer),i.bufferData(i.ARRAY_BUFFER,new Float32Array([0,0,1,0,1,1,0,0,1,1,0,1]),i.STATIC_DRAW),i.enableVertexAttribArray(0),i.vertexAttribPointer(0,2,i.FLOAT,!1,0,0),i.bindBuffer(i.ARRAY_BUFFER,sr),i.bufferData(i.ARRAY_BUFFER,fi.buffer.length,i.STREAM_DRAW),i.enableVertexAttribArray(1),i.vertexAttribPointer(1,4,i.FLOAT,!1,88,0),i.vertexAttribDivisor(1,1),i.enableVertexAttribArray(2),i.vertexAttribPointer(2,4,i.FLOAT,!1,88,16),i.vertexAttribDivisor(2,1),i.enableVertexAttribArray(3),i.vertexAttribPointer(3,2,i.FLOAT,!1,88,32),i.vertexAttribDivisor(3,1),i.enableVertexAttribArray(4),i.vertexAttribPointer(4,4,i.FLOAT,!1,88,40),i.vertexAttribDivisor(4,1),i.enableVertexAttribArray(5),i.vertexAttribPointer(5,4,i.FLOAT,!1,88,56),i.vertexAttribDivisor(5,1),i.enableVertexAttribArray(6),i.vertexAttribPointer(6,4,i.FLOAT,!1,88,72),i.vertexAttribDivisor(6,1),e},ia=e=>{cr(e),ur(ra())},aa=()=>{let e=c.$mainAttachmentObject;c.bind(e),i.bindFramebuffer(i.READ_FRAMEBUFFER,He),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,null);let t=e.width,n=e.height;i.blitFramebuffer(0,0,t,n,0,0,t,n,i.COLOR_BUFFER_BIT,i.NEAREST),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,We),i.bindFramebuffer(i.FRAMEBUFFER,He)},oa=()=>{i.enable(i.BLEND),Jr()},sa=()=>{let e=c.currentAttachmentObject;e&&(e.mask=!0,e.clipLevel++,$t.set(e.clipLevel,e.clipLevel),Zt()||(Xt(!0),m(),i.enable(i.SAMPLE_ALPHA_TO_COVERAGE),i.stencilFunc(i.ALWAYS,0,255),i.stencilOp(i.ZERO,i.INVERT,i.INVERT),i.colorMask(!1,!1,!1,!1)))},ca=(e,t,n,r)=>{let i=c.currentAttachmentObject;if(!i)return;Qt.set(i.clipLevel,S(e,t,n,r));let a=Math.ceil(Math.abs(n-e)),o=Math.ceil(Math.abs(r-t));d(),s(e,i.height-t-o,a,o)},la=()=>{let e=c.currentAttachmentObject;if(!e)return;let t=e.clipLevel,n=Qt.get(t),r=n[0],a=n[1],o=n[2],l=n[3];Qt.delete(t),$t.delete(t),C(n);let u=Math.ceil(Math.abs(o-r)),p=Math.ceil(Math.abs(l-a));if(d(),s(r,e.height-a-p,u,p),--e.clipLevel,!e.clipLevel){e.mask=!1,Xt(!1),i.clear(i.STENCIL_BUFFER_BIT),h(),f(),$t.clear(),Qt.clear();return}i.stencilMask(1<{let a=_t(e,t,r);return i.texSubImage2D(i.TEXTURE_2D,0,0,0,e,t,i.RGBA,i.UNSIGNED_BYTE,n),a},da=()=>{if(vi.has(`pp`))return vi.get(`pp`);let e=new Sr(gi(),li());return vi.set(`pp`,e),e},fa=(e,t)=>{let n=ua(e.w,e.h,t),r=da();Ii(r,e.w,e.h),Jr(),Li(r),H(n)},pa=(e,t,n,r=!1)=>{let a=_t(e,t,r);return i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,n),a},ma=(e,t)=>{let n=pa(e.w,e.h,t),r=da();Ii(r,e.w,e.h),Jr(),Li(r),H(n)},ha=[],ga=(e,t,n,r,i,a)=>{let o=te();if(!o.length)return;yn.push(`bitmap`);let s=Cn(o);_n(s.buffer),vn.push(s.indexCount),ha.push(e,t,n,r,i,a)},_a=(e,t,n,r,i,a)=>{let o=te(!0);if(!o.length)return;yn.push(`bitmap`);let s=Xn(o);_n(s.buffer),vn.push(s.indexCount),ha.push(e,t,n,r,i,a)},va=()=>{let e=te(!0);if(!e.length)return;yn.push(`fill`);let t=Xn(e);_n(t.buffer),vn.push(t.indexCount)},ya=e=>{let t=e.toFixed(1);return`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\nuniform vec4 u_mediump;\n\nin vec2 v_coord;\nout vec4 o_color;\n\nvoid main() {\n vec2 offset = u_mediump.xy;\n float fraction = u_mediump.z;\n float samples = u_mediump.w;\n \n vec4 color = texture(u_texture, v_coord);\n\n for (float i = 1.0; i < ${t}; i += 1.0) {\n color += texture(u_texture, v_coord + offset * i);\n color += texture(u_texture, v_coord - offset * i);\n }\n color += texture(u_texture, v_coord + offset * ${t}) * fraction;\n color += texture(u_texture, v_coord - offset * ${t}) * fraction;\n color /= samples;\n\n o_color = color;\n}`},ba=new Map,xa=e=>{let t=`b${e}`;if(ba.has(t))return ba.get(t);let n=new Sr(mi(),ya(e));return ba.set(t,n),n},Sa=(e,t,n,r,i,a)=>{let o=e.mediump;r?(o[0]=1/t,o[1]=0):(o[0]=0,o[1]=1/n),o[2]=i,o[3]=a},Ca=(e,t,n)=>{Kt(e,!0);let r=Math.ceil(n*.5),i=1-(r-n*.5),a=1+n,o=xa(r);Sa(o,e.width,e.height,t,i,a),Li(o)},U={x:0,y:0},wa=(e,t,n)=>(e>>16)*(n?t:1)/255,Ta=(e,t,n)=>(e>>8&255)*(n?t:1)/255,Ea=(e,t,n)=>(e&255)*(n?t:1)/255,Da=[.5,1.05,1.4,1.55,1.75,1.9,2,2.15,2.2,2.3,2.5,3,3,3.5,3.5],Oa=(e,t,n=4,r=4,i=1,a=!0)=>{let o=c.currentAttachmentObject,s=Math.sqrt(t[0]*t[0]+t[1]*t[1]),l=Math.sqrt(t[2]*t[2]+t[3]*t[3]),u=F,d=s/u*n,f=l/u*r,p=Da[i-1],m=Math.round(d*p),h=Math.round(f*p);U.x+=m,U.y+=h;let g=e.width+m*2,_=e.height+h*2,v=1,y=1;d>128?v=.0625:d>64?v=.125:d>32?v=.25:d>16&&(v=.5),f>128?y=.0625:f>64?y=.125:f>32?y=.25:f>16&&(y=.5);let b=Math.ceil(g*v),x=Math.ceil(_*y),S=vt(b,x,!1),C=[S,vt(b,x,!1)];c.bind(S),c.reset(),c.setTransform(v,0,0,y,m*v,h*y),Kt(e);let w=Wi();Gi(w,e.width,e.height),Li(w),a&&H(e);let T=d*v,E=f*y,D=0,O=S.texture;Kt(O,!0),Vi();for(let e=0;e0){D=(D+1)%2;let e=C[D];c.bind(e),Ca(O,!0,T),O=e.texture}if(r>0){D=(D+1)%2;let e=C[D];c.bind(e),Ca(O,!1,E),O=e.texture}}if(Jr(),v!==1||y!==1){let e=vt(g,_,!1);c.bind(e),c.setTransform(1/v,0,0,1/y,0,0),Kt(O,!0),Gi(w,O.width,O.height),Li(w),O=e.texture,rt(C[0]),rt(C[1]),rt(e,!1)}else D=(D+1)%2,rt(C[D]),D=(D+1)%2,rt(C[D],!1);return o&&c.bind(o),O},ka=()=>`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_texture;\nuniform vec4 u_mediump[5];\n\nin vec2 v_coord;\nout vec4 o_color;\n\nvoid main() {\n mat4 mul = mat4(u_mediump[0], u_mediump[1], u_mediump[2], u_mediump[3]);\n vec4 add = u_mediump[4];\n \n vec4 color = texture(u_texture, v_coord);\n\n color.rgb /= max(0.0001, color.a);\n color = clamp(color * mul + add, 0.0, 1.0);\n color.rgb *= color.a;\n\n o_color = color;\n}`,Aa=()=>{if(ba.has(`m`))return ba.get(`m`);let e=new Sr(mi(),ka());return ba.set(`m`,e),e},ja=(e,t)=>{let n=e.mediump;n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[5],n[5]=t[6],n[6]=t[7],n[7]=t[8],n[8]=t[10],n[9]=t[11],n[10]=t[12],n[11]=t[13],n[12]=t[15],n[13]=t[16],n[14]=t[17],n[15]=t[18],n[16]=t[4]/255,n[17]=t[9]/255,n[18]=t[14]/255,n[19]=t[19]/255},Ma=(e,t)=>{let n=c.currentAttachmentObject,r=vt(e.width,e.height,!1);c.bind(r),c.reset(),c.setTransform(1,0,0,1,0,0),Kt(e),Jr();let i=Aa();ja(i,t),Li(i);let a=r.texture;return H(e),rt(r,!1),n&&c.bind(n),a},Na=(e,t,n=!1)=>{Gt(2,i.TEXTURE2,t,n),Gt(1,i.TEXTURE1,null),Gt(0,i.TEXTURE0,e,n)},Pa=(e,t,n,r=!1)=>{Gt(2,i.TEXTURE2,n,r),Gt(1,i.TEXTURE1,t,r),Gt(0,i.TEXTURE0,e,r)},Fa=()=>{Kr!==670&&(qr(670),i.blendFunc(i.DST_ALPHA,i.ZERO))},Ia=()=>{Kr!==673&&(qr(673),i.blendFunc(i.DST_ALPHA,i.ONE_MINUS_SRC_ALPHA))},La=e=>`\n vec2 base_scale = u_mediump[${e}].xy;\n vec2 base_offset = u_mediump[${e}].zw;\n\n vec2 uv = v_coord * base_scale - base_offset;\n vec4 base = mix(vec4(0.0), texture(u_textures[1], uv), isInside(uv));\n`,Ra=()=>`\n vec4 blur = texture(u_textures[0], v_coord);\n`,za=e=>`\n vec2 blur_scale = u_mediump[${e}].xy;\n vec2 blur_offset = u_mediump[${e}].zw;\n\n vec2 st = v_coord * blur_scale - blur_offset;\n vec4 blur = mix(vec4(0.0), texture(u_textures[0], st), isInside(st));\n`,Ba=e=>`\n float strength = u_mediump[${Math.floor(e/4)}][${e%4}];\n blur.a = clamp(blur.a * strength, 0.0, 1.0);\n`,Va=e=>`\n vec4 color = u_mediump[${e}];\n blur = color * blur.a;\n`,Ha=e=>`\n blur = texture(u_textures[${e?2:1}], vec2(blur.a, 0.5));\n`,Ua=(e,t,n,r,i,a)=>`\n ${e?`blur.a = 1.0 - blur.a;`:``}\n ${n?Ba(a):``}\n ${r?Ha(t):Va(i)}\n`,Wa=()=>`\n vec4 blur2 = texture(u_textures[0], 1.0 - v_coord);\n`,Ga=()=>`\n vec2 pq = (1.0 - v_coord) * blur_scale - blur_offset;\n vec4 blur2 = mix(vec4(0.0), texture(u_textures[0], pq), isInside(pq));\n`,Ka=e=>`\n float strength = u_mediump[${Math.floor(e/4)}][${e%4}];\n highlight_alpha *= strength;\n shadow_alpha *= strength;\n`,qa=e=>`\n vec4 highlight_color = u_mediump[${e}];\n vec4 shadow_color = u_mediump[${e+1}];\n blur = highlight_color * highlight_alpha + shadow_color * shadow_alpha;\n`,Ja=e=>`\n blur = texture(u_textures[${e?2:1}], vec2(\n 0.5019607843137255 - 0.5019607843137255 * shadow_alpha + 0.4980392156862745 * highlight_alpha,\n 0.5\n ));\n`,Ya=(e,t,n,r,i,a,o,s,c)=>{let l=0,u=n?La(l++):``,d=r?za(l++):Ra(),f=a===`inner`,p=l,m=l*4,h;c?h=i?Ua(!1,n,s,c,p,m):Xa(n,r,s,c,p,m):i?(m+=4,h=Ua(f,n,s,c,p,m)):(m+=8,h=Xa(n,r,s,c,p,m));let g;switch(a){case`outer`:g=o?`blur - blur * base.a`:`base + blur - blur * base.a`;break;case`full`:g=o?`blur`:`base - base * blur.a + blur`;break;default:g=`blur`}return`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_textures[${e}];\nuniform vec4 u_mediump[${t}];\n\nin vec2 v_coord;\nout vec4 o_color;\n\n${oi()}\n\nvoid main() {\n ${u}\n ${d}\n ${h}\n o_color = ${g};\n}`},Xa=(e,t,n,r,i,a)=>`\n ${t?Ga():Wa()}\n float highlight_alpha = blur.a - blur2.a;\n float shadow_alpha = blur2.a - blur.a;\n ${n?Ka(a):``}\n highlight_alpha = clamp(highlight_alpha, 0.0, 1.0);\n shadow_alpha = clamp(shadow_alpha, 0.0, 1.0);\n ${r?Ja(e):qa(i)}\n`,Za=(e,t,n,r,i,a,o)=>{let s=`f${e?`y`:`n`}${t?`y`:`n`}${n?`y`:`n`}${r}${i?`y`:`n`}${a?`y`:`n`}${o?`y`:`n`}`;if(ba.has(s))return ba.get(s);let c=1;e&&c++,o&&c++;let l=(e?4:0)+(t?4:0)+ +!!a;o||(l+=n?4:8),l=Math.ceil(l/4);let u=new Sr(mi(),Ya(c,l,e,t,n,r,i,a,o));return ba.set(s,u),u},Qa=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w)=>{let T;x?(T=e.textures,T[0]=0,T[1]=1,w&&(T[2]=2)):w&&(T=e.textures,T[0]=0,T[1]=2);let E=e.mediump,D=0;x&&(E[D++]=t/r,E[D++]=n/i,E[D++]=a/r,E[D++]=(n-i-o)/i),S&&(E[D++]=t/s,E[D++]=n/c,E[D++]=l/s,E[D++]=(n-c-u)/c),w||(d?(E[D++]=p,E[D++]=m,E[D++]=h,E[D++]=g):(E[D++]=p,E[D++]=m,E[D++]=h,E[D++]=g,E[D++]=_,E[D++]=v,E[D++]=y,E[D++]=b)),C&&(E[D]=f)},$a=new Map,eo=[],to=(e,t)=>{let n=eo.indexOf(e);for(n!==-1&&eo.splice(n,1);$a.size>=16&&eo.length>0;){let e=eo.shift();e&&$a.delete(e)}$a.set(e,t),eo.push(e)},no=e=>{let t=$a.get(e);if(t){let t=eo.indexOf(e);t!==-1&&(eo.splice(t,1),eo.push(e))}return t},ro=(e,t,n)=>{let r=``;for(let e=1;e{let n=`l${(`00`+e).slice(-3)}${t?`y`:`n`}`,r=no(n);if(r)return r;let i=Math.ceil(e*5/4),a=new Sr(mi(),ro(i,e,t));return to(n,a),a},ao=(e,t,n,r,i,a)=>{let o=e.mediump,s=0;for(let e=i;e>16)/255,o[s++]=(t>>8&255)/255,o[s++]=(t&255)/255,o[s++]=r[e]}for(let e=i;e{let n=tr();return rr(n),i.bindBuffer(i.ARRAY_BUFFER,n.vertexBuffer),or[0]=e,or[2]=e,or[4]=t,or[6]=t,i.bufferData(i.ARRAY_BUFFER,or,i.STATIC_DRAW),i.enableVertexAttribArray(0),i.vertexAttribPointer(0,2,i.FLOAT,!1,0,0),n},so,co=(e,t)=>(so?(or[0]!==e||or[4]!==t)&&(or[0]=e,or[2]=e,or[4]=t,or[6]=t,i.bindBuffer(i.ARRAY_BUFFER,so.vertexBuffer),i.bufferSubData(i.ARRAY_BUFFER,0,or)):so=oo(e,t),so),lo=(e,t,n)=>{e.useProgram(),e.bindUniform(),rr(co(t,n)),i.drawArrays(i.TRIANGLE_STRIP,0,4)},uo=new Map,fo=e=>e<=4?256:e<=8?512:1024,po=e=>{if(!uo.has(e)){let t=vt(e,1,!1);uo.set(e,t)}return uo.get(e)},mo=()=>po(512),ho=0,go=()=>ho,_o=e=>{ho=Math.floor(e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS)*.75)},vo=new Float32Array(256),yo=new Float32Array(256);for(let e=0;e<256;++e){let t=e/255;vo[e]=t**2.23333333,yo[e]=t}let bo=(e,t,n)=>{let r=c.currentAttachmentObject,i=mo();c.bind(i);let a=e.length;Vi();let o=go();for(let r=0;r{let O=c.currentAttachmentObject,k=vt(n,r,!1);c.bind(k);let A=m===`inner`,j=_!==null&&v!==null&&y!==null,M=null;if(j&&(M=bo(_,v,y)),A){c.reset(),c.setTransform(1,0,0,1,0,0),Kt(e,!0);let n=Fi();Ii(n,e.width,e.height),Li(n),j&&M?Na(t,M,!0):Kt(t,!0)}else j&&M?Pa(t,e,M,!0):Pi(t,e,!0);let N=!(A||m===`full`&&h),P=n!==l||r!==u||d!==0||f!==0,F=g!==1;A?h?Fa():Ia():Vi();let I=Za(N,P,p,m,h,F,j);Qa(I,n,r,i,a,o,s,l,u,d,f,p,g,b,x,S,C,w,T,E,D,N,P,F,j),Li(I);let ee=k.texture;return rt(k,!1),Jr(),O&&c.bind(O),ee},So=(e,t,n=0,r=1,i=4,a=4,o=1,s=1,l=!1,u=!1)=>{let d=c.currentAttachmentObject,f=e.width,p=e.height,m=U.x,h=U.y,g=Oa(e,t,i,a,s,!1),_=g.width,v=g.height,y=U.x,b=U.y,x=l?f:_,S=l?p:v,C=y-m,w=b-h,T=l?0:C,E=l?0:w,D=l?-C:0,O=l?-w:0,k=xo(e,g,x,S,f,p,T,E,_,v,D,O,!0,l?`inner`:`outer`,u,o,null,null,null,wa(n,r,!0),Ta(n,r,!0),Ea(n,r,!0),r,0,0,0,0);return H(e),H(g),d&&c.bind(d),k},Co=Math.PI/180,wo=(e,t,n=4,r=45,i=0,a=1,o=4,s=4,l=1,u=1,d=!1,f=!1,p=!1)=>{let m=c.currentAttachmentObject,h=e.width,g=e.height,_=U.x,v=U.y,y=Oa(e,t,o,s,u,!1),b=y.width,x=y.height,S=U.x,C=U.y,w=S-_,T=C-v,E=Math.sqrt(t[0]*t[0]+t[1]*t[1]),D=Math.sqrt(t[2]*t[2]+t[3]*t[3]),O=F,k=r*Co,A=Math.cos(k)*n*(E/O),j=Math.sin(k)*n*(D/O),M=d?h:b+Math.max(0,Math.abs(A)-w),N=d?g:x+Math.max(0,Math.abs(j)-T),P=Math.ceil(M),I=Math.ceil(N),ee=(P-M)/2,L=(I-N)/2,R=d?0:Math.max(0,w-A)+ee,z=d?0:Math.max(0,T-j)+L,te=d?A-S:(A>0?Math.max(0,A-w):0)+ee,ne=d?j-C:(j>0?Math.max(0,j-T):0)+L,re=``,ie;d?(re=`inner`,ie=f||p):!f&&p?(re=`full`,ie=!0):(re=`outer`,ie=f);let ae=xo(e,y,P,I,h,g,R,z,b,x,te,ne,!0,re,ie,l,null,null,null,wa(i,a,!0),Ta(i,a,!0),Ea(i,a,!0),a,0,0,0,0);return H(e),H(y),m&&c.bind(m),ae},To=Math.PI/180,Eo=(e,t,n=4,r=45,i=16777215,a=1,o=0,s=1,l=4,u=4,d=1,f=1,p=0,m=!1)=>{let h=e.width,g=e.height,_=U.x,v=U.y,y=Math.sqrt(t[0]*t[0]+t[1]*t[1]),b=Math.sqrt(t[2]*t[2]+t[3]*t[3]),x=F,S=r*To,C=Math.cos(S)*n*(y/x),w=Math.sin(S)*n*(b/x),T=c.currentAttachmentObject,E=vt(h,g,!1);c.bind(E),c.reset(),c.setTransform(1,0,0,1,0,0),Kt(e);let D=Fi();Ii(D,e.width,e.height),Li(D),c.setTransform(1,0,0,1,C*2,w*2),ea(),Ii(D,e.width,e.height),Li(D),Jr();let O=E.texture;T&&c.bind(T);let k=Oa(O,t,l,u,f,!1);rt(E);let A=k.width,j=k.height,M=Math.ceil(A+Math.abs(C)*2),N=Math.ceil(j+Math.abs(w)*2),P=``;switch(p){case 0:P=`full`;break;case 1:P=`inner`;break;case 2:P=`outer`}let I=P===`inner`,ee=I?h:M,L=I?g:N,R=Math.abs(C),z=Math.abs(w),te=(A-h)/2,ne=(j-g)/2,re=I?0:R+te,ie=I?0:z+ne,ae=I?-te-C:R-C,oe=I?-ne-w:z-w,se=xo(e,k,ee,L,h,g,re,ie,A,j,ae,oe,!1,P,m,d,null,null,null,wa(i,a,!0),Ta(i,a,!0),Ea(i,a,!0),a,wa(o,s,!0),Ta(o,s,!0),Ea(o,s,!0),s);return U.x=_+re,U.y=v+ie,H(e),H(k),se},Do=Math.PI/180,Oo=(e,t,n=4,r=45,i,a,o,s=4,l=4,u=1,d=1,f=0,p=!1)=>{let m=e.width,h=e.height,g=U.x,_=U.y,v=Math.sqrt(t[0]*t[0]+t[1]*t[1]),y=Math.sqrt(t[2]*t[2]+t[3]*t[3]),b=F,x=r*Do,S=Math.cos(x)*n*(v/b),C=Math.sin(x)*n*(y/b),w=c.currentAttachmentObject,T=vt(m,h,!1);c.bind(T),c.reset(),c.setTransform(1,0,0,1,0,0),Kt(e);let E=Fi();Ii(E,e.width,e.height),Li(E),c.setTransform(1,0,0,1,S*2,C*2),ea(),Ii(E,e.width,e.height),Li(E),Jr();let D=T.texture;w&&c.bind(w);let O=Oa(D,t,s,l,d,!1);rt(T);let k=O.width,A=O.height,j=Math.ceil(k+Math.abs(S)*2),M=Math.ceil(A+Math.abs(C)*2),N=``;switch(f){case 0:N=`full`;break;case 1:N=`inner`;break;case 2:N=`outer`}let P=N===`inner`,I=P?m:j,ee=P?h:M,L=Math.abs(S),R=Math.abs(C),z=(k-m)/2,te=(A-h)/2,ne=P?0:L+z,re=P?0:R+te,ie=P?-z-S:L-S,ae=P?-te-C:R-C,oe=xo(e,O,I,ee,m,h,ne,re,k,A,ie,ae,!1,N,p,u,o,i,a,0,0,0,0,0,0,0,0);return U.x=g+ne,U.y=_+re,H(e),H(O),oe},ko=Math.PI/180,Ao=(e,t,n=4,r=45,i,a,o,s=4,c=4,l=1,u=1,d=0,f=!1)=>{let p=e.width,m=e.height,h=U.x,g=U.y,_=Oa(e,t,s,c,u,!1),v=_.width,y=_.height,b=U.x,x=U.y,S=b-h,C=x-g,w=Math.sqrt(t[0]*t[0]+t[1]*t[1]),T=Math.sqrt(t[2]*t[2]+t[3]*t[3]),E=F,D=r*ko,O=Math.cos(D)*n*(w/E),k=Math.sin(D)*n*(T/E),A=d===1,j=A?p:v+Math.max(0,Math.abs(O)-S),M=A?m:y+Math.max(0,Math.abs(k)-C),N=Math.ceil(j),P=Math.ceil(M),I=(N-j)/2,ee=(P-M)/2,L=A?0:Math.max(0,S-O)+I,R=A?0:Math.max(0,C-k)+ee,z=A?O-b:(O>0?Math.max(0,O-S):0)+I,te=A?k-x:(k>0?Math.max(0,k-C):0)+ee,ne=``;switch(d){case 0:ne=`full`;break;case 1:ne=`inner`;break;case 2:ne=`outer`}let re=xo(e,_,N,P,p,m,L,R,v,y,z,te,!0,ne,f,l,o,i,a,0,0,0,0,0,0,0,0);return U.x=h+L,U.y=g+R,H(e),H(_),re},jo=(e,t,n,r,i)=>{let a=Math.floor(t*.5),o=Math.floor(n*.5),s=t*n,c=``,l=i?1:2;for(let e=0;e{let i=`c${(`0`+e).slice(-2)}${(`0`+t).slice(-2)}${n?`y`:`n`}${r?`y`:`n`}`;if(ba.has(i))return ba.get(i);let a=(r?1:2)+Math.ceil(e*t/4),o=new Sr(mi(),jo(a,e,t,n,r));return ba.set(i,o),o},No=(e,t,n,r,i,a,o,s,c,l,u)=>{let d=e.mediump;d[0]=1/t,d[1]=1/n,d[2]=1/i,d[3]=a/255;let f=4;o||(d[f++]=s,d[f++]=c,d[f++]=l,d[f++]=u);let p=r.length;for(let e=0;e{let d=c.currentAttachmentObject,f=e.width,p=e.height,m=vt(f,p,!1);c.bind(m),c.reset(),c.setTransform(1,0,0,1,0,0),Kt(e,!0),Jr();let h=Mo(t,n,o,s);No(h,f,p,r,i,a,s,wa(l,u,!1),Ta(l,u,!1),Ea(l,u,!1),u),Li(h);let g=m.texture;return H(e),rt(m,!1),d&&c.bind(d),g},Fo=(e,t,n,r)=>{let i,a,o;switch(t){case 1:i=`map_color.r`;break;case 2:i=`map_color.g`;break;case 4:i=`map_color.b`;break;case 8:i=`map_color.a`;break;default:i=`0.5`}switch(n){case 1:a=`map_color.r`;break;case 2:a=`map_color.g`;break;case 4:a=`map_color.b`;break;case 8:a=`map_color.a`;break;default:a=`0.5`}switch(r){case 0:o=`\n vec4 source_color = texture(u_textures[0], uv);\n`;break;case 3:o=`\n vec4 source_color =texture(u_textures[0], mix(v_coord, uv, step(abs(uv - vec2(0.5)), vec2(0.5))));\n`;break;case 1:o=`\n vec4 substitute_color = u_mediump[2];\n vec4 source_color = mix(substitute_color, texture(u_textures[0], uv), isInside(uv));\n`;break;default:o=`\n vec4 source_color = texture(u_textures[0], fract(uv));\n`}return`#version 300 es\nprecision mediump float;\n\nuniform sampler2D u_textures[2];\nuniform vec4 u_mediump[${e}];\n\nin vec2 v_coord;\nout vec4 o_color;\n\n${oi()}\n\nvoid main() {\n vec2 uv_to_st_scale = u_mediump[0].xy;\n vec2 uv_to_st_offset = u_mediump[0].zw;\n vec2 scale = u_mediump[1].xy;\n\n vec2 st = v_coord * uv_to_st_scale - uv_to_st_offset;\n vec4 map_color = texture(u_textures[1], st);\n\n vec2 offset = vec2(${i}, ${a}) - 0.5;\n vec2 uv = v_coord + offset * scale;\n ${o}\n\n o_color = mix(texture(u_textures[0], v_coord), source_color, isInside(st));\n}`},Io=(e,t,n)=>{let r=`d${e}${t}${n}`;if(ba.has(r))return ba.get(r);let i=n===1?3:2,a=new Sr(mi(),Fo(i,e,t,n));return ba.set(r,a),a},Lo=(e,t,n,r,i,a,o,s,c,l,u,d,f,p)=>{let m=e.textures;m[0]=0,m[1]=1;let h=e.mediump;h[0]=r/t,h[1]=i/n,h[2]=a/t,h[3]=(i-n-o)/n,h[4]=s/r,h[5]=-c/i,l===1&&(h[8]=u,h[9]=d,h[10]=f,h[11]=p)},Ro=(e,t,n=0,r=0,i=0,a=0,o=0,s=0,l=0,u=0,d=2,f=0,p=0)=>{let m=c.currentAttachmentObject,h=e.width,g=e.height,_=vt(h,g,!1);c.bind(_);let v=ua(n,r,t);Pi(e,v);let y=Io(o,s,d);Lo(y,n,r,n,r,i,a,l,u,d,wa(f,p,!0),Ta(f,p,!0),Ea(f,p,!0),p),Jr(),Li(y);let b=_.texture;return m&&c.bind(m),H(e),H(v),rt(_,!1),b},zo=(e,t,n,r)=>{let i=e.highp,a=c.$matrix;i[0]=a[0],i[1]=a[1],i[2]=a[3],i[3]=a[4],i[4]=a[6],i[5]=a[7],i[6]=n,i[7]=r,i[8]=j,i[9]=M;let o=e.mediump;o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=t[4],o[5]=t[5],o[6]=t[6],o[7]=t[7]},Bo=(e,t,n,r)=>{let i=c.currentAttachmentObject,a=e.width,o=e.height;switch(c.globalCompositeOperation){case`normal`:case`layer`:case`add`:case`screen`:case`alpha`:case`erase`:case`copy`:{c.bind(c.$mainAttachmentObject),c.setTransform(1,0,0,1,n,r);let i=Wi(!0);zo(i,t,a,o),Kt(e),ta(c.globalCompositeOperation),Li(i)}break;default:{let i=Bi(n,r,a,o),s=vt(a,o,!1);c.bind(s),Pi(i,e);let l=Ai(c.globalCompositeOperation,!0);Ui(l,t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7]),Li(l),c.bind(c.$mainAttachmentObject),c.reset(),c.setTransform(1,0,0,1,n,r),Hi(s.texture),H(i),rt(s)}}i&&c.bind(i),Jr()},Vo=[],Ho=e=>{e.size&&e.clear(),Vo.push(e)},Uo=()=>Vo.pop()||new Map,Wo=(e,t,n)=>{n.clear(),e.$timerId!==null&&clearTimeout(e.$timerId);for(let n of t.values()){for(let t of n.values())t&&e.destroy(t);Ho(n)}t.clear()},Go=(e,t)=>{if(!(!t||typeof t!=`object`)&&`canvas`in t){let n=t.canvas,r=n.width,i=n.height;t.clearRect(0,0,r+1,i+1),n.width=n.height=1,e.push(n)}},Ko=(e,t,n)=>{if(!e.has(t))return;let r=e.get(t);r.has(n)&&(r.delete(n),r.size||(Ho(r),e.delete(t)))},qo=(e,t,n)=>{if(!t.has(n))return;let r=t.get(n);for(let t of r.values())e.destroy(t);t.delete(n),Ho(r)},Jo=(e,t,n,r,i)=>{let a=t.get(r)||null;return a?(n.has(r)&&(n.delete(r),a.delete(`trash`)),e.$maxStoreSize>0&&(t.delete(r),t.set(r,a)),a.get(i)||null):null},Yo=(e,t,n,r,i=null)=>{t.has(n)||t.set(n,Uo());let a=t.get(n);if(i===null){if(!a.has(r))return;e.destroy(a.get(r)),a.delete(r),a.size||(t.delete(n),Ho(a));return}if(a.set(r,i),e.$maxStoreSize>0)for(t.delete(n),t.set(n,a);t.size>e.$maxStoreSize;){let r=t.keys().next().value;if(r===n)break;e.removeById(r),e.$removeIds.push(+r)}},Xo=(e,t,n=``)=>n?e.has(t)?e.get(t).has(n):!1:e.has(t),Zo=(e,t,n)=>{let r=2166136261,i=e*100|0;return r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619),i=t*100|0,r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619),n&&(i=n*100|0,r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619)),(r>>>0)%16777216},Qo=(e,t,n,r)=>{let i=2166136261,a=e*100|0;return i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=t*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=n*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=r*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),(i>>>0)%16777216},$o=(e,t,n,r)=>{if(n.has(r))return;let i=t.get(r);i&&(i.set(`trash`,!0),n.set(r,i),e.$timerId!==null&&clearTimeout(e.$timerId),e.$removeCache=!1,e.$timerId=setTimeout(()=>{e.$removeCache=!0,e.$timerId=null},1e3))},es=(e,t)=>{if(t.size){for(let[n,r]of t)r.has(`trash`)&&(e.removeById(n),e.$removeIds.push(+n));t.clear(),e.$removeCache=!1}},ts=(e,t,n)=>{if(!t.has(n))return;t.delete(n);let r=e.get(n);r&&r.delete(`trash`)},W=new class{_$pool;_$store;_$trash;$timerId;$removeCache;$removeIds;$maxStoreSize;constructor(){this._$pool=[],this._$store=new Map,this._$trash=new Map,this.$timerId=null,this.$removeIds=[],this.$removeCache=!1,this.$maxStoreSize=0}reset(){Wo(this,this._$store,this._$trash)}destroy(e=null){Go(this._$pool,e)}getCanvas(){return this._$pool.pop()||document.createElement(`canvas`)}remove(e,t){Ko(this._$store,e,t)}removeTimer(e){$o(this,this._$store,this._$trash,e)}cancelRemoveTimer(e){ts(this._$store,this._$trash,e)}removeTimerScheduledCache(){es(this,this._$trash)}removeById(e){qo(this,this._$store,e)}getById(e){let t=this._$store.get(e);return t&&this.$maxStoreSize>0&&(this._$store.delete(e),this._$store.set(e,t)),t}get(e,t){return Jo(this,this._$store,this._$trash,e,t)}set(e,t,n=null){Yo(this,this._$store,e,t,n)}has(e,t=``){return Xo(this._$store,e,t)}generateKeys(e,t,n){return Zo(e,t,n)}generateFilterKeys(e,t,n,r){return Qo(e,t,n,r)}},ns=new Float32Array(20),rs=(e,t,n,r,i,a,o,s,l,u,d)=>{let f=c.currentAttachmentObject,p=null,m=Math.sqrt(o[0]*o[0]+o[1]*o[1]),h=Math.sqrt(o[2]*o[2]+o[3]*o[3]),g=W.generateFilterKeys(o[0],o[1],o[2],o[3]),_=!1,v=W.get(t,`fKey`),y=W.get(t,`fTexture`);v===g&&y?n?H(y):(_=!0,p=y):y&&H(y);let b=0,x=0;if(_)b=W.get(t,`offsetX`),x=W.get(t,`offsetY`);else{p=Ni(e);let t=Math.atan2(o[1],o[0]),n=Math.atan2(-o[2],o[3]),s=a?m*Math.cos(t):Math.cos(t),l=a?m*Math.sin(t):Math.sin(t),u=a?-h*Math.sin(n):-Math.sin(n),g=a?h*Math.cos(n):Math.cos(n),_=O(s,l,u,g,r/2,i/2),v=O(1,0,0,1,-e.w/2,-e.h/2),y=ee(_,v);if(k(_),k(v),y[0]!==1||y[1]!==0||y[2]!==0||y[3]!==1){let e=vt(r,i,!1);c.bind(e),c.reset(),c.setTransform(y[0],y[1],y[2],y[3],y[4],y[5]),b=y[4],x=y[5],Kt(p);let t=Wi();Gi(t,p.width,p.height),Li(t),H(p),p=e.texture,rt(e,!1),f&&c.bind(f)}k(y),U.x=0,U.y=0;for(let e=0;d.length>e;)switch(d[e++]){case 0:p=Eo(p,o,d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],!!d[e++]);break;case 1:p=Oa(p,o,d[e++],d[e++],d[e++]);break;case 2:for(let t=0;t<20;++t)ns[t]=d[e++];p=Ma(p,ns);break;case 3:{let t=d[e++],n=d[e++],r=t*n,i=d.subarray(e,e+r);e+=r,p=Po(p,t,n,i,d[e++],d[e++],!!d[e++],!!d[e++],d[e++],d[e++])}break;case 4:{let t=d[e++],n=new Uint8Array(t);n.set(d.subarray(e,e+t)),e+=t,p=Ro(p,n,d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++])}break;case 5:p=wo(p,o,d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],!!d[e++],!!d[e++],!!d[e++]);break;case 6:p=So(p,o,d[e++],d[e++],d[e++],d[e++],d[e++],d[e++],!!d[e++],!!d[e++]);break;case 7:{let t=d[e++],n=d[e++],r=d[e++],i=d.subarray(e,e+r);e+=r,r=d[e++];let a=d.subarray(e,e+r);e+=r,r=d[e++];let s=d.subarray(e,e+r);e+=r,p=Oo(p,o,t,n,i,a,s,d[e++],d[e++],d[e++],d[e++],d[e++],!!d[e++])}break;case 8:{let t=d[e++],n=d[e++],r=d[e++],i=d.subarray(e,e+r);e+=r,r=d[e++];let a=d.subarray(e,e+r);e+=r,r=d[e++];let s=d.subarray(e,e+r);e+=r,p=Ao(p,o,t,n,i,a,s,d[e++],d[e++],d[e++],d[e++],d[e++],!!d[e++])}}}if(p){let e=F,t=u[0]*(m/e),n=u[1]*(h/e);c.reset(),c.setTransform(1,0,0,1,0,0),c.globalCompositeOperation=l,Bo(p,s,-b+t+o[4],-x+n+o[5])}_||(W.set(t,`fKey`,g),W.set(t,`fTexture`,p),W.set(t,`offsetX`,b),W.set(t,`offsetY`,x)),f&&c.bind(f)},is=[],as=(e,t)=>{c.drawArraysInstanced();let n=c.$mainAttachmentObject;is.push(n);let r=vt(e,t,!1);c.$mainAttachmentObject=r,c.bind(r)},os=new Float32Array(20),ss=(e,t,n,r,i,a,o,s,l=1,u=1)=>{c.drawArraysInstanced();let d=c.$mainAttachmentObject,f=null;if(r&&i&&a){f=Bi(0,0,d.width,d.height),c.$mainAttachmentObject=is.pop(),rt(d),c.bind(c.$mainAttachmentObject),U.x=0,U.y=0;for(let e=0;a.length>e;)switch(a[e++]){case 0:f=Eo(f,t,a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],!!a[e++]);break;case 1:f=Oa(f,t,a[e++],a[e++],a[e++]);break;case 2:for(let t=0;t<20;++t)os[t]=a[e++];f=Ma(f,os);break;case 3:{let t=a[e++],n=a[e++],r=t*n,i=a.subarray(e,e+r);e+=r,f=Po(f,t,n,i,a[e++],a[e++],!!a[e++],!!a[e++],a[e++],a[e++])}break;case 4:{let t=a[e++],n=new Uint8Array(t);n.set(a.subarray(e,e+t)),e+=t,f=Ro(f,n,a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++])}break;case 5:f=wo(f,t,a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],!!a[e++],!!a[e++],!!a[e++]);break;case 6:f=So(f,t,a[e++],a[e++],a[e++],a[e++],a[e++],a[e++],!!a[e++],!!a[e++]);break;case 7:{let n=a[e++],r=a[e++],i=a[e++],o=a.subarray(e,e+i);e+=i,i=a[e++];let s=a.subarray(e,e+i);e+=i,i=a[e++];let c=a.subarray(e,e+i);e+=i,f=Oo(f,t,n,r,o,s,c,a[e++],a[e++],a[e++],a[e++],a[e++],!!a[e++])}break;case 8:{let n=a[e++],r=a[e++],i=a[e++],o=a.subarray(e,e+i);e+=i,i=a[e++];let s=a.subarray(e,e+i);e+=i,i=a[e++];let c=a.subarray(e,e+i);e+=i,f=Ao(f,t,n,r,o,s,c,a[e++],a[e++],a[e++],a[e++],a[e++],!!a[e++])}}if(o){let e=W.get(o,`fTexture`);e&&H(e),W.set(o,`fKey`,s),W.set(o,`fTexture`,f)}if(f){let r=Math.sqrt(t[0]*t[0]+t[1]*t[1]),a=Math.sqrt(t[2]*t[2]+t[3]*t[3]),o=F,s=i[0]*(r/o),l=i[1]*(a/o);c.reset(),c.globalCompositeOperation=e,Bo(f,n,s+t[4],l+t[5])}}else f=Bi(0,0,d.width,d.height),c.$mainAttachmentObject=is.pop(),rt(d),c.bind(c.$mainAttachmentObject),f&&(c.reset(),c.globalCompositeOperation=e,Bo(f,n,t[4],t[5]),H(f));c.bind(c.$mainAttachmentObject)},cs=new Float32Array([1,1,1,1,0,0,0,0]),ls=e=>{c.drawArraysInstanced();let t=c.$mainAttachmentObject,n=t.texture;if(c.$mainAttachmentObject=is.pop(),rt(t,!1),n){let t=Dt();c.bind(t),c.beginNodeRendering(e),ta(`normal`);let r=t.height-e.y-e.h;c.setTransform(1,0,0,1,e.x,r);let i=Wi(!1);zo(i,cs,e.w,e.h),Kt(n),Li(i),c.endNodeRendering(),H(n)}c.bind(c.$mainAttachmentObject)},us=(e,t,n,r,i,a)=>{if(W.get(i,`fKey`)!==a)return;let o=W.get(i,`fTexture`);if(!o)return;let s=Math.sqrt(t[0]*t[0]+t[1]*t[1]),l=Math.sqrt(t[2]*t[2]+t[3]*t[3]),u=F,d=r[0]*(s/u),f=r[1]*(l/u);c.drawArraysInstanced(),c.reset(),c.globalCompositeOperation=e,Bo(o,n,d+t[4],f+t[5])},ds=e=>{let t=Rt(e.index),n=t[0],r=t[1],i=t[2],a=t[3];t[0]=Math.min(e.x,n),t[1]=Math.min(e.y,r),t[2]=Math.max(e.x+e.w+1,i),t[3]=Math.max(e.y+e.h+1,a)},fs=e=>{let t=`s${e?`y`:`n`}`;if(Cr.has(t))return Cr.get(t);let n=new Sr(Fr(e?9:0,!1,!1,e),Lr());return Cr.set(t,n),n},ps=(e,t)=>{let n=e.highp;n[0]=t[0],n[1]=t[1],n[2]=0,n[4]=t[2],n[5]=t[3],n[6]=0,n[8]=t[4],n[9]=t[5],n[10]=1,n[12]=t[6],n[13]=t[7],n[14]=0,n[16]=t[8],n[17]=t[9],n[18]=0,n[20]=t[10],n[21]=t[11],n[22]=1,n[3]=j,n[7]=M,n[11]=t[12],n[15]=t[13],n[19]=t[14],n[23]=t[15],n[24]=t[16],n[25]=t[17],n[26]=t[18],n[27]=t[19],n[28]=t[20],n[29]=t[21],n[30]=t[22],n[31]=t[23],n[32]=t[24],n[33]=t[25]},ms=0,hs=e=>{ms=e},gs=()=>{ms=0},_s=!0,vs=e=>{_s=e},ys=!1,bs=e=>{ys=e},xs=()=>{ms!==1&&(hs(1),i.stencilFunc(i.ALWAYS,0,255),i.stencilOpSeparate(i.FRONT,i.KEEP,i.KEEP,i.INCR_WRAP),i.stencilOpSeparate(i.BACK,i.KEEP,i.KEEP,i.DECR_WRAP)),_s&&(vs(!1),i.colorMask(!1,!1,!1,!1))},Ss=()=>{ms!==2&&(hs(2),i.stencilFunc(i.NOTEQUAL,0,255),i.stencilOp(i.KEEP,i.ZERO,i.ZERO)),_s||(vs(!0),i.colorMask(!0,!0,!0,!0))},Cs=()=>{ys||(bs(!0),i.enable(i.SAMPLE_ALPHA_TO_COVERAGE))},ws=()=>{ys&&(bs(!1),i.disable(i.SAMPLE_ALPHA_TO_COVERAGE))},Ts=(e,t,n,r)=>{xs();let i=!!r,a=Hr(i);r&&Ur(a,r),Cs(),Yr(a,e,t,n),ws(),Ss();let o=fs(i);r&&ps(o,r),Yr(o,e,t,n)},Es=(e,t,n,r,i)=>{let a=e.mediump,o=0;for(let e=n;e{let n=c.currentAttachmentObject,r=o[0],i=o[1],a=o[2],l=o[3];f();let u=t===0,p=e.length/5,m=fo(p),h=po(m);c.bind(h);let g=u?vo:yo;Vi();let _=go();for(let t=0;t`${e?`y`:`n`}${t?`y`:`n`}${t&&n?`y`:`n`}${`${r}`}`,As=e=>`\n vec2 focal = vec2(u_highp[${e}][1], 0.0);\n\n vec2 diff = coord - focal;\n float lenDiff = length(diff);\n vec2 dir = diff / lenDiff;\n float b = 2.0 * dot(dir, focal);\n float c = dot(focal, focal) - 1.0;\n float x = (-b + sqrt(max(b * b - 4.0 * c, 0.0))) * 0.5;\n\n float t = lenDiff / abs(x);`,js=()=>`float t = length(coord);`,Ms=(e,t)=>`\n float radius = u_highp[${e}][0];\n vec2 coord = p / radius;\n ${t?As(e):js()}\n`,Ns=e=>`\n vec2 a = u_highp[${e}].xy;\n vec2 b = u_highp[${e}].zw;\n\n vec2 ab = b - a;\n vec2 ap = p - a;\n\n float t = dot(ab, ap) / dot(ab, ab);`,Ps=(e,t,n,r,i)=>{let a=n?Ms(t,r):Ns(t),o;switch(i){case 0:o=`1.0 - abs(fract(t * 0.5) * 2.0 - 1.0)`;break;case 1:o=`fract(t)`;break;default:o=`clamp(t, 0.0, 1.0)`}return`#version 300 es\nprecision highp float;\n\nuniform sampler2D u_texture;\nuniform vec4 u_highp[${e}];\n\nin vec2 v_uv;\nout vec4 o_color;\n\nvoid main() {\n vec2 p = v_uv;\n ${a}\n t = ${o};\n o_color = texture(u_texture, vec2(t, 0.5));\n}`},Fs=(e,t,n,r)=>{let i=ks(r,e,t,n);if(Os.has(i))return Os.get(i);let a=(r?14:5)+1,o=a-1,s=new Sr(Fr(a,!0,!1,r),Ps(a,o,e,t,n));return Os.set(i,s),s},Is=(e,t,n,r,i=0,a=null,o=null)=>{let s=e.highp;s[0]=n[0],s[1]=n[1],s[2]=n[2],s[4]=n[3],s[5]=n[4],s[6]=n[5],s[8]=n[6],s[9]=n[7],s[10]=n[8],s[12]=r[0],s[13]=r[1],s[14]=r[2],s[16]=r[3],s[17]=r[4],s[18]=r[5],s[11]=r[6],s[15]=r[7],s[19]=r[8],s[3]=j,s[7]=M;let c=20;o&&(s[20]=o[0],s[21]=o[1],s[22]=0,s[24]=o[2],s[25]=o[3],s[26]=0,s[28]=o[4],s[29]=o[5],s[30]=1,s[32]=o[6],s[33]=o[7],s[34]=0,s[36]=o[8],s[37]=o[9],s[38]=0,s[40]=o[10],s[41]=o[11],s[42]=1,s[31]=o[12],s[35]=o[13],s[39]=o[14],s[43]=o[15],s[44]=o[16],s[45]=o[17],s[46]=o[18],s[47]=o[19],s[48]=o[20],s[49]=o[21],s[50]=o[22],s[51]=o[23],s[52]=o[24],s[53]=o[25],c=56),t===0?(s[c++]=a[0],s[c++]=a[1],s[c++]=a[2],s[c]=a[3]):(s[c++]=819.2,s[c]=g(i,-.975,.975,0))},Ls=()=>{gs(),vs(!0),bs(!1)},Rs=(e,t,n,r)=>{let a=Tn.shift(),o=Tn.shift(),s=Tn.shift(),l=Tn.shift();Ls(),h();let u=Ds(a,l);Kt(u),m(),i.stencilMask(255),xs();let d=!!r,f=Hr(d);r&&Ur(f,r),Cs(),Yr(f,e,t,n),ws(),Ss();let p=Fs(!1,!1,s,d),g=P(o),_=A(c.$matrix);Is(p,0,c.$matrix,_,0,g,r),C(g),k(_),Yr(p,e,t,n)},zs=(e,t,n,r)=>{let a=Tn.shift(),o=Tn.shift(),s=Tn.shift(),l=Tn.shift(),u=Tn.shift();Ls(),h();let d=Ds(a,l);Kt(d),m(),i.stencilMask(255),xs();let f=!!r,p=Hr(f);r&&Ur(p,r),Cs(),Yr(p,e,t,n),ws(),Ss(),c.save(),c.transform(o[0],o[1],o[2],o[3],o[4],o[5]);let g=c.$stack[c.$stack.length-1],_=A(c.$matrix),v=Fs(!0,!!u,s,f);Is(v,1,g,_,u,r),c.restore(),k(_),Yr(v,e,t,n)},Bs=new Map,Vs=(e,t)=>{let n=`b${e?`y`:`n`}${t?`y`:`n`}`;if(Bs.has(n))return Bs.get(n);let r=e?zr():Rr(),i=new Sr(Fr(t?14:5,!0,!1,t),r);return Bs.set(n,i),i},Hs=(e,t,n,r)=>{let i=e.highp,a=c.$stack[c.$stack.length-1];i[0]=a[0],i[1]=a[1],i[2]=a[2],i[4]=a[3],i[5]=a[4],i[6]=a[5],i[8]=a[6],i[9]=a[7],i[10]=a[8];let o=A(c.$matrix);i[12]=o[0],i[13]=o[1],i[14]=o[2],i[16]=o[3],i[17]=o[4],i[18]=o[5],i[11]=o[6],i[15]=o[7],i[19]=o[8],i[3]=j,i[7]=M,r&&(i[20]=r[0],i[21]=r[1],i[22]=0,i[24]=r[2],i[25]=r[3],i[26]=0,i[28]=r[4],i[29]=r[5],i[30]=1,i[32]=r[6],i[33]=r[7],i[34]=0,i[36]=r[8],i[37]=r[9],i[38]=0,i[40]=r[10],i[41]=r[11],i[42]=1,i[31]=r[12],i[35]=r[13],i[39]=r[14],i[43]=r[15],i[44]=r[16],i[45]=r[17],i[46]=r[18],i[47]=r[19],i[48]=r[20],i[49]=r[21],i[50]=r[22],i[51]=r[23],i[52]=r[24],i[53]=r[25]);let s=e.mediump;s[0]=t,s[1]=n},Us=(e,t,n,r)=>{xs();let i=!!r,a=Hr(i);r&&Ur(a,r),Cs(),Yr(a,e,t,n),ws();let o=ha.shift(),s=ha.shift(),l=ha.shift(),u=ha.shift(),d=ha.shift(),f=ha.shift(),p=ua(l,u,o,f);c.save(),c.transform(s[0],s[1],s[2],s[3],s[4],s[5]),Ss();let m=Vs(d,i);Hs(m,l,u,r),Yr(m,e,t,n),c.restore(),H(p)},Ws=()=>{let e=mr();m(),i.stencilMask(255),Ls();let t=0,n=null;for(let r=0;r{let n=zi(0,0,e,t);Kt(n),i.bindFramebuffer(i.FRAMEBUFFER,et),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,n.resource,0);let r=new Uint8Array(e*t*4),a=c.$mainAttachmentObject;r.byteLength>Gs&&(Gs=b(r.byteLength),i.bufferData(i.PIXEL_PACK_BUFFER,Gs,i.STREAM_READ)),i.readPixels(0,a.height-t,e,t,i.RGBA,i.UNSIGNED_BYTE,0);let o=i.fenceSync(i.SYNC_GPU_COMMANDS_COMPLETE,0);await new Promise(e=>{let t=()=>{if(i.clientWaitSync(o,i.SYNC_FLUSH_COMMANDS_BIT,0)===i.TIMEOUT_EXPIRED){requestAnimationFrame(t);return}return i.deleteSync(o),i.getBufferSubData(i.PIXEL_PACK_BUFFER,0,r),e()};t()}),i.bindFramebuffer(i.FRAMEBUFFER,He);for(let e=0;e0?e.float32Array4Pool.pop():new Float32Array(4)}static poolFloat32Array4(t){t.length===4&&e.float32Array4Pool.push(t)}};let Xs=null,Zs=e=>{Xs=e},Qs=()=>Ys.getFloat32Array4(),$s=e=>{Ys.poolFloat32Array4(e)},ec=(e,t,n,r)=>{let i=r.x-e.x,a=r.y-e.y,o=i*i+a*a;if(o<1e-10){let r=(t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y),i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y);return Math.max(r,i)}let s=(t.x-e.x)*a-(t.y-e.y)*i,c=s*s/o,l=(n.x-e.x)*a-(n.y-e.y)*i,u=l*l/o;return Math.max(c,u)},tc=(e,t,n,r)=>{let i={x:(e.x+t.x)*.5,y:(e.y+t.y)*.5},a={x:(t.x+n.x)*.5,y:(t.y+n.y)*.5},o={x:(n.x+r.x)*.5,y:(n.y+r.y)*.5},s={x:(i.x+a.x)*.5,y:(i.y+a.y)*.5},c={x:(a.x+o.x)*.5,y:(a.y+o.y)*.5},l={x:(s.x+c.x)*.5,y:(s.y+c.y)*.5};return{first:[e,i,s,l],second:[l,c,o,r]}},nc=(e,t,n,r,i=.25)=>{let a=[],o=(e,t,n,r,s)=>{if(ec(e,t,n,r)<=i||s>=8){let e={x:(t.x+n.x)*.5,y:(t.y+n.y)*.5};a.push({ctrl:e,end:r});return}let c=tc(e,t,n,r);o(c.first[0],c.first[1],c.first[2],c.first[3],s+1),o(c.second[0],c.second[1],c.second[2],c.second[3],s+1)};return o(e,t,n,r,0),a};var rc=class{$currentPath;$vertices;$currentX;$currentY;$startX;$startY;constructor(){this.$currentPath=[],this.$vertices=[],this.$currentX=0,this.$currentY=0,this.$startX=0,this.$startY=0}beginPath(){this.$currentPath=[],this.$vertices=[],this.$currentX=0,this.$currentY=0,this.$startX=0,this.$startY=0}moveTo(e,t){this.$currentPath.length>=6&&this.$vertices.push(this.$currentPath),this.$currentPath=[e,t,!1],this.$currentX=e,this.$currentY=t,this.$startX=e,this.$startY=t}lineTo(e,t){(e!==this.$currentX||t!==this.$currentY)&&(this.$currentPath.push(e,t,!1),this.$currentX=e,this.$currentY=t)}quadraticCurveTo(e,t,n,r){this.$currentPath.push(e,t,!0),this.$currentPath.push(n,r,!1),this.$currentX=n,this.$currentY=r}$flatnessThreshold=.25;bezierCurveTo(e,t,n,r,i,a){let o={x:this.$currentX,y:this.$currentY},s=nc(o,{x:e,y:t},{x:n,y:r},{x:i,y:a},this.$flatnessThreshold);for(let e of s)this.$currentPath.push(e.ctrl.x,e.ctrl.y,!0),this.$currentPath.push(e.end.x,e.end.y,!1);this.$currentX=i,this.$currentY=a}arc(e,t,n){let r=n,i=n*.5522847498307936;this.bezierCurveTo(e+r,t+i,e+i,t+r,e,t+r),this.bezierCurveTo(e-i,t+r,e-r,t+i,e-r,t),this.bezierCurveTo(e-r,t-i,e-i,t-r,e,t-r),this.bezierCurveTo(e+i,t-r,e+r,t-i,e+r,t);let a=this.$currentPath.length;a>=3&&(this.$currentPath[a-3]=this.$startX,this.$currentPath[a-2]=this.$startY),this.$currentX=this.$startX,this.$currentY=this.$startY}closePath(){this.$currentPath.length>=3&&(this.$currentX!==this.$startX||this.$currentY!==this.$startY)&&this.$currentPath.push(this.$startX,this.$startY,!1)}get $getVertices(){let e=[...this.$vertices];return this.$currentPath.length>=9&&e.push(this.$currentPath),e}getVerticesForStroke(){let e=[...this.$vertices];return this.$currentPath.length>=6&&e.push(this.$currentPath),e}reset(){this.$currentPath=[],this.$vertices=[],this.$currentX=0,this.$currentY=0,this.$startX=0,this.$startY=0}};let ic=(e,t,n,r)=>new Float32Array([e,t,0,0,e+n,t,1,0,e,t+r,0,1,e+n,t,1,0,e+n,t+r,1,1,e,t+r,0,1]),ac=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1),oc=(e,t,n,r)=>{let i=ac(n),a=t.get(i),o;return a&&a.length>0?(o=a.pop(),r&&e.queue.writeBuffer(o,0,r.buffer,r.byteOffset,r.byteLength)):r?(o=e.createBuffer({size:i,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(o.getMappedRange()).set(r),o.unmap()):o=e.createBuffer({size:i,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),o},sc=(e,t,n)=>{let r=Math.ceil(n/16)*16,i=t.get(r);return i&&i.length>0?i.pop():e.createBuffer({size:r,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST})},cc=(e,t)=>{let n=t.size,r=e.get(n);if(r||(r=[],e.set(n,r)),r.length>=32){t.destroy();return}r.push(t)},lc=(e,t)=>{let n=t.size,r=e.get(n);if(r||(r=[],e.set(n,r)),r.length>=32){t.destroy();return}r.push(t)},uc=(e,t)=>e.createBuffer({size:t.size,usage:t.usage|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.VERTEX,label:t.label||`storage_buffer`}),dc=(e,t,n,r)=>{let i=Math.ceil(n/256)*256,a=null,o=1/0;for(let e of t)if(!e.inUse&&e.size>=i){let t=e.size-i;t{for(let r=e.length-1;r>=0;r--){let i=e[r];!i.inUse&&t-i.lastUsedFrame>n&&(i.buffer.destroy(),e.splice(r,1))}},pc=(e,t,n,r=0,i=0)=>{let a=new Uint32Array([t,n,r,i]),o=e.createBuffer({size:a.byteLength,usage:GPUBufferUsage.INDIRECT|GPUBufferUsage.COPY_DST,mappedAtCreation:!0,label:`indirect_buffer`});return new Uint32Array(o.getMappedRange()).set(a),o.unmap(),o},mc=(e,t,n,r,i=0,a=0)=>{let o=new Uint32Array([n,r,i,a]);e.queue.writeBuffer(t,0,o)};var hc=class{device;buffer=null;offset=0;capacity;alignment=256;pendingDestroyBuffers=[];stagingBuffer;stagingFloat32;dirtyEnd=0;constructor(e,t=65536){this.device=e,this.capacity=t,this.stagingBuffer=new ArrayBuffer(t),this.stagingFloat32=new Float32Array(this.stagingBuffer)}resetFrame(){this.offset=0,this.dirtyEnd=0;for(let e of this.pendingDestroyBuffers)e.destroy();this.pendingDestroyBuffers.length=0}getBuffer(){return this.buffer||=this.device.createBuffer({size:this.capacity,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.buffer}allocate(e){this.buffer||this.getBuffer();let t=this.offset,n=e.byteLength;if(t+n>this.capacity){this.flush(),this.capacity*=2;let e=this.buffer;this.buffer=this.device.createBuffer({size:this.capacity,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),e&&this.pendingDestroyBuffers.push(e),this.stagingBuffer=new ArrayBuffer(this.capacity),this.stagingFloat32=new Float32Array(this.stagingBuffer)}this.stagingFloat32.set(e,t/4);let r=t+n;return r>this.dirtyEnd&&(this.dirtyEnd=r),this.offset=t+Math.ceil(n/this.alignment)*this.alignment,t}flush(){this.dirtyEnd>0&&this.buffer&&(this.device.queue.writeBuffer(this.buffer,0,this.stagingBuffer,0,this.dirtyEnd),this.dirtyEnd=0)}dispose(){this.buffer&&=(this.buffer.destroy(),null);for(let e of this.pendingDestroyBuffers)e.destroy();this.pendingDestroyBuffers.length=0}},gc=class{device;vertexBufferBuckets;uniformBufferBuckets;storageBufferPool;indirectBufferPool;frameIndirectBuffers;frameNumber;unitRectBuffer;frameVertexPoolBuffers;frameUniformPoolBuffers;dynamicUniform;constructor(e){this.device=e,this.vertexBufferBuckets=new Map,this.uniformBufferBuckets=new Map,this.storageBufferPool=[],this.indirectBufferPool=[],this.frameIndirectBuffers=[],this.frameNumber=0,this.unitRectBuffer=null,this.frameVertexPoolBuffers=[],this.frameUniformPoolBuffers=[],this.dynamicUniform=new hc(e)}createRectVertices(e,t,n,r){return ic(e,t,n,r)}acquireVertexBuffer(e,t){let n=oc(this.device,this.vertexBufferBuckets,e,t);return this.frameVertexPoolBuffers.push(n),n}acquireUniformBuffer(e){let t=sc(this.device,this.uniformBufferBuckets,e);return this.frameUniformPoolBuffers.push(t),t}acquireAndWriteUniformBuffer(e,t){let n=t??e.byteLength,r=this.acquireUniformBuffer(n);return this.device.queue.writeBuffer(r,0,e.buffer,e.byteOffset,n),r}dispose(){for(let e of this.vertexBufferBuckets.values())for(let t of e)t.destroy();this.vertexBufferBuckets.clear();for(let e of this.uniformBufferBuckets.values())for(let t of e)t.destroy();this.uniformBufferBuckets.clear();for(let e of this.storageBufferPool)e.buffer.destroy();this.storageBufferPool=[];for(let e of this.indirectBufferPool)e.destroy();this.indirectBufferPool=[];for(let e of this.frameIndirectBuffers)e.destroy();this.frameIndirectBuffers=[],this.unitRectBuffer&&=(this.unitRectBuffer.destroy(),null),this.frameVertexPoolBuffers.length=0,this.frameUniformPoolBuffers.length=0,this.dynamicUniform.dispose()}clearFrameBuffers(){for(let e of this.frameVertexPoolBuffers)cc(this.vertexBufferBuckets,e);this.frameVertexPoolBuffers.length=0;for(let e of this.frameUniformPoolBuffers)lc(this.uniformBufferBuckets,e);this.frameUniformPoolBuffers.length=0;for(let e of this.frameIndirectBuffers)this.indirectBufferPool.push(e);this.frameIndirectBuffers.length=0,this.releaseAllStorageBuffers(),this.dynamicUniform.resetFrame(),this.frameNumber++,this.frameNumber%60==0&&fc(this.storageBufferPool,this.frameNumber)}releaseAllStorageBuffers(){for(let e of this.storageBufferPool)e.inUse=!1}acquireStorageBuffer(e){return dc(this.device,this.storageBufferPool,e,this.frameNumber)}writeStorageBuffer(e,t){this.device.queue.writeBuffer(e,0,t.buffer,t.byteOffset,t.byteLength)}createIndirectBuffer(e,t,n=0,r=0){let i=this.indirectBufferPool.pop();return i?mc(this.device,i,e,t,n,r):i=pc(this.device,e,t,n,r),this.frameIndirectBuffers.push(i),i}getUnitRectBuffer(){if(!this.unitRectBuffer){let e=this.createRectVertices(0,0,1,1);this.unitRectBuffer=this.device.createBuffer({size:e.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.unitRectBuffer.getMappedRange()).set(e),this.unitRectBuffer.unmap()}return this.unitRectBuffer}};let _c=(e,t)=>{let n=e.createSampler({magFilter:`linear`,minFilter:`linear`,mipmapFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});t.set(`linear`,n);let r=e.createSampler({magFilter:`nearest`,minFilter:`nearest`,mipmapFilter:`nearest`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});t.set(`nearest`,r);let i=e.createSampler({magFilter:`nearest`,minFilter:`linear`,mipmapFilter:`nearest`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});t.set(`atlas_instanced_sampler`,i);let a=e.createSampler({magFilter:`linear`,minFilter:`linear`,mipmapFilter:`linear`,addressModeU:`repeat`,addressModeV:`repeat`});t.set(`repeat`,a)};var vc=class{device;textures;samplers;constructor(e){this.device=e,this.textures=new Map,this.samplers=new Map,_c(e,this.samplers)}createTexture(e,t,n,r=`rgba8unorm`){let i=this.device.createTexture({size:{width:t,height:n},format:r,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});return this.textures.set(e,i),i}getTexture(e){return this.textures.get(e)}createSampler(e,t=!0){let n=this.samplers.get(e);if(n)return n;let r=this.device.createSampler({magFilter:t?`linear`:`nearest`,minFilter:t?`linear`:`nearest`,mipmapFilter:t?`linear`:`nearest`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});return this.samplers.set(e,r),r}dispose(){for(let e of this.textures.values())e.destroy();this.textures.clear(),this.samplers.clear()}};let yc=(e,t,n,r,i,a,o,s,c)=>{let l=r===`atlas`||r.startsWith(`atlas_`),u=l||r.startsWith(`temp_`)?`rgba8unorm`:t,d=o||l&&!0,f=d?4:1,p=e.createTexture({size:{width:i,height:a},format:u,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.COPY_DST}),m=p.createView(),h={id:c.textureId++,resource:p,view:m,width:i,height:a,area:i*a,smooth:!0},g=null;if(d){let t=e.createTexture({size:{width:i,height:a},format:u,sampleCount:f,usage:GPUTextureUsage.RENDER_ATTACHMENT}),n=t.createView();g={id:c.textureId++,resource:t,view:n,width:i,height:a,area:i*a,smooth:!0}}let _=null,v=null;if(l||r===`main`||s){let t=e.createTexture({size:{width:i,height:a},format:`stencil8`,usage:GPUTextureUsage.RENDER_ATTACHMENT}),n=t.createView();if(_={id:c.stencilId++,resource:t,view:n,width:i,height:a,area:i*a,dirty:!1},d){let t=e.createTexture({size:{width:i,height:a},format:`stencil8`,sampleCount:f,usage:GPUTextureUsage.RENDER_ATTACHMENT}),n=t.createView();v={id:c.stencilId++,resource:t,view:n,width:i,height:a,area:i*a,dirty:!1}}}let y={id:c.nextId++,width:i,height:a,clipLevel:0,msaa:d,mask:s,color:null,texture:h,stencil:_,msaaTexture:g,msaaStencil:v};return n.set(r,y),y},bc=(e,t,n)=>{for(let[r,i]of e.entries())if(i.id===n.id){e.delete(r),t.push(i);break}},xc={r:0,g:0,b:0,a:0},Sc={view:null,clearValue:xc,loadOp:`clear`,storeOp:`store`},Cc={colorAttachments:[Sc]},wc=(e,t=0,n=0,r=0,i=0,a=`clear`,o=null)=>(Sc.view=e,xc.r=t,xc.g=n,xc.b=r,xc.a=i,Sc.loadOp=a,Sc.resolveTarget=o??void 0,Cc),Tc={view:null,clearValue:{r:0,g:0,b:0,a:0},loadOp:`load`,storeOp:`store`},Ec={view:null,stencilClearValue:0,stencilLoadOp:`clear`,stencilStoreOp:`store`},Dc={colorAttachments:[Tc],depthStencilAttachment:Ec},Oc=(e,t,n=`load`,r=`clear`,i=null)=>(Tc.view=e,Tc.loadOp=n,Tc.resolveTarget=i??void 0,Ec.view=t,Ec.stencilLoadOp=r,Dc),kc=(e,t,n)=>`${e}_${t}_${n}`,Ac=(e,t,n,r,i,a,o,s,c)=>{let l=kc(n,r,i),u=t.get(l);if(u)for(let e=0;e=s){let e=1/0,n=``,r=-1;for(let[i,a]of t)for(let t=0;t=0){let e=t.get(n);e[r].texture.destroy(),e.splice(r,1),e.length===0&&t.delete(n),c[0]--}}let d=e.createTexture({size:{width:n,height:r},format:i,usage:a}),f={texture:d,width:n,height:r,format:i,lastUsedFrame:o,inUse:!0};return u?u.push(f):t.set(l,[f]),c[0]++,d},jc=(e,t,n)=>{for(let r of e.values())for(let e=0;e{let i=t-n;for(let[t,n]of e){for(let e=n.length-1;e>=0;e--){let t=n[e];!t.inUse&&t.lastUsedFrame{let t=Pc.get(e);return t||(t=e.createView(),Pc.set(e,t)),t},Ic=new Map,Lc=0,Rc=new Map,zc=0,Bc=(e,t,n)=>{let r=`${t}_${n}`,i=Ic.get(r);return i&&i.length>0?(Lc--,i.pop()):e.createTexture({size:{width:t,height:n},format:`rgba8unorm`,usage:6})},Vc=e=>{let t=`${e.width}_${e.height}`,n=Ic.get(t);if(n||(n=[],Ic.set(t,n)),n.length>=32||Lc>=256){e.destroy();return}n.push(e),Lc++},Hc=(e,t,n)=>{let r=`${t}_${n}`,i=Rc.get(r);return i&&i.length>0?(zc--,i.pop()):e.createTexture({size:{width:t,height:n},format:`rgba8unorm`,usage:22})},Uc=e=>{let t=`${e.width}_${e.height}`,n=Rc.get(t);if(n||(n=[],Rc.set(t,n)),n.length>=32||zc>=256){e.destroy();return}n.push(e),zc++},Wc=()=>{for(let[,e]of Ic)for(let t of e)t.destroy();Ic.clear(),Lc=0;for(let[,e]of Rc)for(let t of e)t.destroy();Rc.clear(),zc=0};var Gc=class{device;format;attachments;currentAttachment;idCounter;texturePool;pendingReleases=[];constructor(e,t){this.device=e,this.format=t,this.attachments=new Map,this.currentAttachment=null,this.idCounter={nextId:1,textureId:1,stencilId:1},this.texturePool=new Nc(e)}beginFrame(){this.texturePool.beginFrame()}createAttachment(e,t,n,r=!1,i=!1){return yc(this.device,this.format,this.attachments,e,t,n,r,i,this.idCounter)}getAttachment(e){return this.attachments.get(e)}setCurrentAttachment(e){this.currentAttachment=e}getCurrentAttachment(){return this.currentAttachment}createRenderPassDescriptor(e,t=0,n=0,r=0,i=0,a=`clear`,o=null){return wc(e,t,n,r,i,a,o)}createStencilRenderPassDescriptor(e,t,n=`load`,r=`clear`,i=null){return Oc(e,t,n,r,i)}destroyAttachment(e){let t=this.attachments.get(e);t&&(t.texture&&t.texture.resource.destroy(),t.stencil&&t.stencil.resource.destroy(),this.attachments.delete(e))}createTemporaryAttachment(e,t){let n=`temp_${this.idCounter.nextId}`,r=GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.COPY_DST|GPUTextureUsage.STORAGE_BINDING,i=this.texturePool.acquire(e,t,`rgba8unorm`,r),a=Fc(i),o={id:this.idCounter.textureId++,resource:i,view:a,width:e,height:t,area:e*t,smooth:!0},s={id:this.idCounter.nextId++,width:e,height:t,clipLevel:0,msaa:!1,mask:!1,color:null,texture:o,stencil:null,msaaTexture:null,msaaStencil:null};return this.attachments.set(n,s),s}releaseTemporaryAttachment(e){bc(this.attachments,this.pendingReleases,e)}flushPendingReleases(){for(let e of this.pendingReleases)e.texture&&this.texturePool.release(e.texture.resource),e.msaaTexture&&e.msaaTexture.resource.destroy(),e.stencil&&e.stencil.resource.destroy(),e.msaaStencil&&e.msaaStencil.resource.destroy();this.pendingReleases=[]}dispose(){for(let e of this.attachments.values())e.texture&&e.texture.resource.destroy(),e.stencil&&e.stencil.resource.destroy();this.attachments.clear(),this.currentAttachment=null,this.texturePool.dispose()}};let Kc=`\nfn isInside(uv: vec2) -> f32 {\n let s = step(vec2(0.0), uv) * step(uv, vec2(1.0));\n return s.x * s.y;\n}`,qc=`\n const vertices = array, 6>(\n vec2(0.0, 0.0),\n vec2(1.0, 0.0),\n vec2(0.0, 1.0),\n vec2(0.0, 1.0),\n vec2(1.0, 0.0),\n vec2(1.0, 1.0)\n );`,Jc=`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n}`,Yc=e=>`\n${Jc}\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n\n const positions = array, 6>(\n vec2(-1.0, -1.0),\n vec2( 1.0, -1.0),\n vec2(-1.0, 1.0),\n vec2(-1.0, 1.0),\n vec2( 1.0, -1.0),\n vec2( 1.0, 1.0)\n );\n var texCoords = array, 6>(\n vec2(0.0, ${e?`1.0`:`0.0`}),\n vec2(1.0, ${e?`1.0`:`0.0`}),\n vec2(0.0, ${e?`0.0`:`1.0`}),\n vec2(0.0, ${e?`0.0`:`1.0`}),\n vec2(1.0, ${e?`1.0`:`0.0`}),\n vec2(1.0, ${e?`0.0`:`1.0`})\n );\n output.position = vec4(positions[vertexIndex], 0.0, 1.0);\n output.texCoord = texCoords[vertexIndex];\n return output;\n}\n`,Xc=Yc(!0),Zc=Yc(!1),Qc=Yc(!1),$c=`\nstruct PositionUniforms {\n offset: vec2,\n size: vec2,\n viewport: vec2,\n padding: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n}\n\n@group(0) @binding(0) var uniforms: PositionUniforms;\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n${qc}\n let vertex = vertices[vertexIndex];\n output.texCoord = vec2(vertex.x, 1.0 - vertex.y);\n var position = vertex * uniforms.size + uniforms.offset;\n position = position / uniforms.viewport;\n position = position * 2.0 - 1.0;\n output.position = vec4(position.x, -position.y, 0.0, 1.0);\n return output;\n}\n`,el=`\nstruct BitmapSyncUniforms {\n nodeRect: vec4,\n textureSize: vec2,\n padding: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n}\n\n@group(0) @binding(0) var uniforms: BitmapSyncUniforms;\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n${qc}\n let vertex = vertices[vertexIndex];\n let pixelPos = vec2(\n uniforms.nodeRect.x + vertex.x * uniforms.nodeRect.z,\n uniforms.nodeRect.y + vertex.y * uniforms.nodeRect.w\n );\n let ndc = pixelPos / uniforms.textureSize * 2.0 - 1.0;\n output.position = vec4(ndc.x, -ndc.y, 0.0, 1.0);\n output.texCoord = pixelPos / uniforms.textureSize;\n return output;\n}\n`,tl=e=>`\n\nstruct ScaleUniforms {\n matrix: vec4,\n translate: vec2,\n srcSize: vec2,\n dstSize: vec2,\n padding: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n}\n\n@group(0) @binding(0) var uniforms: ScaleUniforms;\n\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n${qc}\n let vertex = vertices[vertexIndex];\n output.texCoord = ${e?`vec2(vertex.x, 1.0 - vertex.y)`:`vertex`};\n\n var pos = vertex * uniforms.srcSize;\n let a = uniforms.matrix.x;\n let b = uniforms.matrix.y;\n let c = uniforms.matrix.z;\n let d = uniforms.matrix.w;\n let tx = uniforms.translate.x;\n let ty = uniforms.translate.y;\n let transformedX = pos.x * a + pos.y * c + tx;\n let transformedY = pos.x * b + pos.y * d + ty;\n var position = vec2(transformedX, transformedY) / uniforms.dstSize;\n position = position * 2.0 - 1.0;\n output.position = vec4(position.x, -position.y, 0.0, 1.0);\n\n return output;\n}\n`,nl=tl(!1),rl=tl(!0),il=tl(!1),al=e=>`\nstruct PositionUniforms {\n offset: vec2,\n size: vec2,\n viewport: vec2,\n padding: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n}\n\n@group(0) @binding(0) var uniforms: PositionUniforms;\n\n@vertex\nfn main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var output: VertexOutput;\n${qc}\n let vertex = vertices[vertexIndex];\n output.texCoord = ${e?`vec2(vertex.x, 1.0 - vertex.y)`:`vertex`};\n var position = vertex * uniforms.size + uniforms.offset;\n position = position / uniforms.viewport;\n position = position * 2.0 - 1.0;\n output.position = vec4(position.x, -position.y, 0.0, 1.0);\n return output;\n}\n`,ol=al(!1),sl=al(!0),cl=`\nstruct GradientUniforms {\n inverseMatrix: mat3x3,\n gradientType: f32,\n focal: f32,\n spread: f32,\n radius: f32,\n linearPoints: vec4,\n}\n\n@group(0) @binding(0) var gradient: GradientUniforms;\n@group(0) @binding(1) var gradientSampler: sampler;\n@group(0) @binding(2) var gradientTexture: texture_2d;\n\noverride GRADIENT_TYPE: u32 = 0u;\noverride SPREAD_MODE: u32 = 2u;\n\nfn applySpread(t: f32) -> f32 {\n if (SPREAD_MODE == 0u) {\n return 1.0 - abs(fract(t * 0.5) * 2.0 - 1.0);\n } else if (SPREAD_MODE == 1u) {\n return fract(t);\n } else {\n return clamp(t, 0.0, 1.0);\n }\n}\n`,ll=`\n var t: f32;\n if (GRADIENT_TYPE == 0u) {\n let a = gradient.linearPoints.xy;\n let b = gradient.linearPoints.zw;\n let ab = b - a;\n let ap = p - a;\n let dotAB = dot(ab, ab);\n if (dotAB < 0.0001) {\n t = 0.0;\n } else {\n t = dot(ab, ap) / dotAB;\n }\n } else {\n let r = gradient.radius;\n let coord = p / r;\n let focalRatio = gradient.focal;\n\n if (abs(focalRatio) < 0.001) {\n t = length(coord);\n } else {\n let focal = vec2(focalRatio, 0.0);\n let diff = coord - focal;\n let lenDiff = length(diff);\n\n if (lenDiff < 0.0001) {\n t = 0.0;\n } else {\n let dir = diff / lenDiff;\n\n // Solve quadratic equation for unit circle intersection (a=1 since dir is normalized)\n let b_coef = 2.0 * dot(dir, focal);\n let c_coef = dot(focal, focal) - 1.0;\n let discriminant = b_coef * b_coef - 4.0 * c_coef;\n let x = (-b_coef + sqrt(max(discriminant, 0.0))) * 0.5;\n t = lenDiff / abs(x);\n }\n }\n }\n t = applySpread(t);\n let gradientColor = textureSampleLevel(gradientTexture, gradientSampler, vec2(t, 0.5), 0);\n`,ul=`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) v_uv: vec2,\n @location(1) bezier: vec2,\n @location(2) color: vec4,\n}\n${cl}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let p = input.v_uv;\n${ll}\n let result = gradientColor * input.color;\n return vec4(result.rgb * result.a, result.a);\n}\n`,dl=`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) v_uv: vec2,\n @location(1) bezier: vec2,\n @location(2) color: vec4,\n}\n${cl}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let p = input.v_uv;\n${ll}\n return vec4(gradientColor.rgb * gradientColor.a, gradientColor.a);\n}\n`,fl=`\n${Jc}\n\nstruct CopyUniforms {\n scale: vec2,\n offset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n return textureSampleLevel(inputTexture, textureSampler, uv, 0);\n}\n`,pl=`\n${Jc}\n\nstruct CopyUniforms {\n scale: vec2,\n offset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let uv = (input.texCoord - uniforms.offset) * uniforms.scale;\n let clampedUv = clamp(uv, vec2(0.0), vec2(1.0));\n let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);\n let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;\n return select(vec4(0.0, 0.0, 0.0, 0.0), color, inBounds);\n}\n`,ml=`\n${Jc}\n\nstruct CopyUniforms {\n scale: vec2,\n offset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: CopyUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n let clampedUv = clamp(uv, vec2(0.0), vec2(1.0));\n let color = textureSampleLevel(inputTexture, textureSampler, clampedUv, 0);\n let inBounds = uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0;\n return select(vec4(0.0, 0.0, 0.0, 0.0), color, inBounds);\n}\n`,hl=`\n${Jc}\n\nstruct ColorTransformUniforms {\n mul: vec4,\n add: vec4,\n}\n\n@group(0) @binding(0) var ct: ColorTransformUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n\n color = vec4(color.rgb / max(vec3(0.0001), vec3(color.a)), color.a);\n color = clamp(color * ct.mul + ct.add, vec4(0.0), vec4(1.0));\n color = vec4(color.rgb * color.a, color.a);\n\n return color;\n}\n`,gl=`\n${Jc}\n\nstruct YFlipCTUniforms {\n scale: vec2,\n offset: vec2,\n mul: vec4,\n add: vec4,\n}\n\n@group(0) @binding(0) var uniforms: YFlipCTUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let uv = input.texCoord * uniforms.scale + uniforms.offset;\n var color = textureSampleLevel(inputTexture, textureSampler, uv, 0);\n\n color = vec4(color.rgb / max(vec3(0.0001), vec3(color.a)), color.a);\n color = clamp(color * uniforms.mul + uniforms.add, vec4(0.0), vec4(1.0));\n color = vec4(color.rgb * color.a, color.a);\n\n return color;\n}\n`,_l=`\n${Jc}\n\nstruct ColorMatrixUniforms {\n matrix: mat4x4,\n offset: vec4,\n}\n\n@group(0) @binding(0) var uniforms: ColorMatrixUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n var color = textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n\n color = vec4(color.rgb / max(vec3(0.0001), vec3(color.a)), color.a);\n var result = uniforms.matrix * color + uniforms.offset;\n result = clamp(result, vec4(0.0), vec4(1.0));\n result = vec4(result.rgb * result.a, result.a);\n\n return result;\n}\n`,vl=`\n${Jc}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n}\n`,yl=`\n${Jc}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n return textureSampleLevel(inputTexture, textureSampler, input.texCoord, 0);\n}\n`,bl=`\n${Jc}\n\noverride IS_INNER: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GlowUniforms {\n color: vec4,\n baseScale: vec2,\n baseOffset: vec2,\n blurScale: vec2,\n blurOffset: vec2,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var uniforms: GlowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d;\n@group(0) @binding(3) var baseTexture: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let baseColor = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blurColor = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n var rawAlpha = blurColor.a;\n if (IS_INNER == 1u) {\n rawAlpha = 1.0 - rawAlpha;\n }\n let glowAlpha = clamp(rawAlpha * uniforms.strength, 0.0, 1.0);\n let glowColor = vec4(uniforms.color.rgb * glowAlpha, uniforms.color.a * glowAlpha);\n if (IS_INNER == 1u) {\n let innerGlow = glowColor * baseColor.a;\n if (IS_KNOCKOUT == 1u) {\n return innerGlow;\n } else {\n return innerGlow + baseColor * (1.0 - glowColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n return glowColor * (1.0 - baseColor.a);\n } else {\n return baseColor + glowColor * (1.0 - baseColor.a);\n }\n }\n}\n`,xl=`\n${Jc}\n\noverride IS_INNER: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\noverride IS_HIDE_OBJECT: u32 = 0u;\n\nstruct DropShadowUniforms {\n color: vec4,\n baseScale: vec2,\n baseOffset: vec2,\n blurScale: vec2,\n blurOffset: vec2,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var uniforms: DropShadowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d;\n@group(0) @binding(3) var baseTexture: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let baseColor = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n var rawAlpha = blur.a;\n if (IS_INNER == 1u) {\n rawAlpha = 1.0 - rawAlpha;\n }\n let shadowAlpha = clamp(rawAlpha * uniforms.strength, 0.0, 1.0);\n let shadowColor = vec4(uniforms.color.rgb * shadowAlpha, uniforms.color.a * shadowAlpha);\n\n if (IS_INNER == 1u) {\n let innerShadow = shadowColor * baseColor.a;\n if (IS_KNOCKOUT == 1u) {\n return innerShadow;\n } else {\n return innerShadow + baseColor * (1.0 - shadowColor.a);\n }\n } else {\n if (IS_HIDE_OBJECT == 1u) {\n return shadowColor;\n } else if (IS_KNOCKOUT == 1u) {\n return shadowColor * (1.0 - baseColor.a);\n } else {\n return shadowColor * (1.0 - baseColor.a) + baseColor;\n }\n }\n}\n`,Sl=`\n${Jc}\n\noverride GLOW_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GradientGlowUniforms {\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2,\n baseOffset: vec2,\n blurScale: vec2,\n blurOffset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: GradientGlowUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d;\n@group(0) @binding(3) var baseTexture: texture_2d;\n@group(0) @binding(4) var gradientLUT: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n var blur = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n blur.a = clamp(blur.a * uniforms.strength, 0.0, 1.0);\n let glowColor = textureSampleLevel(gradientLUT, textureSampler, vec2(blur.a, 0.5), 0);\n var result: vec4;\n if (GLOW_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor;\n } else {\n result = base - base * glowColor.a + glowColor;\n }\n } else if (GLOW_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor * base.a;\n } else {\n result = glowColor * base.a + base * (1.0 - glowColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = glowColor - glowColor * base.a;\n } else {\n result = base + glowColor - glowColor * base.a;\n }\n }\n return result;\n}\n`,Cl=`\n${Jc}\n\noverride BEVEL_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct GradientBevelUniforms {\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2,\n baseOffset: vec2,\n blurScale: vec2,\n blurOffset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: GradientBevelUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d;\n@group(0) @binding(3) var baseTexture: texture_2d;\n@group(0) @binding(4) var gradientLUT: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur1 = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n let mirrorUV = (1.0 - input.texCoord) * uniforms.blurScale - uniforms.blurOffset;\n let blur2 = textureSampleLevel(blurTexture, textureSampler, mirrorUV, 0) * isInside(mirrorUV);\n\n var highlightAlpha = blur1.a - blur2.a;\n var shadowAlpha = blur2.a - blur1.a;\n highlightAlpha = clamp(highlightAlpha * uniforms.strength, 0.0, 1.0);\n shadowAlpha = clamp(shadowAlpha * uniforms.strength, 0.0, 1.0);\n\n let lutCoord = 0.5019607843137255 - 0.5019607843137255 * shadowAlpha + 0.4980392156862745 * highlightAlpha;\n let bevelColor = textureSampleLevel(gradientLUT, textureSampler, vec2(lutCoord, 0.5), 0);\n\n var result: vec4;\n if (BEVEL_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor;\n } else {\n result = base - base * bevelColor.a + bevelColor;\n }\n } else if (BEVEL_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor * base.a;\n } else {\n result = bevelColor * base.a + base * (1.0 - bevelColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor - bevelColor * base.a;\n } else {\n result = base + bevelColor - bevelColor * base.a;\n }\n }\n\n return result;\n}\n`,wl=`\n${Jc}\n\noverride BEVEL_TYPE: u32 = 0u;\noverride IS_KNOCKOUT: u32 = 0u;\n\nstruct BevelUniforms {\n highlightColor: vec4,\n shadowColor: vec4,\n strength: f32,\n _padding1: f32,\n _padding2: f32,\n _padding3: f32,\n baseScale: vec2,\n baseOffset: vec2,\n blurScale: vec2,\n blurOffset: vec2,\n}\n\n@group(0) @binding(0) var uniforms: BevelUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var blurTexture: texture_2d;\n@group(0) @binding(3) var baseTexture: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let baseUV = input.texCoord * uniforms.baseScale - uniforms.baseOffset;\n let base = textureSampleLevel(baseTexture, textureSampler, baseUV, 0) * isInside(baseUV);\n\n let blurUV = input.texCoord * uniforms.blurScale - uniforms.blurOffset;\n let blur1 = textureSampleLevel(blurTexture, textureSampler, blurUV, 0) * isInside(blurUV);\n\n let mirrorUV = (1.0 - input.texCoord) * uniforms.blurScale - uniforms.blurOffset;\n let blur2 = textureSampleLevel(blurTexture, textureSampler, mirrorUV, 0) * isInside(mirrorUV);\n\n var highlightAlpha = blur1.a - blur2.a;\n var shadowAlpha = blur2.a - blur1.a;\n highlightAlpha = clamp(highlightAlpha * uniforms.strength, 0.0, 1.0);\n shadowAlpha = clamp(shadowAlpha * uniforms.strength, 0.0, 1.0);\n\n let bevelColor = uniforms.highlightColor * highlightAlpha + uniforms.shadowColor * shadowAlpha;\n var result: vec4;\n if (BEVEL_TYPE == 0u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor;\n } else {\n result = base - base * bevelColor.a + bevelColor;\n }\n } else if (BEVEL_TYPE == 1u) {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor * base.a;\n } else {\n result = bevelColor * base.a + base * (1.0 - bevelColor.a);\n }\n } else {\n if (IS_KNOCKOUT == 1u) {\n result = bevelColor - bevelColor * base.a;\n } else {\n result = base + bevelColor - bevelColor * base.a;\n }\n }\n\n return result;\n}\n`,Tl=`\n${Jc}\n\nstruct BevelBaseUniforms {\n offset: vec2,\n _padding: vec2,\n}\n\n@group(0) @binding(0) var uniforms: BevelBaseUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var sourceTexture: texture_2d;\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let original = textureSampleLevel(sourceTexture, textureSampler, input.texCoord, 0);\n let shiftedUV = input.texCoord - uniforms.offset;\n let shifted = textureSampleLevel(sourceTexture, textureSampler, shiftedUV, 0) * isInside(shiftedUV);\n return original * (1.0 - shifted.a);\n}\n`;var G=class{static getFillVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n @location(1) color: vec4,\n}\n\nstruct FillUniforms {\n color: vec4,\n matrix0: vec4,\n matrix1: vec4,\n matrix2: vec4,\n}\n\n@group(0) @binding(0) var uniforms: FillUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);\n let transformed = matrix * vec3(input.position, 1.0);\n let ndc = transformed.xy * 2.0 - 1.0;\n output.position = vec4(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.bezier = input.bezier;\n output.color = uniforms.color;\n return output;\n}\n`}static getFillFragmentShader(){return`\nstruct FragmentInput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n @location(1) color: vec4,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4 {\n let f_val = input.bezier.x * input.bezier.x - input.bezier.y;\n let dx = dpdx(f_val);\n let dy = dpdy(f_val);\n\n if (input.bezier.x == 0.5 && input.bezier.y == 0.5) {\n return vec4(input.color.rgb * input.color.a, input.color.a);\n }\n\n let dist = f_val * inverseSqrt(dx * dx + dy * dy);\n let coverage = smoothstep(0.5, -0.5, dist);\n\n if (coverage <= 0.001) {\n discard;\n }\n\n let finalAlpha = input.color.a * min(coverage, 1.0);\n return vec4(input.color.rgb * finalAlpha, finalAlpha);\n}\n`}static getStencilWriteVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n}\n\nstruct FillUniforms {\n color: vec4,\n matrix0: vec4,\n matrix1: vec4,\n matrix2: vec4,\n}\n\n@group(0) @binding(0) var uniforms: FillUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);\n let transformed = matrix * vec3(input.position, 1.0);\n let ndc = transformed.xy * 2.0 - 1.0;\n output.position = vec4(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.bezier = input.bezier;\n return output;\n}\n`}static getStencilWriteFragmentShader(){return`\nstruct FragmentInput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4 {\n let f_val = input.bezier.x * input.bezier.x - input.bezier.y;\n let dx = dpdx(f_val);\n let dy = dpdy(f_val);\n let dist = f_val * inverseSqrt(dx * dx + dy * dy);\n let alpha = smoothstep(0.5, -0.5, dist);\n\n if (alpha <= 0.001) {\n discard;\n }\n\n return vec4(0.0, 0.0, 0.0, min(alpha, 1.0));\n}\n`}static getStencilFillVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) color: vec4,\n}\n\nstruct FillUniforms {\n color: vec4,\n matrix0: vec4,\n matrix1: vec4,\n matrix2: vec4,\n}\n\n@group(0) @binding(0) var uniforms: FillUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3(uniforms.matrix0.xyz, uniforms.matrix1.xyz, uniforms.matrix2.xyz);\n let transformed = matrix * vec3(input.position, 1.0);\n let ndc = transformed.xy * 2.0 - 1.0;\n output.position = vec4(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.color = uniforms.color;\n return output;\n}\n`}static getStencilFillFragmentShader(){return`\nstruct FragmentInput {\n @builtin(position) position: vec4,\n @location(0) color: vec4,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4 {\n let a = input.color.a;\n return vec4(input.color.r * a, input.color.g * a, input.color.b * a, a);\n}\n`}static getMaskVertexShader(){return`\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n}\n\nstruct Uniforms {\n viewportSize: vec2,\n _padding0: vec2,\n matrixCol0: vec3,\n _padding1: f32,\n matrixCol1: vec3,\n _padding2: f32,\n matrixCol2: vec3,\n _padding3: f32,\n}\n\n@group(0) @binding(0) var uniforms: Uniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3(uniforms.matrixCol0, uniforms.matrixCol1, uniforms.matrixCol2);\n let transformed = matrix * vec3(input.position, 1.0);\n let pos = transformed.xy;\n let ndc = pos * 2.0 - 1.0;\n output.position = vec4(ndc.x, -ndc.y, 0.0, 1.0);\n output.bezier = input.bezier;\n return output;\n}\n`}static getMaskFragmentShader(){return`\nstruct FragmentInput {\n @location(0) bezier: vec2,\n}\n\n@fragment\nfn main(input: FragmentInput) -> @location(0) vec4 {\n let px = dpdx(input.bezier);\n let py = dpdy(input.bezier);\n let f = (2.0 * input.bezier.x) * vec2(px.x, py.x) - vec2(px.y, py.y);\n let alpha = 0.5 - (input.bezier.x * input.bezier.x - input.bezier.y) / length(f);\n if (alpha <= 0.0) {\n discard;\n }\n return vec4(min(alpha, 1.0));\n}\n`}static getBasicVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) texCoord: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) color: vec4,\n}\n\nstruct Uniforms {\n matrix: mat3x3,\n color: vec4,\n alpha: f32,\n}\n\n@group(0) @binding(0) var uniforms: Uniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let pos = uniforms.matrix * vec3(input.position, 1.0);\n let ndc = pos.xy * 2.0 - 1.0;\n output.position = vec4(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n output.texCoord = input.texCoord;\n let premultipliedColor = vec4(\n uniforms.color.rgb * uniforms.color.a * uniforms.alpha,\n uniforms.color.a * uniforms.alpha\n );\n output.color = premultipliedColor;\n return output;\n}\n`}static getBasicFragmentShader(){return`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) color: vec4,\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n return input.color;\n}\n`}static getTextureFragmentShader(){return`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) color: vec4,\n}\n\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var textureData: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let textureColor = textureSampleLevel(textureData, textureSampler, input.texCoord, 0);\n return textureColor * input.color;\n}\n`}static getInstancedVertexShader(){return`\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) texCoord: vec2,\n}\n\nstruct InstanceInput {\n @location(2) textureRect: vec4,\n @location(3) textureDim: vec4,\n @location(4) matrixTx: vec4,\n @location(5) matrixScale: vec4,\n @location(6) mulColor: vec4,\n @location(7) addColor: vec4,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) mulColor: vec4,\n @location(2) addColor: vec4,\n}\n\n@vertex\nfn main(\n input: VertexInput,\n instance: InstanceInput,\n @builtin(instance_index) instanceIdx: u32\n) -> VertexOutput {\n var output: VertexOutput;\n let texX = instance.textureRect.x + input.texCoord.x * instance.textureRect.z;\n let texY = instance.textureRect.y + input.texCoord.y * instance.textureRect.w;\n output.texCoord = vec2(texX, texY);\n var pos = vec2(input.position.x, 1.0 - input.position.y);\n pos = pos * vec2(instance.textureDim.x, instance.textureDim.y);\n let scale0 = instance.matrixScale.x;\n let rotate0 = instance.matrixScale.y;\n let scale1 = instance.matrixScale.z;\n let rotate1 = instance.matrixScale.w;\n let transformedX = pos.x * scale0 + pos.y * scale1 + instance.matrixTx.x;\n let transformedY = pos.x * rotate0 + pos.y * rotate1 + instance.matrixTx.y;\n var position = vec2(transformedX, transformedY) / vec2(instance.textureDim.z, instance.textureDim.w);\n position = position * 2.0 - 1.0;\n output.position = vec4(position.x, -position.y, 0.0, 1.0);\n output.mulColor = instance.mulColor;\n output.addColor = instance.addColor;\n return output;\n}\n`}static getInstancedFragmentShader(){return`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) mulColor: vec4,\n @location(2) addColor: vec4,\n}\n\n@group(0) @binding(0) var textureSampler: sampler;\n@group(0) @binding(1) var textureData: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n var src = textureSample(textureData, textureSampler, input.texCoord);\n src = vec4(src.rgb / max(0.0001, src.a), src.a);\n src = clamp(src * input.mulColor + input.addColor, vec4(0.0), vec4(1.0));\n src = vec4(src.rgb * src.a, src.a);\n return src;\n}\n`}static getGradientFillVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) v_uv: vec2,\n @location(1) bezier: vec2,\n @location(2) color: vec4,\n}\n\nstruct GradientUniforms {\n inverseMatrix: mat3x3,\n gradientType: f32,\n focal: f32,\n spread: f32,\n radius: f32,\n linearPoints: vec4,\n color: vec4,\n contextMatrix0: vec4,\n contextMatrix1: vec4,\n contextMatrix2: vec4,\n}\n\n@group(0) @binding(0) var gradient: GradientUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let contextMatrix = mat3x3(gradient.contextMatrix0.xyz, gradient.contextMatrix1.xyz, gradient.contextMatrix2.xyz);\n let pos = contextMatrix * vec3(input.position, 1.0);\n let ndc = vec2(pos.x * 2.0 - 1.0, pos.y * 2.0 - 1.0);\n output.position = vec4(ndc.x, ndc.y * yFlipSign, 0.0, 1.0);\n let uvPos = gradient.inverseMatrix * vec3(input.position, 1.0);\n output.v_uv = uvPos.xy;\n output.bezier = input.bezier;\n output.color = gradient.color;\n return output;\n}\n`}static getGradientFillFragmentShader(){return ul}static getGradientFillStencilFragmentShader(){return dl}static getBitmapFillVertexShader(){return`\noverride yFlipSign: f32 = 1.0;\n\nstruct VertexInput {\n @location(0) position: vec2,\n @location(1) bezier: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n @location(1) color: vec4,\n @location(2) worldPos: vec2,\n}\n\nstruct BitmapUniforms {\n bitmapMatrix: mat3x3,\n width: f32,\n height: f32,\n repeat: f32,\n _pad: f32,\n color: vec4,\n contextMatrix0: vec4,\n contextMatrix1: vec4,\n contextMatrix2: vec4,\n}\n\n@group(0) @binding(0) var bitmap: BitmapUniforms;\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let matrix = mat3x3(bitmap.contextMatrix0.xyz, bitmap.contextMatrix1.xyz, bitmap.contextMatrix2.xyz);\n let transformedPos = matrix * vec3(input.position, 1.0);\n let clipX = transformedPos.x * 2.0 - 1.0;\n let clipY = (transformedPos.y * 2.0 - 1.0) * yFlipSign;\n output.position = vec4(clipX, clipY, 0.0, 1.0);\n output.bezier = input.bezier;\n output.color = bitmap.color;\n output.worldPos = input.position;\n return output;\n}\n`}static getBitmapFillFragmentShader(){return`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) bezier: vec2,\n @location(1) color: vec4,\n @location(2) worldPos: vec2,\n}\n\nstruct BitmapUniforms {\n bitmapMatrix: mat3x3,\n textureWidth: f32,\n textureHeight: f32,\n repeat: f32,\n _pad: f32,\n}\n\n@group(0) @binding(0) var uniforms: BitmapUniforms;\n@group(0) @binding(1) var bitmapSampler: sampler;\n@group(0) @binding(2) var bitmapTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let u = input.bezier.x;\n let v = input.bezier.y;\n if (abs(u - 0.5) > 0.001 || abs(v - 0.5) > 0.001) {\n let d = u * u - v;\n if (d > 0.0) {\n discard;\n }\n }\n let transformedPos = uniforms.bitmapMatrix * vec3(input.worldPos, 1.0);\n var uv = vec2(\n transformedPos.x / uniforms.textureWidth,\n transformedPos.y / uniforms.textureHeight\n );\n if (uniforms.repeat > 0.5) {\n uv = fract(uv);\n }\n let bitmapColor = textureSampleLevel(bitmapTexture, bitmapSampler, uv, 0);\n let alpha = bitmapColor.a * input.color.a;\n return vec4(bitmapColor.rgb * input.color.a, alpha);\n}\n`}static getBlendFragmentShader(){return`\nstruct VertexOutput {\n @builtin(position) position: vec4,\n @location(0) texCoord: vec2,\n @location(1) color: vec4,\n}\n\nstruct BlendUniforms {\n blendMode: f32,\n}\n\n@group(0) @binding(1) var blend: BlendUniforms;\n@group(0) @binding(2) var srcSampler: sampler;\n@group(0) @binding(3) var srcTexture: texture_2d;\n@group(0) @binding(4) var dstSampler: sampler;\n@group(0) @binding(5) var dstTexture: texture_2d;\n\nfn blendNormal(src: vec4, dst: vec4) -> vec4 {\n return src;\n}\n\nfn blendMultiply(src: vec4, dst: vec4) -> vec4 {\n return src * dst;\n}\n\nfn blendScreen(src: vec4, dst: vec4) -> vec4 {\n return src + dst - src * dst;\n}\n\nfn blendAdd(src: vec4, dst: vec4) -> vec4 {\n return min(src + dst, vec4(1.0));\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let src = textureSampleLevel(srcTexture, srcSampler, input.texCoord, 0);\n let dst = textureSampleLevel(dstTexture, dstSampler, input.texCoord, 0);\n var result: vec4;\n if (blend.blendMode < 0.5) {\n result = blendNormal(src, dst);\n } else if (blend.blendMode < 1.5) {\n result = blendMultiply(src, dst);\n } else if (blend.blendMode < 2.5) {\n result = blendScreen(src, dst);\n } else {\n result = blendAdd(src, dst);\n }\n return result * input.color;\n}\n`}static getBlurFilterVertexShader(){return Xc}static getBitmapSyncVertexShader(){return el}static getBitmapSyncFragmentShader(){return yl}static getBlurFilterFragmentShader(e){let t=e.toFixed(1);return`\n${Jc}\n\nstruct BlurUniforms {\n offset: vec2,\n fraction: f32,\n samples: f32,\n}\n\n@group(0) @binding(0) var uniforms: BlurUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var inputTexture: texture_2d;\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let offset = uniforms.offset;\n let fraction = uniforms.fraction;\n let samples = uniforms.samples;\n var color = textureSample(inputTexture, textureSampler, input.texCoord);\n for (var i: f32 = 1.0; i < ${t}; i += 1.0) {\n color += textureSample(inputTexture, textureSampler, input.texCoord + offset * i);\n color += textureSample(inputTexture, textureSampler, input.texCoord - offset * i);\n }\n color += textureSample(inputTexture, textureSampler, input.texCoord + offset * ${t}) * fraction;\n color += textureSample(inputTexture, textureSampler, input.texCoord - offset * ${t}) * fraction;\n color /= samples;\n return color;\n}\n`}static getTextureCopyFragmentShader(){return fl}static getBlurTextureCopyFragmentShader(){return pl}static getFilterOutputFragmentShader(){return ml}static getColorTransformFragmentShader(){return hl}static getYFlipColorTransformFragmentShader(){return gl}static getColorMatrixFilterFragmentShader(){return _l}static getGlowFilterFragmentShader(){return bl}static getDropShadowFilterFragmentShader(){return xl}static getGradientGlowFilterFragmentShader(){return Sl}static getGradientBevelFilterFragmentShader(){return Cl}static getBevelFilterFragmentShader(){return wl}static getBevelBaseFragmentShader(){return Tl}static getConvolutionFilterFragmentShader(e,t,n=!0,r=!0){let i=Math.floor(e*.5),a=Math.floor(t*.5),o=e*t,s=``;for(let e=0;e,\n rcpDivisor: f32,\n bias: f32,\n substituteColor: vec4,\n matrix: array, ${Math.ceil(o/4)}>,\n}\n\n@group(0) @binding(0) var uniforms: ConvolutionUniforms;\n@group(0) @binding(1) var sourceSampler: sampler;\n@group(0) @binding(2) var sourceTexture: texture_2d;\n\n${Jc}\n\n${Kc}\n\nfn getMatrixWeight(index: i32) -> f32 {\n let vecIndex = index / 4;\n let component = index % 4;\n let vec = uniforms.matrix[vecIndex];\n if (component == 0) { return vec.x; }\n else if (component == 1) { return vec.y; }\n else if (component == 2) { return vec.z; }\n else { return vec.w; }\n}\n\nfn getWeightedColor(i: i32, weight: f32) -> vec4 {\n let rcpSize = uniforms.rcpSize;\n let iDivX = i / ${e};\n let iModX = i - ${e} * iDivX;\n let offset = vec2(f32(iModX - ${i}), f32(${a} - iDivX));\n var uv = input.texCoord + offset * rcpSize;\n var color = textureSample(sourceTexture, sourceSampler, uv);\n color = vec4(color.rgb / max(0.0001, color.a), color.a);\n ${l}\n return color * weight;\n}\n\nvar input: VertexOutput;\n\n@vertex\nfn vs_main(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var positions = array, 6>(\n vec2(-1.0, -1.0),\n vec2(1.0, -1.0),\n vec2(-1.0, 1.0),\n vec2(-1.0, 1.0),\n vec2(1.0, -1.0),\n vec2(1.0, 1.0)\n );\n var texCoords = array, 6>(\n vec2(0.0, 1.0),\n vec2(1.0, 1.0),\n vec2(0.0, 0.0),\n vec2(0.0, 0.0),\n vec2(1.0, 1.0),\n vec2(1.0, 0.0)\n );\n var output: VertexOutput;\n output.position = vec4(positions[vertexIndex], 0.0, 1.0);\n output.texCoord = texCoords[vertexIndex];\n return output;\n}\n\n@fragment\nfn fs_main(fragInput: VertexOutput) -> @location(0) vec4 {\n input = fragInput;\n let rcpDivisor = uniforms.rcpDivisor;\n let bias = uniforms.bias;\n var result = vec4(0.0);\n ${s}\n result = clamp(result * rcpDivisor + bias, vec4(0.0), vec4(1.0));\n ${c}\n result = vec4(result.rgb * result.a, result.a);\n return result;\n}\n`}static getBlendModeIndex(e){switch(e){case`subtract`:return 0;case`multiply`:return 1;case`lighten`:return 2;case`darken`:return 3;case`overlay`:return 4;case`hardlight`:return 5;case`difference`:return 6;case`invert`:return 7;default:return 1}}static getUnifiedComplexBlendFragmentShader(){return`\n${Jc}\n\nstruct BlendUniforms {\n mulColor: vec4,\n addColor: vec4,\n blendMode: f32,\n _pad0: f32,\n _pad1: f32,\n _pad2: f32,\n}\n\n@group(0) @binding(0) var uniforms: BlendUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var dstTexture: texture_2d;\n@group(0) @binding(3) var srcTexture: texture_2d;\n\nfn blend(src: vec4, dst: vec4, mode: i32) -> vec4 {\n if (src.a == 0.0) { return dst; }\n if (dst.a == 0.0) { return src; }\n\n let a = src - src * dst.a;\n let b = dst - dst * src.a;\n\n if (mode == 1) {\n let c = src * dst;\n return a + b + c;\n }\n\n let srcRgb = src.rgb / src.a;\n let dstRgb = dst.rgb / dst.a;\n\n var blended: vec3;\n\n switch (mode) {\n case 0: {\n blended = dstRgb - srcRgb;\n }\n case 2: {\n blended = mix(srcRgb, dstRgb, step(srcRgb, dstRgb));\n }\n case 3: {\n blended = mix(srcRgb, dstRgb, step(dstRgb, srcRgb));\n }\n case 4: {\n let mul = srcRgb * dstRgb;\n let c1 = 2.0 * mul;\n let c2 = 2.0 * (srcRgb + dstRgb - mul) - 1.0;\n blended = mix(c1, c2, step(vec3(0.5), dstRgb));\n }\n case 5: {\n let mul = srcRgb * dstRgb;\n let c1 = 2.0 * mul;\n let c2 = 2.0 * (srcRgb + dstRgb - mul) - 1.0;\n blended = mix(c1, c2, step(vec3(0.5), srcRgb));\n }\n case 6: {\n blended = abs(srcRgb - dstRgb);\n }\n case 7: {\n let ib = dst - dst * src.a;\n let ic = vec4(src.a - dst.rgb * src.a, src.a);\n return ib + ic;\n }\n default: {\n blended = srcRgb;\n }\n }\n\n var c = vec4(blended, src.a * dst.a);\n c = vec4(c.rgb * c.a, c.a);\n return a + b + c;\n}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n var dst = textureSample(dstTexture, textureSampler, input.texCoord);\n var src = textureSample(srcTexture, textureSampler, input.texCoord);\n let mul = uniforms.mulColor;\n let add = uniforms.addColor;\n if (mul.x != 1.0 || mul.y != 1.0 || mul.z != 1.0 || mul.w != 1.0\n || add.x != 0.0 || add.y != 0.0 || add.z != 0.0) {\n src = vec4(src.rgb / max(vec3(0.0001), vec3(src.a)), src.a);\n src = clamp(src * mul + add, vec4(0.0), vec4(1.0));\n src = vec4(src.rgb * src.a, src.a);\n }\n return blend(src, dst, i32(uniforms.blendMode));\n}\n`}static getDisplacementMapFilterFragmentShader(e,t,n){let r,i;switch(e){case 1:r=`mapColor.r`;break;case 2:r=`mapColor.g`;break;case 4:r=`mapColor.b`;break;case 8:r=`mapColor.a`;break;default:r=`0.5`}switch(t){case 1:i=`mapColor.r`;break;case 2:i=`mapColor.g`;break;case 4:i=`mapColor.b`;break;case 8:i=`mapColor.a`;break;default:i=`0.5`}let a,o=!1;switch(n){case 0:a=`\nsourceColor = textureSample(srcTexture, textureSampler, uv);\n`;break;case 1:o=!0,a=`\nsourceColor = mix(uniforms.substituteColor, textureSample(srcTexture, textureSampler, uv), isInside(uv));\n`;break;case 2:a=`\nsourceColor = textureSample(srcTexture, textureSampler, fract(uv));\n`;break;case 3:a=`\nlet insideUV = step(abs(uv - vec2(0.5)), vec2(0.5));\nsourceColor = textureSample(srcTexture, textureSampler, mix(input.texCoord, uv, insideUV));\n`;break;default:a=`\nsourceColor = textureSample(srcTexture, textureSampler, fract(uv));\n`}return`\n${Jc}\n\n${o?`struct DisplacementUniforms {\n uvToStScale: vec2,\n uvToStOffset: vec2,\n scale: vec2,\n padding: vec2,\n substituteColor: vec4,\n}`:`struct DisplacementUniforms {\n uvToStScale: vec2,\n uvToStOffset: vec2,\n scale: vec2,\n padding: vec2,\n}`}\n\n@group(0) @binding(0) var uniforms: DisplacementUniforms;\n@group(0) @binding(1) var textureSampler: sampler;\n@group(0) @binding(2) var srcTexture: texture_2d;\n@group(0) @binding(3) var mapTexture: texture_2d;\n\n${Kc}\n\n@fragment\nfn main(input: VertexOutput) -> @location(0) vec4 {\n let stCoord = vec2(input.texCoord.x, 1.0 - input.texCoord.y);\n let st = stCoord * uniforms.uvToStScale - uniforms.uvToStOffset;\n let mapColor = textureSample(mapTexture, textureSampler, vec2(st.x, 1.0 - st.y));\n let offset = vec2(${r}, ${i}) - 0.5;\n let uv = input.texCoord + offset * uniforms.scale;\n var sourceColor: vec4;\n ${a}\n return mix(textureSample(srcTexture, textureSampler, input.texCoord), sourceColor, isInside(st));\n}\n`}static getNodeClearVertexShader(){return`\nstruct VertexInput {\n @location(0) position: vec2,\n}\n\nstruct VertexOutput {\n @builtin(position) position: vec4,\n}\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let ndc = input.position * 2.0 - 1.0;\n output.position = vec4(ndc.x, ndc.y, 0.0, 1.0);\n return output;\n}\n`}static getNodeClearFragmentShader(){return`\n@fragment\nfn main() -> @location(0) vec4 {\n return vec4(0.0, 0.0, 0.0, 0.0);\n}\n`}static getPositionedTextureVertexShader(){return $c}static getTextureScaleVertexShader(){return nl}static getTextureScaleBlendVertexShader(){return rl}static getComplexBlendScaleVertexShader(){return il}static getComplexBlendVertexShader(){return Zc}static getComplexBlendCopyVertexShader(){return Qc}static getComplexBlendOutputVertexShader(){return ol}static getFilterComplexBlendOutputVertexShader(){return sl}static getPositionedTextureFragmentShader(){return vl}};let El={arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:`float32x2`},{shaderLocation:1,offset:8,format:`float32x2`}]},Dl={color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}};var Ol=class{device;format;pipelines;bindGroupLayouts;sampleCount;shaderModuleCache=new Map;filterBindGroupLayouts=new Map;constructor(e,t){this.device=e,this.format=t,this.pipelines=new Map,this.bindGroupLayouts=new Map,this.sampleCount=4,this.initialize()}getOrCreateShaderModule(e,t){let n=this.shaderModuleCache.get(e);return n||(n=this.device.createShaderModule({code:t}),this.shaderModuleCache.set(e,n)),n}initialize(){this.createFillPipeline(),this.createStencilFillPipelines(),this.createClipPipeline(),this.createMaskUnionPipelines(),this.createMaskPipeline(),this.createBasicPipeline(),this.createTexturePipeline(),this.createInstancedPipeline(),this.createGradientPipeline(),this.createBitmapFillPipeline(),this.createBlendPipeline(),this.createNodeClearPipeline()}lazyInitGroups=new Set;lazyGroupMap=new Map([...Array.from({length:16},(e,t)=>[`blur_filter_${t+1}`,`blur_filter`]),[`blur_filter`,`blur_filter`],[`texture_copy`,`texture_copy`],[`texture_copy_rgba8`,`texture_copy`],[`texture_copy_rgba8_msaa`,`texture_copy`],[`color_transform`,`texture_copy`],[`y_flip_color_transform`,`texture_copy`],[`texture_erase`,`texture_copy`],[`blur_texture_copy`,`texture_copy`],[`filter_blend`,`texture_copy`],[`texture_copy_bgra`,`texture_copy`],[`filter_output`,`texture_copy`],[`filter_output_add`,`texture_copy`],[`filter_output_screen`,`texture_copy`],[`filter_output_alpha`,`texture_copy`],[`filter_output_erase`,`texture_copy`],[`texture_copy_bgra_msaa`,`texture_copy`],[`filter_output_msaa`,`texture_copy`],[`filter_output_add_msaa`,`texture_copy`],[`filter_output_screen_msaa`,`texture_copy`],[`filter_output_alpha_msaa`,`texture_copy`],[`filter_output_erase_msaa`,`texture_copy`],[`filter_output_masked`,`texture_copy`],[`filter_output_masked_msaa`,`texture_copy`],[`positioned_texture`,`texture_copy`],[`positioned_texture_rgba`,`texture_copy`],[`bitmap_render_msaa`,`texture_copy`],[`bitmap_render`,`texture_copy`],[`texture_scale`,`texture_copy`],[`texture_scale_blend`,`texture_copy`],[`bitmap_sync`,`bitmap_sync`],[`color_matrix_filter`,`filter`],[`bevel_base`,`filter`],[`glow_filter`,`filter`],[`drop_shadow_filter`,`filter`],[`bevel_filter`,`filter`],[`gradient_glow_filter`,`filter`],[`gradient_bevel_filter`,`filter`],[`complex_blend`,`complex_blend`],[`complex_blend_copy`,`complex_blend`],[`complex_blend_scale`,`complex_blend`],[`complex_blend_output`,`complex_blend`],[`complex_blend_output_msaa`,`complex_blend`],[`filter_complex_blend_output`,`complex_blend`],[`filter_complex_blend_output_msaa`,`complex_blend`]]);ensureLazyGroup(e){let t=this.lazyGroupMap.get(e);if(!(!t||this.lazyInitGroups.has(t)))switch(this.lazyInitGroups.add(t),t){case`blur_filter`:this.createBlurFilterPipeline();break;case`texture_copy`:this.createTextureCopyPipeline();break;case`bitmap_sync`:this.createBitmapSyncPipeline();break;case`filter`:this.createColorMatrixFilterPipeline();break;case`complex_blend`:this.createComplexBlendPipelines()}}preloadLazyGroups(){for(let e of[`blur_filter`,`texture_copy`,`bitmap_sync`,`filter`,`complex_blend`])this.ensureLazyGroup(e)}warmupLazyGroupsAsync(){let e=[`texture_copy`,`blur_filter`,`filter`,`complex_blend`,`bitmap_sync`],t=0,n=()=>{t>=e.length||(this.ensureLazyGroup(e[t++]),setTimeout(n,0))};setTimeout(n,0)}createFillPipeline(){let e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:`uniform`,hasDynamicOffset:!0}}]});this.bindGroupLayouts.set(`fill_dynamic`,e);let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`fillVertex`,G.getFillVertexShader()),r=this.getOrCreateShaderModule(`fillFragment`,G.getFillFragmentShader()),i=El,a=Dl,o=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[i]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:a}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilReadMask:0,stencilWriteMask:0},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}}),s=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[i],constants:{yFlipSign:-1}},fragment:{module:r,entryPoint:`main`,targets:[{format:this.format,blend:a}]},primitive:{topology:`triangle-list`,cullMode:`none`},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}});this.pipelines.set(`fill`,o),this.pipelines.set(`fill_bgra`,s);let c=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[i],constants:{yFlipSign:-1}},fragment:{module:r,entryPoint:`main`,targets:[{format:this.format,blend:a}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilReadMask:255,stencilWriteMask:0},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}});this.pipelines.set(`fill_bgra_stencil`,c)}createStencilFillPipelines(){let e=El,t=this.bindGroupLayouts.get(`fill_dynamic`),n=this.device.createPipelineLayout({bindGroupLayouts:[t]}),r=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilWriteVertex`,G.getStencilWriteVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilWriteFragment`,G.getStencilWriteFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,writeMask:0}]},primitive:{topology:`triangle-list`,cullMode:`none`,frontFace:`ccw`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`increment-wrap`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`decrement-wrap`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}});this.pipelines.set(`stencil_write`,r);let i=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilFillVertex`,G.getStencilFillVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilFillFragment`,G.getStencilFillFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`stencil_fill`,i);let a=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilWriteVertex`,G.getStencilWriteVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilWriteFragment`,G.getStencilWriteFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,writeMask:0}]},primitive:{topology:`triangle-list`,cullMode:`none`,frontFace:`ccw`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`increment-wrap`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`decrement-wrap`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}});this.pipelines.set(`stencil_write_atlas`,a);let o=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilWriteVertex`,G.getStencilWriteVertexShader()),entryPoint:`main`,buffers:[e],constants:{yFlipSign:-1}},fragment:{module:this.getOrCreateShaderModule(`stencilWriteFragment`,G.getStencilWriteFragmentShader()),entryPoint:`main`,targets:[{format:this.format,writeMask:0}]},primitive:{topology:`triangle-list`,cullMode:`none`,frontFace:`ccw`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`increment-wrap`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`decrement-wrap`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount,alphaToCoverageEnabled:!0}});this.pipelines.set(`stencil_write_main`,o);let s=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilFillVertex`,G.getStencilFillVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilFillFragment`,G.getStencilFillFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one`,operation:`max`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`stencil_fill_atlas`,s);let c=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilFillVertex`,G.getStencilFillVertexShader()),entryPoint:`main`,buffers:[e],constants:{yFlipSign:-1}},fragment:{module:this.getOrCreateShaderModule(`stencilFillFragment`,G.getStencilFillFragmentShader()),entryPoint:`main`,targets:[{format:this.format,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one`,operation:`max`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`stencil_fill_main`,c);let l=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilFillVertex`,G.getStencilFillVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilFillFragment`,G.getStencilFillFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`greater`,failOp:`keep`,depthFailOp:`replace`,passOp:`replace`},stencilBack:{compare:`greater`,failOp:`keep`,depthFailOp:`replace`,passOp:`replace`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`stencil_fill_masked`,l)}createClipPipeline(){let e=El,t=this.bindGroupLayouts.get(`fill_dynamic`),n=this.device.createPipelineLayout({bindGroupLayouts:[t]}),r=this.device.createRenderPipeline({layout:n,vertex:{module:this.getOrCreateShaderModule(`stencilWriteVertex`,G.getStencilWriteVertexShader()),entryPoint:`main`,buffers:[e]},fragment:{module:this.getOrCreateShaderModule(`stencilWriteFragment`,G.getStencilWriteFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,writeMask:0}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`zero`,depthFailOp:`invert`,passOp:`invert`},stencilBack:{compare:`always`,failOp:`zero`,depthFailOp:`invert`,passOp:`invert`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`clip_write`,r);let i=this.getOrCreateShaderModule(`stencilWriteVertex`,G.getStencilWriteVertexShader()),a=this.getOrCreateShaderModule(`stencilWriteFragment`,G.getStencilWriteFragmentShader());for(let t=1;t<=8;t++){let r=1<1&&this.pipelines.set(`texture_copy_rgba8_msaa`,this.createFullscreenQuadPipeline(t,n,r,`rgba8unorm`,{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}},this.sampleCount));let s=this.getOrCreateShaderModule(`colorTransformFragment`,G.getColorTransformFragmentShader());this.pipelines.set(`color_transform`,this.createFullscreenQuadPipeline(t,n,s,`rgba8unorm`,i));let c=this.getOrCreateShaderModule(`yFlipColorTransformFragment`,G.getYFlipColorTransformFragmentShader());this.pipelines.set(`y_flip_color_transform`,this.createFullscreenQuadPipeline(t,n,c,`rgba8unorm`,i));let l=this.getOrCreateShaderModule(`blurTextureCopyFragment`,G.getBlurTextureCopyFragmentShader());this.pipelines.set(`texture_erase`,this.createFullscreenQuadPipeline(t,n,l,`rgba8unorm`,o)),this.pipelines.set(`blur_texture_copy`,this.createFullscreenQuadPipeline(t,n,l,`rgba8unorm`,i)),this.pipelines.set(`filter_blend`,this.createFullscreenQuadPipeline(t,n,r,this.format,a)),this.pipelines.set(`texture_copy_bgra`,this.createFullscreenQuadPipeline(t,n,r,this.format,i));let u=this.getOrCreateShaderModule(`filterOutputFragment`,G.getFilterOutputFragmentShader());this.pipelines.set(`filter_output`,this.createFullscreenQuadPipeline(t,n,u,this.format,a));let d=[[`filter_output_add`,{color:{srcFactor:`one`,dstFactor:`one`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one`,operation:`add`}}],[`filter_output_screen`,{color:{srcFactor:`one`,dstFactor:`one-minus-src`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}],[`filter_output_alpha`,{color:{srcFactor:`zero`,dstFactor:`src-alpha`,operation:`add`},alpha:{srcFactor:`zero`,dstFactor:`src-alpha`,operation:`add`}}],[`filter_output_erase`,{color:{srcFactor:`zero`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`zero`,dstFactor:`one-minus-src-alpha`,operation:`add`}}]];for(let[e,r]of d)this.pipelines.set(e,this.createFullscreenQuadPipeline(t,n,u,this.format,r));let f={format:`stencil8`,stencilFront:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilReadMask:255,stencilWriteMask:0};if(this.pipelines.set(`filter_output_masked`,this.createFullscreenQuadPipeline(t,n,u,this.format,a,void 0,f)),this.sampleCount>1&&this.pipelines.set(`filter_output_masked_msaa`,this.createFullscreenQuadPipeline(t,n,u,this.format,{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}},this.sampleCount,f)),this.sampleCount>1){this.pipelines.set(`texture_copy_bgra_msaa`,this.createFullscreenQuadPipeline(t,n,r,this.format,{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}},this.sampleCount)),this.pipelines.set(`filter_output_msaa`,this.createFullscreenQuadPipeline(t,n,u,this.format,{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}},this.sampleCount));for(let[e,r]of d)this.pipelines.set(`${e}_msaa`,this.createFullscreenQuadPipeline(t,n,u,this.format,r,this.sampleCount))}this.createPositionedTexturePipeline(),this.createTextureScalePipeline()}createPositionedTexturePipeline(){let e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}}]});this.bindGroupLayouts.set(`positioned_texture`,e);let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`positionedTextureVertex`,G.getPositionedTextureVertexShader()),r=this.getOrCreateShaderModule(`positionedTextureFragment`,G.getPositionedTextureFragmentShader()),i=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:this.format,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}});this.pipelines.set(`positioned_texture`,i);let a=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}});this.pipelines.set(`positioned_texture_rgba`,a);let o=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},multisample:{count:4},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`}}});this.pipelines.set(`bitmap_render_msaa`,o);let s=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`}}});this.pipelines.set(`bitmap_render`,s)}createTextureScalePipeline(){let e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}}]});this.bindGroupLayouts.set(`texture_scale`,e);let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`textureScaleVertex`,G.getTextureScaleVertexShader()),r=this.getOrCreateShaderModule(`positionedTextureFragment`,G.getPositionedTextureFragmentShader()),i=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}});this.pipelines.set(`texture_scale`,i);let a=this.getOrCreateShaderModule(`textureScaleBlendVertex`,G.getTextureScaleBlendVertexShader()),o=this.device.createRenderPipeline({layout:t,vertex:{module:a,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}});this.pipelines.set(`texture_scale_blend`,o)}createBitmapSyncPipeline(){let e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:`filtering`}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:`float`}}]});this.bindGroupLayouts.set(`bitmap_sync`,e);let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`bitmapSyncVertex`,G.getBitmapSyncVertexShader()),r=this.getOrCreateShaderModule(`bitmapSyncFragment`,G.getBitmapSyncFragmentShader()),i=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`},multisample:{count:4}});this.pipelines.set(`bitmap_sync`,i)}createColorMatrixFilterPipeline(){let e={color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}},t={color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}};this.createFilterPipelineWithLayout(`color_matrix_filter`,G.getColorMatrixFilterFragmentShader(),1,e),this.createFilterPipelineWithLayout(`bevel_base`,G.getBevelBaseFragmentShader(),1,e),this.createFilterPipelineWithLayout(`glow_filter`,G.getGlowFilterFragmentShader(),2,t),this.createFilterPipelineWithLayout(`drop_shadow_filter`,G.getDropShadowFilterFragmentShader(),2,t),this.createFilterPipelineWithLayout(`bevel_filter`,G.getBevelFilterFragmentShader(),2,t),this.createFilterPipelineWithLayout(`gradient_glow_filter`,G.getGradientGlowFilterFragmentShader(),3,t),this.createFilterPipelineWithLayout(`gradient_bevel_filter`,G.getGradientBevelFilterFragmentShader(),3,t)}createComplexBlendPipelines(){let e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{}}]});this.bindGroupLayouts.set(`complex_blend`,e);let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`complexBlendVertex`,G.getComplexBlendVertexShader()),r=this.getOrCreateShaderModule(`unifiedComplexBlendFragment`,G.getUnifiedComplexBlendFragmentShader()),i=this.device.createRenderPipeline({layout:t,vertex:{module:n,entryPoint:`main`,buffers:[]},fragment:{module:r,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}});this.pipelines.set(`complex_blend`,i),this.createComplexBlendCopyPipeline(),this.createComplexBlendOutputPipeline()}createComplexBlendCopyPipeline(){let e={color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}},t=this.bindGroupLayouts.get(`texture_copy`);if(t){let n=this.device.createPipelineLayout({bindGroupLayouts:[t]}),r=this.getOrCreateShaderModule(`complexBlendCopyVertex`,G.getComplexBlendCopyVertexShader()),i=this.getOrCreateShaderModule(`textureCopyFragment`,G.getTextureCopyFragmentShader());this.pipelines.set(`complex_blend_copy`,this.createFullscreenQuadPipeline(n,r,i,`rgba8unorm`,e))}let n=this.bindGroupLayouts.get(`texture_scale`);if(n){let t=this.device.createPipelineLayout({bindGroupLayouts:[n]}),r=this.getOrCreateShaderModule(`complexBlendScaleVertex`,G.getComplexBlendScaleVertexShader()),i=this.getOrCreateShaderModule(`positionedTextureFragment`,G.getPositionedTextureFragmentShader());this.pipelines.set(`complex_blend_scale`,this.createFullscreenQuadPipeline(t,r,i,`rgba8unorm`,e))}}createComplexBlendOutputPipeline(){let e=this.bindGroupLayouts.get(`positioned_texture`);if(!e)return;let t=this.device.createPipelineLayout({bindGroupLayouts:[e]}),n=this.getOrCreateShaderModule(`positionedTextureFragment`,G.getPositionedTextureFragmentShader()),r={color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}},i=this.getOrCreateShaderModule(`complexBlendOutputVertex`,G.getComplexBlendOutputVertexShader());this.pipelines.set(`complex_blend_output`,this.createFullscreenQuadPipeline(t,i,n,this.format,r)),this.sampleCount>1&&this.pipelines.set(`complex_blend_output_msaa`,this.createFullscreenQuadPipeline(t,i,n,this.format,r,this.sampleCount));let a=this.getOrCreateShaderModule(`filterComplexBlendOutputVertex`,G.getFilterComplexBlendOutputVertexShader());this.pipelines.set(`filter_complex_blend_output`,this.createFullscreenQuadPipeline(t,a,n,this.format,r)),this.sampleCount>1&&this.pipelines.set(`filter_complex_blend_output_msaa`,this.createFullscreenQuadPipeline(t,a,n,this.format,r,this.sampleCount))}createFilterPipelineWithLayout(e,t,n,r){let i=this.filterBindGroupLayouts.get(n);if(!i){let e=[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}];for(let t=0;t1&&(s.multisample={count:a}),o&&(s.depthStencil=o),this.device.createRenderPipeline(s)}getPipeline(e){let t=this.pipelines.get(e);return t||=(this.ensureLazyGroup(e),this.pipelines.get(e)),t}getFilterPipeline(e,t){let n=`${e}_${Object.keys(t).sort().map(e=>`${e}${t[e]}`).join(`_`)}`,r=this.pipelines.get(n);if(r)return r;this.ensureLazyGroup(e);let i=this.shaderModuleCache.get(`filter_${e}`),a=this.shaderModuleCache.get(`blurFilterVertex`),o=this.bindGroupLayouts.get(e);if(!i||!a||!o)return this.pipelines.get(e);let s=this.device.createPipelineLayout({bindGroupLayouts:[o]});return r=this.device.createRenderPipeline({layout:s,vertex:{module:a,entryPoint:`main`,buffers:[]},fragment:{module:i,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}],constants:t},primitive:{topology:`triangle-list`,cullMode:`none`}}),this.pipelines.set(n,r),r}getGradientPipeline(e,t,n){let r=`${e}_t${t}s${n}`,i=this.pipelines.get(r);return i||(this.gradientPipelineLayout?(i=this.createGradientVariant(e,t,n),i?(this.pipelines.set(r,i),i):this.getPipeline(e)):this.getPipeline(e))}gradientPipelineLayout=null;gradientVertexShaderModule=null;gradientFragmentShaderModule=null;gradientStencilFragmentShaderModule=null;createGradientVariant(e,t,n){if(!this.gradientPipelineLayout)return;let r={GRADIENT_TYPE:t,SPREAD_MODE:n},i=El,a=Dl,o=e.includes(`stencil_atlas`)||e===`gradient_fill_stencil_main`?this.gradientStencilFragmentShaderModule:this.gradientFragmentShaderModule,s=e.includes(`bgra`)||e===`gradient_fill_stencil_main`?this.format:`rgba8unorm`,c=e.includes(`bgra`)||e===`gradient_fill_stencil_main`,l={};c&&(l.yFlipSign=-1);let u,d=this.sampleCount;e.includes(`stroke`)?u={format:`stencil8`,stencilFront:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`always`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilReadMask:0,stencilWriteMask:0}:e===`gradient_fill_stencil`||e===`gradient_fill_stencil_atlas`?u={format:`stencil8`,stencilFront:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255}:e===`gradient_fill_stencil_main`?(u={format:`stencil8`,stencilFront:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`not-equal`,failOp:`keep`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255},d=1):e===`gradient_fill_bgra_stencil`?u={format:`stencil8`,stencilFront:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilBack:{compare:`equal`,failOp:`keep`,depthFailOp:`keep`,passOp:`keep`},stencilReadMask:255,stencilWriteMask:0}:e===`gradient_fill_bgra_no_msaa`&&(d=1);let f={layout:this.gradientPipelineLayout,vertex:{module:this.gradientVertexShaderModule,entryPoint:`main`,buffers:[i],constants:Object.keys(l).length>0?l:void 0},fragment:{module:o,entryPoint:`main`,targets:[{format:s,blend:a}],constants:r},primitive:{topology:`triangle-list`,cullMode:`none`},multisample:{count:d}};return u&&(f.depthStencil=u),this.device.createRenderPipeline(f)}getBindGroupLayout(e){let t=this.bindGroupLayouts.get(e);return t||=(this.ensureLazyGroup(e),this.bindGroupLayouts.get(e)),t}createNodeClearPipeline(){let e=this.device.createRenderPipeline({layout:`auto`,vertex:{module:this.getOrCreateShaderModule(`nodeClearVertex`,G.getNodeClearVertexShader()),entryPoint:`main`,buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:`float32x2`}]}]},fragment:{module:this.getOrCreateShaderModule(`nodeClearFragment`,G.getNodeClearFragmentShader()),entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`zero`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`zero`,operation:`add`}},writeMask:GPUColorWrite.ALL}]},primitive:{topology:`triangle-list`,cullMode:`none`},depthStencil:{format:`stencil8`,stencilFront:{compare:`always`,failOp:`zero`,depthFailOp:`zero`,passOp:`zero`},stencilBack:{compare:`always`,failOp:`zero`,depthFailOp:`zero`,passOp:`zero`},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.sampleCount}});this.pipelines.set(`node_clear_atlas`,e)}dispose(){this.pipelines.clear(),this.bindGroupLayouts.clear(),this.shaderModuleCache.clear(),this.filterBindGroupLayouts.clear()}};let kl=Number.MAX_VALUE,Al=-Number.MAX_VALUE,jl=0,Ml=e=>{jl=e},Nl=()=>jl,Pl=[],Fl=e=>{Pl[jl]=e},Il=null,Ll=e=>{Il=e},Rl=()=>{let e=Pl[jl];if(!e){if(!Il)return null;e=Il(jl),Fl(e)}return e},zl=e=>Pl[e]??null,Bl=[],Vl=[],Hl=()=>{for(let e=0;e{Ul=e},Gl=()=>Ul,Kl=()=>{Bl.length=0,Ml(0);for(let e=0;e{Jl=e},Xl=new Set([`normal`,`layer`,`add`,`screen`,`alpha`,`erase`,`copy`]),Zl=[],Ql=[],$l=[],eu=()=>Zl,tu=()=>{for(let e=0;e{let e=`blend_instanced`;return nu.has(e)||nu.set(e,new ql),nu.get(e)},iu=(e,t,n,r,i,a,o,s,c,l,u,d)=>{let f=a[0],p=a[1],m=a[2],h=d,g=a[4]/255,_=a[5]/255,v=a[6]/255;if(Xl.has(s)){(Jl!==s||Gl()!==e.index)&&(Xs&&(Ml(Gl()),Xs.drawArraysInstanced()),Yl(s),Wl(e.index),Ml(e.index));let t=ru();fi.pushInstanceBuffer((e.x+.5)/u,(e.y+.5)/u,(e.w-1)/u,(e.h-1)/u,e.w,e.h,c,l,o[6],o[7],0,0,o[0],o[1],o[3],o[4],f,p,m,h,g,_,v,0),t.count++}else{Xs&&(Ml(Gl()),Xs.drawArraysInstanced());let f=Ql.length>0?Ql.pop():new Float32Array(8);f.set(a);let p=$l.length>0?$l.pop():new Float32Array(9);p.set(o),Zl.push({node:e,x_min:t,y_min:n,x_max:r,y_max:i,color_transform:f,matrix:p,blend_mode:s,viewport_width:c,viewport_height:l,render_max_size:u,global_alpha:d}),Yl(s),Wl(e.index),Ml(e.index)}},au=!1,ou=e=>{au=e},su=()=>au,cu=!1,lu=0,uu=e=>{cu=e},du=()=>cu,fu=e=>{lu=e},pu=()=>lu,mu=new Map,hu=new Map,gu=()=>{au=!1,cu=!1,lu=0,mu.clear(),hu.clear()},_u=()=>{let e=Xs.currentAttachmentObject;e&&(e.mask=!0,e.clipLevel++,hu.set(e.clipLevel,e.clipLevel),su()||ou(!0))},vu=(e,t,n,r)=>{let i=Xs.currentAttachmentObject;if(!i)return;let a=i.clipLevel,o=mu.get(a);o?(o[0]=Math.min(o[0],e),o[1]=Math.min(o[1],t),o[2]=Math.max(o[2],n),o[3]=Math.max(o[3],r)):(o=Qs(),o[0]=e,o[1]=t,o[2]=n,o[3]=r,mu.set(a,o))},yu=()=>{let e=Xs.currentAttachmentObject;if(!e)return;let t=(1<{let e=Xs.currentAttachmentObject;if(!e)return;let t=e.clipLevel,n=mu.get(t);if(n&&(mu.delete(t),$s(n)),hu.delete(t),--e.clipLevel,!e.clipLevel){e.mask=!1,ou(!1),uu(!1),fu(0),e.needsStencilClear=!0,hu.clear(),mu.clear();return}e.pendingStencilClearLevel=e.clipLevel,yu()},xu=(e,t,n)=>{let r=e.length-5;for(let i=3;i(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),wu=e=>{let t=0;for(let n of e){let e=n.length-5;for(let n=3;n{let r=Math.sqrt(e*e+t*t);return r===0?{x:0,y:0}:{x:-(t/r)*n,y:e/r*n}},ju=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}),Mu=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:{x:e.x/t,y:e.y/t}},Nu=(e,t,n,r)=>({x:(1-e)**2*t.x+2*(1-e)*e*n.x+e**2*r.x,y:(1-e)**2*t.y+2*(1-e)*e*n.y+e**2*r.y}),Pu=(e,t,n,r)=>({x:2*(1-e)*(n.x-t.x)+2*e*(r.x-n.x),y:2*(1-e)*(n.y-t.y)+2*e*(r.y-n.y)}),Fu=(e,t,n,r=.5)=>{let i=ju(e,t,r),a=ju(t,n,r),o=ju(i,a,r);return[[e,i,o],[o,a,n]]},Iu=(e,t,n,r=4)=>{let i=[[e,t,n]];for(let e=0;e{let i=[0,.5,1],a=[];for(let o of i){let i=Nu(o,e,t,n),s=Pu(o,e,t,n),c=Mu({x:-s.y,y:s.x});a.push({x:i.x+c.x*r,y:i.y+c.y*r})}return a},Ru=(e,t,n,r)=>{let i=Iu(e,t,n,5),a=[],o=[];for(let e of i)a.push(Lu(e[0],e[1],e[2],+r)),o.push(Lu(e[0],e[1],e[2],-r));for(let e=0;e{let r={x:t.x-e.x,y:t.y-e.y},i=Au(r.x,r.y,n),a={x:e.x+i.x,y:e.y+i.y},o={x:t.x+i.x,y:t.y+i.y},s={x:t.x-i.x,y:t.y-i.y},c={x:e.x-i.x,y:e.y-i.y};return[a.x,a.y,!1,o.x,o.y,!1,s.x,s.y,!1,c.x,c.y,!1,a.x,a.y,!1]},Bu=(e,t,n,r)=>{let i=[];for(let a=0;a1e-4||i.push(o,s)}return i},Vu=(e,t)=>{Tu.beginPath(),Tu.moveTo(t[0],t[1]);for(let e=3;e{let a=i?0:r.length-1,o=i?r.length-1:r.length-2,s=Bu(e,t,n,r[a]),c=Bu(e,t,n,r[o]);if(s[0]===c[0]&&s[1]===c[1]||s[0]===c[2]&&s[1]===c[3])return;let l=Vu(s,r[o]);if(!l)return;let u=Vu(c,r[a]);u&&r.splice(-1,0,[e,t,!1,l[0],l[1],!1,u[0],u[1],!1,e,t,!1])},Uu=(e,t,n,r,i=!1)=>{let a=i?0:r.length-1,o=i?r.length-1:r.length-2,s=Bu(e,t,n,r[a]),c=Bu(e,t,n,r[o]),l=Vu(s,r[o]);if(!l)return;let u=Vu(c,r[a]);if(!u)return;let d=Math.atan2(l[1]-t,l[0]-e),f=Math.atan2(u[1]-t,u[0]-e)-d;f>Math.PI?f-=2*Math.PI:f<-Math.PI&&(f+=2*Math.PI);let p=f/8,m=[e,t,!1];for(let r=0;r<=8;r++){let i=d+r*p,a=e+n*Math.cos(i),o=t+n*Math.sin(i);m.push(a,o,!1)}r.splice(-1,0,m)},Wu=(e,t,n,r,i,a=!1)=>{let o=a?0:i.length-1,s=a?i.length-1:i.length-2,c=Bu(e.x,e.y,r,i[o]),l=Bu(e.x,e.y,r,i[s]);if(c[0]===l[0]&&c[1]===l[1]||c[0]===l[2]&&c[1]===l[3])return;let u=Vu(c,i[s]);if(!u)return;let d=Vu(l,i[o]);if(!d)return;let f=t.x-e.x,p=t.y-e.y,m=Math.hypot(f,p),h={x:f/m,y:p/m},g=n.x-e.x,_=n.y-e.y,v=Math.hypot(g,_),y={x:g/v,y:_/v},b=h.x,x=h.y,S=y.x,C=y.y,w=b*C-x*S;if(w===0){i.splice(-1,0,[e.x,e.y,!1,u[0],u[1],!1,d[0],d[1],!1]);return}let T=((d[0]-u[0])*C-(d[1]-u[1])*S)/w,E=u[0]+T*b,D=u[1]+T*x;i.splice(-1,0,[e.x,e.y,!1,u[0],u[1],!1,E,D,!1,e.x,e.y,!1,d[0],d[1],!1,E,D,!1])},Gu=(e,t,n)=>{let r=e[0],i=e[1],a=e[3],o=e[4],s=Math.atan2(i-o,r-a),c=[r,i,!1];for(let e=0;e<=8;e++){let n=s-Math.PI/2+e*Math.PI/8;c.push(r+t*Math.cos(n),i+t*Math.sin(n),!1)}n.unshift(c);let l=e[e.length-3],u=e[e.length-2],d=e[e.length-6],f=e[e.length-5],p=Math.atan2(u-f,l-d),m=[l,u,!1];for(let e=0;e<=8;e++){let n=p-Math.PI/2+e*Math.PI/8;m.push(l+t*Math.cos(n),u+t*Math.sin(n),!1)}n.push(m)},Ku=(e,t,n)=>{let r=e[0],i=e[1],a=e[3],o=e[4],s=r-a,c=i-o,l=Math.hypot(s,c);if(l>0){let e=s/l,a=c/l,o=r+e*t,u=i+a*t,d=[r-a*t,i+e*t,!1,o-a*t,u+e*t,!1,o+a*t,u-e*t,!1,r+a*t,i-e*t,!1,r-a*t,i+e*t,!1];n.unshift(d)}let u=e[e.length-3],d=e[e.length-2],f=e[e.length-6],p=e[e.length-5],m=u-f,h=d-p,g=Math.hypot(m,h);if(g>0){let e=m/g,r=h/g,i=u+e*t,a=d+r*t,o=[u-r*t,d+e*t,!1,i-r*t,a+e*t,!1,i+r*t,a-e*t,!1,u+r*t,d-e*t,!1,u-r*t,d+e*t,!1];n.push(o)}},qu=(e,t)=>{let n=Eu;n.x=e[0],n.y=e[1];let r=Du;r.x=0,r.y=0;let i=Ou;i.x=0,i.y=0;let a=ku;a.x=0,a.y=0;let o=[];for(let s=3;s1)switch(Xs.joints){case 0:Hu(n.x,n.y,t,o);break;case 1:a.x=e[s-6],a.y=e[s-5],Wu(n,i,a,t,o);break;case 2:Uu(n.x,n.y,t,o)}n.x=i.x,n.y=i.y}let s=e[0],c=e[1],l=e[e.length-3],u=e[e.length-2],d=1e-4;if(Math.abs(s-l)1)switch(Xs.joints){case 0:Hu(s,c,t,o,!0);break;case 1:n.x=s,n.y=c,i.x=e[3],i.y=e[4],a.x=e[e.length-6],a.y=e[e.length-5],Wu(n,i,a,t,o,!0);break;case 2:Uu(s,c,t,o,!0)}else if(o.length>0)switch(Xs.caps){case 1:Gu(e,t,o);break;case 2:Ku(e,t,o)}return o},Ju=(e,t)=>{let n=t/2,r=[];for(let t of e){if(t.length<6)continue;let e=qu(t,n);for(let t of e)r.push(t)}return r},Yu=new Map,Xu=0,Zu=()=>{Yu.clear(),Xu=0},Qu=new Map,$u=()=>{for(let e of Qu.values())e.texture?.resource&&e.texture.resource.destroy();Qu.clear()},ed=new Map,td=0,nd=(e,t,n)=>`${t}_${n}_${e.join(`,`)}`,rd=(e,t,n)=>{let r=nd(e,t,n),i=ed.get(r);return i?(i.lastUsedFrame=td,i):null},id=(e,t,n,r,i)=>{let a=nd(e,t,n);ed.set(a,{texture:r,view:i,lastUsedFrame:td})},ad=()=>{td++;for(let[e,t]of ed)td-t.lastUsedFrame>60&&(Vc(t.texture),ed.delete(e))},od=()=>{for(let e of ed.values())Vc(e.texture);ed.clear(),td=0},sd=null,cd=()=>{sd?.texture?.resource&&sd.texture.resource.destroy(),sd=null},ld=new Map,ud=0,dd=(e,t,n)=>`${e.join(`,`)}_${t.join(`,`)}_${n.join(`,`)}`,fd=(e,t,n)=>{let r=ld.get(dd(e,t,n));return r?(r.lastUsedFrame=ud,r):null},pd=(e,t,n,r,i)=>{let a={texture:r,view:i,lastUsedFrame:ud};return ld.set(dd(e,t,n),a),a},md=()=>{ud++;for(let[e,t]of ld)ud-t.lastUsedFrame>60&&(t.texture.destroy(),ld.delete(e))},hd=()=>{for(let e of ld.values())e.texture.destroy();ld.clear(),ud=0},gd=(e,t,n,r,i,a)=>{let o=t.getPipeline(`stencil_write_atlas`);o&&(e.setPipeline(o),e.setStencilReference(0),e.setVertexBuffer(0,n),e.setBindGroup(0,i,[a]),e.draw(r,1,0,0));let s=t.getPipeline(`stencil_fill_atlas`);s&&(e.setPipeline(s),e.setStencilReference(0),e.setBindGroup(0,i,[a]),e.draw(r,1,0,0))},_d=(e,t,n)=>{if(!n.msaaDirty||!n.msaa||!n.msaaTexture?.view||!n.texture?.view)return;let r=t.createRenderPassDescriptor(n.msaaTexture.view,0,0,0,0,`load`,n.texture.view);e.beginRenderPass(r).end(),n.msaaDirty=!1},vd=(e,t,n,r,i,a)=>{let o=t.getPipeline(`stencil_write_main`);o&&(e.setPipeline(o),e.setStencilReference(0),e.setVertexBuffer(0,n),e.setBindGroup(0,i,[a]),e.draw(r,1,0,0));let s=t.getPipeline(`stencil_fill_main`);s&&(e.setPipeline(s),e.setStencilReference(0),e.setBindGroup(0,i,[a]),e.draw(r,1,0,0))},yd=(e,t,n,r,i,a,o,s=!1,c=1)=>{let l;if(o)l=`fill`;else if(s){if(su())return;l=`fill_bgra_stencil`}else l=`fill_bgra`;let u=t.getPipeline(l);if(!u){console.error(`[WebGPU] ${l} pipeline not found`);return}e.setPipeline(u),e.setVertexBuffer(0,n),e.setBindGroup(0,i,[a]),s&&!o&&!su()&&e.setStencilReference(pu()),e.draw(r,1,0,0)},bd=e=>e<=4?256:e<=8?512:1024,xd=(e,t,n)=>{let r=e.length/5,i=bd(r),a=new Uint8Array(i*4);for(let t=0;t{let r=e.length/5,i=0,a=-1;for(let n=0;n=t&&a===-1){a=n;break}}if(a===-1&&(a=r-1),i===a){let t=i*5;return{r:e[t+1],g:e[t+2],b:e[t+3],a:e[t+4]}}let o=e[i*5],s=e[a*5],c=(t-o)/(s-o),l=e[i*5+1],u=e[i*5+2],d=e[i*5+3],f=e[i*5+4],p=e[a*5+1],m=e[a*5+2],h=e[a*5+3],g=e[a*5+4];return n===0?{r:Td(Cd(wd(l/255),wd(p/255),c))*255,g:Td(Cd(wd(u/255),wd(m/255),c))*255,b:Td(Cd(wd(d/255),wd(h/255),c))*255,a:Cd(f,g,c)}:{r:Cd(l,p,c),g:Cd(u,m,c),b:Cd(d,h,c),a:Cd(f,g,c)}},Cd=(e,t,n)=>e+(t-e)*n,wd=e=>e**2.23333333,Td=e=>e**.45454545,Ed=(e,t,n)=>{let r=new Uint8Array(1024),i=e.length,a=[];for(let r=0;r>16&255)/255,g:(i>>8&255)/255,b:(i&255)/255,a:n[r]})}for(let e=0;e<256;e++){let t=e/255,n=0,o=i-1;for(let e=0;e=t){n=e,o=e+1;break}let s=a[n],c=a[o],l=0;c.offset!==s.offset&&(l=(t-s.offset)/(c.offset-s.offset));let u=Cd(s.r,c.r,l),d=Cd(s.g,c.g,l),f=Cd(s.b,c.b,l),p=Cd(s.a,c.a,l),m=e*4;r[m+0]=Math.round(u*p*255),r[m+1]=Math.round(d*p*255),r[m+2]=Math.round(f*p*255),r[m+3]=Math.round(p*255)}return r},Dd=(e,t,n)=>{let r=e[0],i=e[1],a=e[2],o=e[3],s=e[4],c=e[5];if(n===0){let e=-819.2*r-819.2*a+s,t=819.2*r-819.2*a+s,n=-819.2*r+819.2*a+s,l=-819.2*i-819.2*o+c,u=819.2*i-819.2*o+c,d=-819.2*i+819.2*o+c,f=n-e,p=d-l,m=Math.sqrt(f*f+p*p);m?(f/=m,p/=m):(f=0,p=0);let h=(t-e)*f+(u-l)*p,g=new Float32Array([e+h*f,l+h*p,t,u]);return{inverseMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),linearPoints:g}}let l=r*o-i*a;if(Math.abs(l)<1e-10)return{inverseMatrix:new Float32Array([1,0,0,0,1,0,0,0,1]),linearPoints:null};let u=1/l,d=o*u,f=-i*u,p=-a*u,m=r*u,h=(a*c-o*s)*u,g=(i*s-r*c)*u;return{inverseMatrix:new Float32Array([d,f,0,p,m,0,h,g,1]),linearPoints:null}},Od=null,K=new Float32Array(36),kd=new Float32Array(16),Ad=null,jd=null,Md=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],Nd=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=!1,_=1)=>{let v=wu(i);if(v.indexCount===0)return null;let y=n.acquireVertexBuffer(v.buffer.byteLength,v.buffer),b,x,S=rd(c,u,d);if(S)b=S.texture,x=S.view;else{let t=xd(c,u,d),n=c.length/5,r=bd(n);b=Bc(e,r,1),e.queue.writeTexture({texture:b},t,{bytesPerRow:r*4,rowsPerImage:1},{width:r,height:1}),x=b.createView(),id(c,u,d,b,x)}let C=Dd(l,a,s),w=o[3]>0?o[3]:1,T=a[0],E=a[1],D=a[3],O=a[4],k=a[6],A=a[7];K[0]=C.inverseMatrix[0],K[1]=C.inverseMatrix[3],K[2]=0,K[3]=0,K[4]=C.inverseMatrix[1],K[5]=C.inverseMatrix[4],K[6]=0,K[7]=0,K[8]=C.inverseMatrix[6],K[9]=C.inverseMatrix[7],K[10]=1,K[11]=0,K[12]=s,K[13]=Math.max(-.975,Math.min(.975,f)),K[14]=u,K[15]=819.2,C.linearPoints?(K[16]=C.linearPoints[0],K[17]=C.linearPoints[1],K[18]=C.linearPoints[2],K[19]=C.linearPoints[3]):(K[16]=0,K[17]=0,K[18]=0,K[19]=0),K[20]=1,K[21]=1,K[22]=1,K[23]=w,K[24]=T/p,K[25]=E/m,K[26]=0,K[27]=0,K[28]=D/p,K[29]=O/m,K[30]=0,K[31]=0,K[32]=k/p,K[33]=A/m,K[34]=1,K[35]=0;let j=n.acquireAndWriteUniformBuffer(K);Od||=e.createSampler({magFilter:`linear`,minFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});let M=Od,N=r.getBindGroupLayout(`gradient_fill`);if(!N)return console.error(`[WebGPU] gradient_fill bind group layout not found`),null;Md[0].resource.buffer=j,Md[1].resource=M,Md[2].resource=x;let P=e.createBindGroup({layout:N,entries:Md}),F=()=>{let t=r.getBindGroupLayout(`fill_dynamic`);if(!t)return null;kd[0]=1,kd[1]=1,kd[2]=1,kd[3]=w,kd[4]=T/p,kd[5]=E/m,kd[6]=0,kd[7]=0,kd[8]=D/p,kd[9]=O/m,kd[10]=0,kd[11]=0,kd[12]=k/p,kd[13]=A/m,kd[14]=1,kd[15]=0;let i=n.dynamicUniform.allocate(kd),a=n.dynamicUniform.getBuffer();return(!Ad||jd!==a)&&(Ad=e.createBindGroup({layout:t,entries:[{binding:0,resource:{buffer:a,size:256}}]}),jd=a),{bindGroup:Ad,offset:i}};if(h){let e=r.getPipeline(`stencil_write_atlas`);if(e){let n=F();t.setPipeline(e),t.setStencilReference(0),t.setVertexBuffer(0,y),n&&t.setBindGroup(0,n.bindGroup,[n.offset]),t.draw(v.indexCount,1,0,0)}let n=r.getGradientPipeline(`gradient_fill_stencil_atlas`,s,u);return n&&(t.setPipeline(n),t.setStencilReference(0),t.setBindGroup(0,P),t.draw(v.indexCount,1,0,0)),null}if(g&&su())return null;let I=r.getPipeline(`stencil_write_main`);if(I){let e=F();t.setPipeline(I),t.setStencilReference(0),t.setVertexBuffer(0,y),e&&t.setBindGroup(0,e.bindGroup,[e.offset]),t.draw(v.indexCount,1,0,0)}let ee=g?`gradient_fill_bgra_stencil_masked`:`gradient_fill_stencil_main`,L=r.getGradientPipeline(ee,s,u);return L&&(t.setPipeline(L),t.setStencilReference(g?pu():0),t.setBindGroup(0,P),t.draw(v.indexCount,1,0,0)),null},Pd=(e,t)=>{let n=e[0],r=e[1],i=e[2],a=e[3],o=e[4],s=e[5],c=t[0],l=t[1],u=t[3],d=t[4],f=t[6],p=t[7],m=c*n+u*r,h=c*i+u*a,g=l*n+d*r,_=l*i+d*a,v=c*o+u*s+f,y=l*o+d*s+p,b=m*_-h*g;if(Math.abs(b)<1e-10)return new Float32Array([1,0,0,0,1,0,0,0,1]);let x=1/b,S=_*x,C=-h*x,w=-g*x,T=m*x,E=(h*y-_*v)*x,D=(g*v-m*y)*x,O=S*c+C*l,k=S*u+C*d,A=w*c+T*l,j=w*u+T*d,M=S*f+C*p+E,N=w*f+T*p+D;return new Float32Array([O,A,0,k,j,0,M,N,1])},Fd=new Map,q=new Float32Array(32),Id=new Float32Array(16),Ld=null,Rd=null,zd=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],Bd=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=!1,_=1)=>{let v=wu(i);if(v.indexCount===0)return null;let y=n.acquireVertexBuffer(v.buffer.byteLength,v.buffer),b=Bc(e,l,u);e.queue.writeTexture({texture:b},s.buffer,{bytesPerRow:l*4,rowsPerImage:u,offset:s.byteOffset},{width:l,height:u});let x=Pd(c,a),S=o[0],C=o[1],w=o[2],T=o[3],E=a[0],D=a[1],O=a[3],k=a[4],A=a[6],j=a[7];q[0]=x[0],q[1]=x[1],q[2]=x[2],q[3]=0,q[4]=x[3],q[5]=x[4],q[6]=x[5],q[7]=0,q[8]=x[6],q[9]=x[7],q[10]=x[8],q[11]=0,q[12]=l,q[13]=u,q[14]=+!!d,q[15]=0,q[16]=S,q[17]=C,q[18]=w,q[19]=T,q[20]=E/p,q[21]=D/m,q[22]=0,q[23]=0,q[24]=O/p,q[25]=k/m,q[26]=0,q[27]=0,q[28]=A/p,q[29]=j/m,q[30]=1,q[31]=0;let M=n.acquireAndWriteUniformBuffer(q),N=`bitmap_${f?`s`:`n`}_${d?`r`:`c`}`,P=Fd.get(N);P||(P=e.createSampler({magFilter:f?`linear`:`nearest`,minFilter:f?`linear`:`nearest`,addressModeU:d?`repeat`:`clamp-to-edge`,addressModeV:d?`repeat`:`clamp-to-edge`}),Fd.set(N,P));let F=r.getBindGroupLayout(`bitmap_fill`);if(!F)return console.error(`[WebGPU] bitmap_fill bind group layout not found`),Vc(b),null;zd[0].resource.buffer=M,zd[1].resource=P,zd[2].resource=b.createView();let I=e.createBindGroup({layout:F,entries:zd}),ee=()=>{let t=r.getBindGroupLayout(`fill_dynamic`);if(!t)return null;Id[0]=S,Id[1]=C,Id[2]=w,Id[3]=T,Id[4]=E/p,Id[5]=D/m,Id[6]=0,Id[7]=0,Id[8]=O/p,Id[9]=k/m,Id[10]=0,Id[11]=0,Id[12]=A/p,Id[13]=j/m,Id[14]=1,Id[15]=0;let i=n.dynamicUniform.allocate(Id),a=n.dynamicUniform.getBuffer();return(!Ld||Rd!==a)&&(Ld=e.createBindGroup({layout:t,entries:[{binding:0,resource:{buffer:a,size:256}}]}),Rd=a),{bindGroup:Ld,offset:i}};if(h&&g){let e=r.getPipeline(`stencil_write`);if(e){let n=ee();n&&(t.setPipeline(e),t.setStencilReference(0),t.setVertexBuffer(0,y),t.setBindGroup(0,n.bindGroup,[n.offset]),t.draw(v.indexCount,1,0,0))}let n=r.getPipeline(`bitmap_fill_stencil`);n&&(t.setPipeline(n),t.setStencilReference(0),t.setBindGroup(0,I),t.draw(v.indexCount,1,0,0))}else{let e;if(h)e=`bitmap_fill`;else if(g){if(su())return Vc(b),null;e=`bitmap_fill_bgra_stencil`}else e=`bitmap_fill_bgra`;let n=r.getPipeline(e);if(!n)return console.error(`[WebGPU] ${e} pipeline not found`),Vc(b),null;t.setPipeline(n),t.setVertexBuffer(0,y),t.setBindGroup(0,I),g&&!h&&!su()&&t.setStencilReference(pu()),t.draw(v.indexCount,1,0,0)}return b},Vd=(e,t,n)=>{let r=e.length-5;for(let i=3;i(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),Wd=(e,t)=>{let n=t/2,r=[];for(let t of e){let e=qu(t,n);for(let t of e)r.push(t)}let i=0;for(let e of r){let t=e.length-5;for(let e=3;e{let v=Wd(i,a);if(v.indexCount===0)return null;let y=n.acquireVertexBuffer(v.buffer.byteLength,v.buffer),b,x,S=rd(l,d,f);if(S)b=S.texture,x=S.view;else{let t=xd(l,d,f),n=l.length/5,r=bd(n);b=Bc(e,r,1),e.queue.writeTexture({texture:b},t,{bytesPerRow:r*4,rowsPerImage:1},{width:r,height:1}),x=b.createView(),id(l,d,f,b,x)}let C=Dd(u,o,c),w=s[3]>0?s[3]:1,T=o[0],E=o[1],D=o[3],O=o[4],k=o[6],A=o[7];J[0]=C.inverseMatrix[0],J[1]=C.inverseMatrix[3],J[2]=0,J[3]=0,J[4]=C.inverseMatrix[1],J[5]=C.inverseMatrix[4],J[6]=0,J[7]=0,J[8]=C.inverseMatrix[6],J[9]=C.inverseMatrix[7],J[10]=1,J[11]=0,J[12]=c,J[13]=Math.max(-.975,Math.min(.975,p)),J[14]=d,J[15]=819.2,C.linearPoints?(J[16]=C.linearPoints[0],J[17]=C.linearPoints[1],J[18]=C.linearPoints[2],J[19]=C.linearPoints[3]):(J[16]=0,J[17]=0,J[18]=0,J[19]=0),J[20]=1,J[21]=1,J[22]=1,J[23]=w,J[24]=T/m,J[25]=E/h,J[26]=0,J[27]=0,J[28]=D/m,J[29]=O/h,J[30]=0,J[31]=0,J[32]=k/m,J[33]=A/h,J[34]=1,J[35]=0;let j=n.acquireAndWriteUniformBuffer(J);Gd||=e.createSampler({magFilter:`linear`,minFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`});let M=Gd,N=r.getBindGroupLayout(`gradient_fill`);if(!N)return console.error(`[WebGPU] gradient_fill bind group layout not found`),null;Kd[0].resource.buffer=j,Kd[1].resource=M,Kd[2].resource=x;let P=e.createBindGroup({layout:N,entries:Kd}),F=_?g?`gradient_stroke_atlas`:`gradient_stroke_bgra`:g?`gradient_fill`:`gradient_fill_bgra`,I=r.getGradientPipeline(F,c,d);return I?(t.setPipeline(I),t.setVertexBuffer(0,y),t.setBindGroup(0,P),t.draw(v.indexCount,1,0,0),null):(console.error(`[WebGPU] ${F} pipeline not found`),null)},Jd=new Float32Array(32),Yd=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),Xd=(e,t)=>{let n=t/2,r=[];for(let t of e){let e=qu(t,n);for(let t of e)r.push(t)}let i=0;for(let e of r){let t=e.length-5;for(let e=3;e{let v=Xd(i,a);if(v.indexCount===0)return null;let y=n.acquireVertexBuffer(v.buffer.byteLength,v.buffer),b=Bc(e,u,d);e.queue.writeTexture({texture:b},c.buffer,{bytesPerRow:u*4,rowsPerImage:d,offset:c.byteOffset},{width:u,height:d});let x=Pd(l,o),S=s[3]>0?s[3]:1,C=o[0],w=o[1],T=o[3],E=o[4],D=o[6],O=o[7];Y[0]=x[0],Y[1]=x[1],Y[2]=x[2],Y[3]=0,Y[4]=x[3],Y[5]=x[4],Y[6]=x[5],Y[7]=0,Y[8]=x[6],Y[9]=x[7],Y[10]=x[8],Y[11]=0,Y[12]=u,Y[13]=d,Y[14]=+!!f,Y[15]=0,Y[16]=1,Y[17]=1,Y[18]=1,Y[19]=S,Y[20]=C/m,Y[21]=w/h,Y[22]=0,Y[23]=0,Y[24]=T/m,Y[25]=E/h,Y[26]=0,Y[27]=0,Y[28]=D/m,Y[29]=O/h,Y[30]=1,Y[31]=0;let k=n.acquireAndWriteUniformBuffer(Y),A=`bitmap_${p?`s`:`n`}_${f?`r`:`c`}`,j=Zd.get(A);j||(j=e.createSampler({magFilter:p?`linear`:`nearest`,minFilter:p?`linear`:`nearest`,addressModeU:f?`repeat`:`clamp-to-edge`,addressModeV:f?`repeat`:`clamp-to-edge`}),Zd.set(A,j));let M=r.getBindGroupLayout(`bitmap_fill`);if(!M)return console.error(`[WebGPU] bitmap_fill bind group layout not found`),Vc(b),null;Qd[0].resource.buffer=k,Qd[1].resource=j,Qd[2].resource=b.createView();let N=e.createBindGroup({layout:M,entries:Qd}),P=_?g?`bitmap_stroke_atlas`:`bitmap_stroke_bgra`:g?`bitmap_fill`:`bitmap_fill_bgra`,F=r.getPipeline(P);return F?(t.setPipeline(F),t.setVertexBuffer(0,y),t.setBindGroup(0,N),t.draw(v.indexCount,1,0,0),b):(console.error(`[WebGPU] ${P} pipeline not found`),Vc(b),null)},ef=new Float32Array([-1,-1,.5,.5,1,-1,.5,.5,-1,1,.5,.5,-1,1,.5,.5,1,-1,.5,.5,1,1,.5,.5]),tf=new Float32Array([1,1,1,1,.5,0,0,0,0,.5,0,0,.5,.5,1,0]),nf=(e,t,n,r,i)=>{if(!i)return;let a=i.clipLevel,o=1<{let u=i.clipLevel,d=i.width,f=i.height,p=s[0],m=s[1],h=s[2],g=s[3]*c;if(a.length===0)return;let _=wu(a);if(_.indexCount===0)return;let v=n.acquireVertexBuffer(_.buffer.byteLength,_.buffer),y=o[0],b=o[1],x=o[3],S=o[4],C=o[6],w=o[7];rf[0]=p,rf[1]=m,rf[2]=h,rf[3]=g,rf[4]=y/d,rf[5]=b/f,rf[6]=0,rf[7]=0,rf[8]=x/d,rf[9]=S/f,rf[10]=0,rf[11]=0,rf[12]=C/d,rf[13]=w/f,rf[14]=1,rf[15]=0;let T=n.dynamicUniform.allocate(rf),E=hu.get(u)??u,D;D=l?`clip_write_main_${Math.min(8,Math.max(1,E))}`:`clip_write`;let O=r.getPipeline(D);if(!O){console.error(`[WebGPU] ${D} pipeline not found`);return}let k=r.getBindGroupLayout(`fill_dynamic`);if(!k)return;let A=e.createBindGroup({layout:k,entries:[{binding:0,resource:{buffer:n.dynamicUniform.getBuffer(),size:256}}]});t.setPipeline(O),t.setStencilReference(0),t.setVertexBuffer(0,v),t.setBindGroup(0,A,[T]),t.draw(_.indexCount,1,0,0),E++,E>8&&(nf(e,t,n,r,i),E=u+1),hu.set(u,E)},of=new WeakMap,sf=null,cf=null,lf=e=>{switch(e){case`add`:return`instanced_add`;case`screen`:return`instanced_screen`;case`alpha`:return`instanced_alpha`;case`erase`:return`instanced_erase`;case`copy`:return`instanced_copy`;default:return`instanced`}},uf=(e,t,n,r,i,a,o,s)=>{let c=ru();if(c.count===0)return n;n&&=(n.end(),null);let l=du(),u=pu(),d=lf(Jl),f=s.getPipeline(d),p=s.getPipeline(`instanced_masked`),m=l&&p&&(r.msaaStencil?.view||r.stencil?.view),h=m?p:f;if(!h)return console.error(`[WebGPU] Instanced pipeline not found`),null;let g;if(m){let e=r.msaa&&r.msaaTexture?.view,n=e?r.msaaTexture.view:r.texture.view,i=e&&r.msaaStencil?.view?r.msaaStencil.view:r.stencil.view;e&&(r.msaaDirty=!0);let o=a.createStencilRenderPassDescriptor(n,i,`load`,`load`,null);g=t.beginRenderPass(o)}else{let e=r.msaa&&r.msaaTexture?.view,n=e?r.msaaTexture.view:r.texture.view;e&&(r.msaaDirty=!0);let i=a.createRenderPassDescriptor(n,0,0,0,0,`load`,null);g=t.beginRenderPass(i)}g.setPipeline(h),m&&g.setStencilReference(u);let _=new Float32Array(fi.buffer.buffer,fi.buffer.byteOffset,fi.offset),v=i.acquireVertexBuffer(_.byteLength,_),y=i.getUnitRectBuffer(),b=Rl()||a.getAttachment(`atlas`);if(!b)return console.error(`[WebGPU] Atlas attachment not found`),g.end(),null;let x=o.createSampler(`atlas_instanced_sampler`,!1),S=s.getBindGroupLayout(`instanced`);if(!S)return console.error(`[WebGPU] Instanced bind group layout not found`),g.end(),null;let C=b.texture.view;(sf!==x||cf!==S)&&(of=new WeakMap,sf=x,cf=S);let w=of.get(C);return w||(w=e.createBindGroup({layout:S,entries:[{binding:0,resource:x},{binding:1,resource:C}]}),of.set(C,w)),g.setVertexBuffer(0,y),g.setVertexBuffer(1,v),g.setBindGroup(0,w),g.draw(6,c.count,0,0),g.end(),c.clear(),null},df=null,ff=null,pf=null,mf=!1,hf=(e,t,n,r,i,a,o,s,c=!0,l=!0,u=!1)=>{let d=ru();if(d.count===0)return n;let f=du(),p=pu(),m=(e=>{switch(e){case`add`:return`instanced_add`;case`screen`:return`instanced_screen`;case`alpha`:return`instanced_alpha`;case`erase`:return`instanced_erase`;case`copy`:return`instanced_copy`;default:return`instanced`}})(Jl),h=s.getPipeline(m),g=s.getPipeline(`instanced_masked`),_=f&&g&&(r.msaaStencil?.view||r.stencil?.view),v=_?g:h;if(!v)return console.error(`[WebGPU] Instanced pipeline not found`),null;let y=r.msaa&&r.msaaTexture?.view,b=y?r.msaaTexture.view:r.texture.view;y&&(r.msaaDirty=!0);let x=!!_,S;if(n&&u&&pf===b&&mf===x)S=n;else{if(n&&=(n.end(),null),x){let e=y&&r.msaaStencil?.view?r.msaaStencil.view:r.stencil.view,n=a.createStencilRenderPassDescriptor(b,e,`load`,`load`,null);S=t.beginRenderPass(n)}else{let e=a.createRenderPassDescriptor(b,0,0,0,0,`load`,null);S=t.beginRenderPass(e)}pf=b,mf=x}S.setPipeline(v),x&&S.setStencilReference(p);let C=new Float32Array(fi.buffer.buffer,fi.buffer.byteOffset,fi.offset),w;l?(w=i.acquireStorageBuffer(C.byteLength),i.writeStorageBuffer(w,C)):w=i.acquireVertexBuffer(C.byteLength,C);let T=i.getUnitRectBuffer(),E=Rl()||a.getAttachment(`atlas`);if(!E)return console.error(`[WebGPU] Atlas attachment not found`),S.end(),pf=null,null;let D=o.createSampler(`atlas_instanced_sampler`,!1),O=s.getBindGroupLayout(`instanced`);if(!O)return console.error(`[WebGPU] Instanced bind group layout not found`),S.end(),pf=null,null;let k=E.texture.view;if((!df||ff!==k)&&(df=e.createBindGroup({layout:O,entries:[{binding:0,resource:D},{binding:1,resource:k}]}),ff=k),S.setVertexBuffer(0,T),S.setVertexBuffer(1,w),S.setBindGroup(0,df),c){let e=i.createIndirectBuffer(6,d.count,0,0);S.drawIndirect(e,0)}else S.draw(6,d.count,0,0);return d.clear(),S},gf=new Float32Array(12),_f=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null}],vf=(e,t,n,r,i)=>{let{device:a,commandEncoder:o,frameBufferManager:s,pipelineManager:c,textureManager:l}=i,u=Math.max(e.width,t.width),d=Math.max(e.height,t.height),f=s.createTemporaryAttachment(u,d),p=c.getPipeline(`complex_blend`),m=c.getBindGroupLayout(`complex_blend`);if(!p||!m)return console.error(`[WebGPU ComplexBlend] Pipeline not found for blend mode: ${n}`),e;let h=l.createSampler(`complex_blend_sampler`,!0),g=G.getBlendModeIndex(n);gf[0]=r[0],gf[1]=r[1],gf[2]=r[2],gf[3]=r[3],gf[4]=r[4],gf[5]=r[5],gf[6]=r[6],gf[7]=r[7],gf[8]=g,gf[9]=0,gf[10]=0,gf[11]=0;let _=i.bufferManager?i.bufferManager.acquireAndWriteUniformBuffer(gf):a.createBuffer({size:48,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});i.bufferManager||a.queue.writeBuffer(_,0,gf),_f[0].resource.buffer=_,_f[1].resource=h,_f[2].resource=t.texture.view,_f[3].resource=e.texture.view;let v=a.createBindGroup({layout:m,entries:_f}),y=s.createRenderPassDescriptor(f.texture.view,0,0,0,0,`clear`),b=o.beginRenderPass(y);return b.setPipeline(p),b.setBindGroup(0,v),b.draw(6,1,0,0),b.end(),f},yf=new Float32Array(4),bf=new Float32Array(6),xf=new Float32Array(8),Sf=new Float32Array(12),Cf=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],wf=(e,t,n,r,i,a,o,s,c,l,u,d,f,p)=>{let m=f.getPipeline(`complex_blend_copy`),h=f.getBindGroupLayout(`texture_copy`);if(!m||!h)return;yf[0]=c/o,yf[1]=l/s,yf[2]=i/o,yf[3]=a/s;let g=p.acquireAndWriteUniformBuffer(yf),_=d.createSampler(`complex_blend_copy_sampler`,!1);Cf[0].resource.buffer=g,Cf[1].resource=_,Cf[2].resource=n;let v=e.createBindGroup({layout:h,entries:Cf}),y=u.createRenderPassDescriptor(r.texture.view,0,0,0,0,`clear`),b=t.beginRenderPass(y);b.setPipeline(m),b.setBindGroup(0,v),b.draw(6,1,0,0),b.end()},Tf=(e,t,n,r,i,a,o,s,c,l)=>{let u=r.msaa&&r.msaaTexture?.view,d=u?`complex_blend_output_msaa`:`complex_blend_output`,f=c.getPipeline(d),p=c.getBindGroupLayout(`positioned_texture`);if(!f||!p)return;xf[0]=i,xf[1]=a,xf[2]=n.width,xf[3]=n.height,xf[4]=r.width,xf[5]=r.height,xf[6]=0,xf[7]=0;let m=l.acquireAndWriteUniformBuffer(xf),h=s.createSampler(`complex_blend_output_sampler`,!1);Cf[0].resource.buffer=m,Cf[1].resource=h,Cf[2].resource=n.texture.view;let g=e.createBindGroup({layout:p,entries:Cf}),_=u?r.msaaTexture.view:r.texture.view;u&&(r.msaaDirty=!0);let v=o.createRenderPassDescriptor(_,0,0,0,0,`load`,null),y=t.beginRenderPass(v);y.setPipeline(f),y.setBindGroup(0,g),y.draw(6,1,0,0),y.end()},Ef=(e,t,n,r,i,a,o)=>{let s=eu();if(s.length===0)return;if(!n||!n.texture){tu();return}let c=Rl()||r.getAttachment(`atlas`);if(!c||!c.texture){tu();return}for(let l of s){let{node:s,x_min:u,y_min:d,x_max:f,y_max:p,color_transform:m,matrix:h,blend_mode:g,global_alpha:_}=l,v=Math.ceil(Math.abs(f-u)),y=Math.ceil(Math.abs(p-d));if(v<=0||y<=0)continue;let b=Math.max(0,Math.floor(h[6])),x=Math.max(0,Math.floor(h[7]));if(b>=n.width||x>=n.height)continue;let S=h[0]!==1||h[1]!==0||h[3]!==0||h[4]!==1,C=S?v:s.w,w=S?y:s.h,T=Math.min(C,n.width-b),E=Math.min(w,n.height-x);if(T<=0||E<=0)continue;let D;if(S){D=r.createTemporaryAttachment(C,w);let n=a.getPipeline(`complex_blend_scale`),l=a.getBindGroupLayout(`texture_scale`);if(n&&l){let a=C/2,u=w/2,d=s.w/2,f=s.h/2;bf[0]=h[0],bf[1]=h[1],bf[2]=h[3],bf[3]=h[4],bf[4]=-d*h[0]-f*h[3]+a,bf[5]=-d*h[1]-f*h[4]+u;let p=r.createTemporaryAttachment(s.w,s.h);t.copyTextureToTexture({texture:c.texture.resource,origin:{x:s.x,y:s.y,z:0}},{texture:p.texture.resource,origin:{x:0,y:0,z:0}},{width:s.w,height:s.h}),Sf[0]=bf[0],Sf[1]=bf[1],Sf[2]=bf[2],Sf[3]=bf[3],Sf[4]=bf[4],Sf[5]=bf[5],Sf[6]=s.w,Sf[7]=s.h,Sf[8]=C,Sf[9]=w,Sf[10]=0,Sf[11]=0;let m=o.acquireAndWriteUniformBuffer(Sf,48),g=i.createSampler(`scale_sampler`,!0);Cf[0].resource.buffer=m,Cf[1].resource=g,Cf[2].resource=p.texture.view;let _=e.createBindGroup({layout:l,entries:Cf}),v=r.createRenderPassDescriptor(D.texture.view,0,0,0,0,`clear`),y=t.beginRenderPass(v);y.setPipeline(n),y.setBindGroup(0,_),y.draw(6,1,0,0),y.end(),r.releaseTemporaryAttachment(p)}else t.copyTextureToTexture({texture:c.texture.resource,origin:{x:s.x,y:s.y,z:0}},{texture:D.texture.resource,origin:{x:0,y:0,z:0}},{width:Math.min(s.w,C),height:Math.min(s.h,w)})}else D=r.createTemporaryAttachment(C,w),t.copyTextureToTexture({texture:c.texture.resource,origin:{x:s.x,y:s.y,z:0}},{texture:D.texture.resource,origin:{x:0,y:0,z:0}},{width:C,height:w});_d(t,r,n);let O=r.createTemporaryAttachment(C,w);wf(e,t,n.texture.view,O,b,x,n.width,n.height,C,w,r,i,a,o),xf[0]=m[0],xf[1]=m[1],xf[2]=m[2],xf[3]=_,xf[4]=m[4],xf[5]=m[5],xf[6]=m[6],xf[7]=0;let k=vf(D,O,g,xf,{device:e,commandEncoder:t,bufferManager:o,frameBufferManager:r,pipelineManager:a,textureManager:i,frameTextures:[]});Tf(e,t,k,n,b,x,r,i,a,o),r.releaseTemporaryAttachment(D),r.releaseTemporaryAttachment(O),r.releaseTemporaryAttachment(k)}tu()},X={x:0,y:0},Df=[.5,1.05,1.4,1.55,1.75,1.9,2,2.15,2.2,2.3,2.5,3,3,3.5,3.5],Of=(e,t,n,r,i)=>{let a=Math.sqrt(e[0]*e[0]+e[1]*e[1]),o=Math.sqrt(e[2]*e[2]+e[3]*e[3]),s=a/i*t,c=o/i*n,l=Df[Math.min(r-1,Df.length-1)],u=Math.round(s*l),d=Math.round(c*l),f=1,p=1;return s>128?f=.0625:s>64?f=.125:s>32?f=.25:s>16&&(f=.5),c>128?p=.0625:c>64?p=.125:c>32?p=.25:c>16&&(p=.5),{baseBlurX:s,baseBlurY:c,offsetX:u,offsetY:d,bufferScaleX:f,bufferScaleY:p}},kf=(e,t,n,r)=>{let i=Math.ceil(t*.5),a=1-(i-t*.5),o=1+t;return{offsetX:e?1/n:0,offsetY:e?0:1/r,fraction:a,samples:o,halfBlur:i}},Af=new Float32Array(4),jf=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],Mf=null,Nf=new WeakMap,Pf=(e,t,n,r)=>{Mf||(Af[0]=1,Af[1]=1,Af[2]=0,Af[3]=0,Mf=e.createBuffer({size:Af.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),e.queue.writeBuffer(Mf,0,Af));let i=Nf.get(r);return i||(i=e.createBindGroup({layout:t,entries:[{binding:0,resource:{buffer:Mf}},{binding:1,resource:n},{binding:2,resource:r}]}),Nf.set(r,i)),i},Ff=(e,t,n,r,i,a,o)=>{let{device:s,commandEncoder:c,frameBufferManager:l,pipelineManager:u,textureManager:d}=o,{baseBlurX:f,baseBlurY:p,offsetX:m,offsetY:h,bufferScaleX:g,bufferScaleY:_}=Of(t,n,r,i,a);X.x+=m,X.y+=h;let v=e.width+m*2,y=e.height+h*2,b=Math.ceil(v*g),x=Math.ceil(y*_),S=l.createTemporaryAttachment(b,x),C=l.createTemporaryAttachment(b,x),w=d.createSampler(`blur_sampler`,!0);If(s,c,l,u,e,S,w,g,_,m*g,h*_);let T=f*g,E=p*_,D=[S,C],O=0;for(let e=0;e0){let e=O;O=(O+1)%2,Lf(s,c,l,u,D[e],D[O],w,!0,T,o.bufferManager)}if(r>0){let e=O;O=(O+1)%2,Lf(s,c,l,u,D[e],D[O],w,!1,E,o.bufferManager)}}let k=D[O];if(g!==1||_!==1){let e=l.createTemporaryAttachment(v,y);Rf(s,c,l,u,k,e,w),l.releaseTemporaryAttachment(S),l.releaseTemporaryAttachment(C),k=e}else{let e=(O+1)%2;l.releaseTemporaryAttachment(D[e])}return k},If=(e,t,n,r,i,a,o,s,c,l,u)=>{let d=r.getPipeline(`texture_copy_rgba8`),f=r.getBindGroupLayout(`texture_copy`);if(!d||!f){console.error(`[WebGPU BlurFilter] texture_copy_rgba8 pipeline not found`);return}let p=i.width*s,m=i.height*c,h=Pf(e,f,o,i.texture.view),g=n.createRenderPassDescriptor(a.texture.view,0,0,0,0,`clear`),_=t.beginRenderPass(g);_.setPipeline(d),_.setBindGroup(0,h),_.setViewport(l,u,p,m,0,1),_.setScissorRect(Math.floor(l),Math.floor(u),Math.ceil(p),Math.ceil(m)),_.draw(6,1,0,0),_.end()},Lf=(e,t,n,r,i,a,o,s,c,l)=>{let{offsetX:u,offsetY:d,fraction:f,samples:p,halfBlur:m}=kf(s,c,i.width,i.height),h=Math.max(1,Math.min(16,m)),g=r.getPipeline(`blur_filter_${h}`),_=r.getBindGroupLayout(`blur_filter`);if(!g||!_){console.error(`[WebGPU BlurFilter] blur_filter_${h} pipeline not found`);return}Af[0]=u,Af[1]=d,Af[2]=f,Af[3]=p;let v=l?l.acquireAndWriteUniformBuffer(Af):e.createBuffer({size:Af.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});l||e.queue.writeBuffer(v,0,Af),jf[0].resource.buffer=v,jf[1].resource=o,jf[2].resource=i.texture.view;let y=e.createBindGroup({layout:_,entries:jf}),b=n.createRenderPassDescriptor(a.texture.view,0,0,0,0,`clear`),x=t.beginRenderPass(b);x.setPipeline(g),x.setBindGroup(0,y),x.draw(6,1,0,0),x.end()},Rf=(e,t,n,r,i,a,o)=>{let s=r.getPipeline(`texture_copy_rgba8`),c=r.getBindGroupLayout(`texture_copy`);if(!s||!c){console.error(`[WebGPU BlurFilter] texture_copy_rgba8 pipeline not found`);return}let l=Pf(e,c,o,i.texture.view),u=n.createRenderPassDescriptor(a.texture.view,0,0,0,0,`clear`),d=t.beginRenderPass(u);d.setPipeline(s),d.setBindGroup(0,l),d.draw(6,1,0,0),d.end()},zf=new Float32Array(20),Bf=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],Vf=(e,t,n)=>{let{device:r,commandEncoder:i,frameBufferManager:a,pipelineManager:o,textureManager:s}=n,c=a.createTemporaryAttachment(e.width,e.height),l=o.getPipeline(`color_matrix_filter`),u=o.getBindGroupLayout(`color_matrix_filter`);if(!l||!u)return console.error(`[WebGPU ColorMatrixFilter] Pipeline not found`),e;let d=s.createSampler(`color_matrix_sampler`,!0);zf[0]=t[0],zf[1]=t[5],zf[2]=t[10],zf[3]=t[15],zf[4]=t[1],zf[5]=t[6],zf[6]=t[11],zf[7]=t[16],zf[8]=t[2],zf[9]=t[7],zf[10]=t[12],zf[11]=t[17],zf[12]=t[3],zf[13]=t[8],zf[14]=t[13],zf[15]=t[18],zf[16]=t[4]/255,zf[17]=t[9]/255,zf[18]=t[14]/255,zf[19]=t[19]/255;let f=n.bufferManager?n.bufferManager.acquireAndWriteUniformBuffer(zf):r.createBuffer({size:zf.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});n.bufferManager||r.queue.writeBuffer(f,0,zf),Bf[0].resource.buffer=f,Bf[1].resource=d,Bf[2].resource=e.texture.view;let p=r.createBindGroup({layout:u,entries:Bf}),m=a.createRenderPassDescriptor(c.texture.view,0,0,0,0,`clear`),h=i.beginRenderPass(m);return h.setPipeline(l),h.setBindGroup(0,p),h.draw(6,1,0,0),h.end(),c},Hf=Math.PI/180,Uf=(e,t)=>[(e>>16&255)/255*t,(e>>8&255)/255*t,(e&255)/255*t,t],Wf=(e,t)=>[(e>>16&255)/255,(e>>8&255)/255,(e&255)/255,t],Gf=new Float32Array(16),Kf=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null}],qf=(e,t,n,r,i,a,o,s,c,l,u,d)=>{let{device:f,commandEncoder:p,frameBufferManager:m,pipelineManager:h,textureManager:g}=d,_=X.x,v=X.y,y=e.width,b=e.height,x=Ff(e,t,i,a,s,u,d),S=x.width,C=x.height,w=X.x,T=X.y,E=c?y:S,D=c?b:C,O=w-_,k=T-v,A=c?0:O,j=c?0:k,M=c?-O:0,N=c?-k:0,P=E/y,F=D/b,I=A/y,ee=j/b,L=E/S,R=D/C,z=M/S,te=N/C,ne=m.createTemporaryAttachment(E,D),re=h.getFilterPipeline(`glow_filter`,{IS_INNER:+!!c,IS_KNOCKOUT:+!!l}),ie=h.getBindGroupLayout(`glow_filter`);if(!re||!ie)return console.error(`[WebGPU GlowFilter] Pipeline not found`),m.releaseTemporaryAttachment(x),e;let ae=g.createSampler(`glow_sampler`,!0),[oe,se,ce,le]=Uf(n,r);Gf[0]=oe,Gf[1]=se,Gf[2]=ce,Gf[3]=le,Gf[4]=P,Gf[5]=F,Gf[6]=I,Gf[7]=ee,Gf[8]=L,Gf[9]=R,Gf[10]=z,Gf[11]=te,Gf[12]=o,Gf[13]=+!!c,Gf[14]=+!!l,Gf[15]=0;let B=d.bufferManager?d.bufferManager.acquireAndWriteUniformBuffer(Gf):f.createBuffer({size:Gf.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});d.bufferManager||f.queue.writeBuffer(B,0,Gf),Kf[0].resource.buffer=B,Kf[1].resource=ae,Kf[2].resource=x.texture.view,Kf[3].resource=e.texture.view;let ue=f.createBindGroup({layout:ie,entries:Kf}),de=m.createRenderPassDescriptor(ne.texture.view,0,0,0,0,`clear`),fe=p.beginRenderPass(de);return fe.setPipeline(re),fe.setBindGroup(0,ue),fe.draw(6,1,0,0),fe.end(),m.releaseTemporaryAttachment(x),ne},Jf=new Float32Array(16),Yf=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null}],Xf=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m)=>{let{device:h,commandEncoder:g,frameBufferManager:_,pipelineManager:v,textureManager:y}=m,b=X.x,x=X.y,S=e.width,C=e.height,w=Ff(e,t,o,s,l,p,m),T=w.width,E=w.height,D=X.x,O=X.y,k=D-b,A=O-x,j=Math.sqrt(t[0]*t[0]+t[1]*t[1]),M=Math.sqrt(t[2]*t[2]+t[3]*t[3]),N=r*Hf,P=Math.cos(N)*n*(j/p),F=Math.sin(N)*n*(M/p),I=u?S:T+Math.max(0,Math.abs(P)-k),ee=u?C:E+Math.max(0,Math.abs(F)-A),L=Math.ceil(I),R=Math.ceil(ee),z=(L-I)/2,te=(R-ee)/2,ne=u?0:Math.max(0,k-P)+z,re=u?0:Math.max(0,A-F)+te,ie=u?P-D:(P>0?Math.max(0,P-k):0)+z,ae=u?F-O:(F>0?Math.max(0,F-A):0)+te,oe=_.createTemporaryAttachment(L,R),se=u,ce=d,le=f;u?ce=d||f:!d&&f&&(ce=!0,le=!0);let B=v.getFilterPipeline(`drop_shadow_filter`,{IS_INNER:+!!se,IS_KNOCKOUT:+!!ce,IS_HIDE_OBJECT:+!!le}),ue=v.getBindGroupLayout(`drop_shadow_filter`);if(!B||!ue)return console.error(`[WebGPU DropShadowFilter] Pipeline not found`),_.releaseTemporaryAttachment(w),e;let de=y.createSampler(`drop_shadow_sampler`,!0),[fe,pe,me,he]=Uf(i,a),ge=L/S,_e=R/C,ve=ne/S,V=re/C,ye=L/T,be=R/E,xe=ie/T,Se=ae/E;Jf[0]=fe,Jf[1]=pe,Jf[2]=me,Jf[3]=he,Jf[4]=ge,Jf[5]=_e,Jf[6]=ve,Jf[7]=V,Jf[8]=ye,Jf[9]=be,Jf[10]=xe,Jf[11]=Se,Jf[12]=c,Jf[13]=+!!se,Jf[14]=+!!ce,Jf[15]=+!!le;let Ce=m.bufferManager?m.bufferManager.acquireAndWriteUniformBuffer(Jf):h.createBuffer({size:Jf.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});m.bufferManager||h.queue.writeBuffer(Ce,0,Jf),Yf[0].resource.buffer=Ce,Yf[1].resource=de,Yf[2].resource=w.texture.view,Yf[3].resource=e.texture.view;let we=h.createBindGroup({layout:ue,entries:Yf}),Te=_.createRenderPassDescriptor(oe.texture.view,0,0,0,0,`clear`),Ee=g.beginRenderPass(Te);return Ee.setPipeline(B),Ee.setBindGroup(0,we),Ee.draw(6,1,0,0),Ee.end(),_.releaseTemporaryAttachment(w),oe},Zf=new Float32Array(8),Qf=new Float32Array(20),$f=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],ep=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null}],tp=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)=>{let{device:g,commandEncoder:_,frameBufferManager:v,pipelineManager:y,textureManager:b}=h,x=X.x,S=X.y,C=e.width,w=e.height,T=Math.sqrt(t[0]*t[0]+t[1]*t[1]),E=Math.sqrt(t[2]*t[2]+t[3]*t[3]),D=r*Hf,O=Math.cos(D)*n*(T/m),k=Math.sin(D)*n*(E/m),A=v.createTemporaryAttachment(C,w);_.copyTextureToTexture({texture:e.texture.resource,origin:{x:0,y:0,z:0}},{texture:A.texture.resource,origin:{x:0,y:0,z:0}},{width:C,height:w});let j=y.getPipeline(`texture_erase`),M=y.getBindGroupLayout(`texture_copy`);if(j&&M){let t=b.createSampler(`erase_sampler`,!0),n=O*2/C,r=k*2/w;Zf[0]=1,Zf[1]=1,Zf[2]=n,Zf[3]=r,Zf[4]=0,Zf[5]=0,Zf[6]=0,Zf[7]=0;let i=h.bufferManager?h.bufferManager.acquireAndWriteUniformBuffer(Zf):g.createBuffer({size:Zf.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});h.bufferManager||g.queue.writeBuffer(i,0,Zf),$f[0].resource.buffer=i,$f[1].resource=t,$f[2].resource=e.texture.view;let a=g.createBindGroup({layout:M,entries:$f}),o=v.createRenderPassDescriptor(A.texture.view,0,0,0,0,`load`),s=_.beginRenderPass(o);s.setPipeline(j),s.setBindGroup(0,a),s.draw(6,1,0,0),s.end()}let N=Ff(A,t,c,l,d,m,h);v.releaseTemporaryAttachment(A);let P=N.width,F=N.height,I=Math.abs(O),ee=Math.abs(k),L=f===1,R=Math.ceil(P+I*2),z=Math.ceil(F+ee*2),te=L?C:R,ne=L?w:z,re=(P-C)/2,ie=(F-w)/2,ae=L?0:Math.floor(I+re),oe=L?0:Math.floor(ee+ie),se=Math.floor(L?-re-O:I-O),ce=Math.floor(L?-ie-k:ee-k),le=te/C,B=ne/w,ue=ae/C,de=oe/w,fe=te/P,pe=ne/F,me=se/P,he=ce/F,ge=v.createTemporaryAttachment(te,ne),_e=y.getFilterPipeline(`bevel_filter`,{BEVEL_TYPE:f,IS_KNOCKOUT:+!!p}),ve=y.getBindGroupLayout(`bevel_filter`);if(!_e||!ve)return console.error(`[WebGPU BevelFilter] Pipeline not found`),v.releaseTemporaryAttachment(N),e;let V=b.createSampler(`bevel_sampler`,!0),[ye,be,xe,Se]=Uf(i,a),[Ce,we,Te,Ee]=Uf(o,s);Qf[0]=ye,Qf[1]=be,Qf[2]=xe,Qf[3]=Se,Qf[4]=Ce,Qf[5]=we,Qf[6]=Te,Qf[7]=Ee,Qf[8]=u,Qf[9]=+!!L,Qf[10]=+!!p,Qf[11]=f,Qf[12]=le,Qf[13]=B,Qf[14]=ue,Qf[15]=de,Qf[16]=fe,Qf[17]=pe,Qf[18]=me,Qf[19]=he;let De=h.bufferManager?h.bufferManager.acquireAndWriteUniformBuffer(Qf):g.createBuffer({size:Qf.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});h.bufferManager||g.queue.writeBuffer(De,0,Qf),ep[0].resource.buffer=De,ep[1].resource=V,ep[2].resource=N.texture.view,ep[3].resource=e.texture.view;let Oe=g.createBindGroup({layout:ve,entries:ep}),ke=v.createRenderPassDescriptor(ge.texture.view,0,0,0,0,`clear`),Ae=_.beginRenderPass(ke);return Ae.setPipeline(_e),Ae.setBindGroup(0,Oe),Ae.draw(6,1,0,0),Ae.end(),v.releaseTemporaryAttachment(N),X.x=x+ae,X.y=S+oe,ge},np=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],rp=new Map,ip=(e,t,n,r,i,a,o,s,c,l,u)=>{let{device:d,commandEncoder:f,frameBufferManager:p,textureManager:m}=u,h=e.width,g=e.height,_=p.createTemporaryAttachment(h,g),v=`${t},${n},${o},${s}`,y=rp.get(v);if(!y){let e=G.getConvolutionFilterFragmentShader(t,n,o,s),r=d.createShaderModule({code:e}),i=d.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}}]}),a=d.createPipelineLayout({bindGroupLayouts:[i]});y={pipeline:d.createRenderPipeline({layout:a,vertex:{module:r,entryPoint:`vs_main`,buffers:[]},fragment:{module:r,entryPoint:`fs_main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}}),bindGroupLayout:i},rp.set(v,y)}let b=m.createSampler(`convolution_sampler`,!0),x=t*n,S=Math.ceil(x/4),[C,w,T,E]=Wf(c,l),D=new Float32Array(S*4);for(let e=0;e{let{device:h,commandEncoder:g,frameBufferManager:_,pipelineManager:v,textureManager:y}=m,b=X.x,x=X.y,S=e.width,C=e.height,w=Math.sqrt(t[0]*t[0]+t[1]*t[1]),T=Math.sqrt(t[2]*t[2]+t[3]*t[3]),E=r*Hf,D=Math.cos(E)*n*(w/p),O=Math.sin(E)*n*(T/p),k=v.getPipeline(`bevel_base`),A=v.getBindGroupLayout(`bevel_base`);if(!k||!A)return console.error(`[WebGPU GradientBevelFilter] bevel_base pipeline not found`),e;let j=_.createTemporaryAttachment(S,C),M=y.createSampler(`bevel_base_sampler`,!0);ap[0]=2*D/S,ap[1]=2*O/C,ap[2]=0,ap[3]=0;let N=m.bufferManager?m.bufferManager.acquireAndWriteUniformBuffer(ap):h.createBuffer({size:ap.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});m.bufferManager||h.queue.writeBuffer(N,0,ap),sp[0].resource.buffer=N,sp[1].resource=M,sp[2].resource=e.texture.view;let P=h.createBindGroup({layout:A,entries:sp}),F=_.createRenderPassDescriptor(j.texture.view,0,0,0,0,`clear`),I=g.beginRenderPass(F);I.setPipeline(k),I.setBindGroup(0,P),I.draw(6,1,0,0),I.end();let ee=Ff(j,t,s,c,u,p,m);_.releaseTemporaryAttachment(j);let L=ee.width,R=ee.height,z=d===1,te=Math.abs(D),ne=Math.abs(O),re=(L-S)/2,ie=(R-C)/2,ae=Math.ceil(L+te*2),oe=Math.ceil(R+ne*2),se=z?S:ae,ce=z?C:oe,le=z?0:te+re,B=z?0:ne+ie,ue=z?-re-D:te-D,de=z?-ie-O:ne-O,fe=fd(o,i,a);if(!fe){let e=Ed(o,i,a),t=h.createTexture({size:{width:256,height:1},format:`rgba8unorm`,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});h.queue.writeTexture({texture:t},e.buffer,{bytesPerRow:1024,offset:e.byteOffset},{width:256,height:1}),fe=pd(o,i,a,t,t.createView())}let pe=fe.view,me=se/S,he=ce/C,ge=le/S,_e=B/C,ve=se/L,V=ce/R,ye=ue/L,be=de/R,xe=_.createTemporaryAttachment(se,ce),Se=v.getFilterPipeline(`gradient_bevel_filter`,{BEVEL_TYPE:d,IS_KNOCKOUT:+!!f}),Ce=v.getBindGroupLayout(`gradient_bevel_filter`);if(!Se||!Ce)return console.error(`[WebGPU GradientBevelFilter] Pipeline not found`),_.releaseTemporaryAttachment(ee),e;let we=y.createSampler(`gradient_bevel_sampler`,!0);op[0]=l,op[1]=+!!z,op[2]=+!!f,op[3]=d,op[4]=me,op[5]=he,op[6]=ge,op[7]=_e,op[8]=ve,op[9]=V,op[10]=ye,op[11]=be;let Te=m.bufferManager?m.bufferManager.acquireAndWriteUniformBuffer(op):h.createBuffer({size:op.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});m.bufferManager||h.queue.writeBuffer(Te,0,op),cp[0].resource.buffer=Te,cp[1].resource=we,cp[2].resource=ee.texture.view,cp[3].resource=e.texture.view,cp[4].resource=pe;let Ee=h.createBindGroup({layout:Ce,entries:cp}),De=_.createRenderPassDescriptor(xe.texture.view,0,0,0,0,`clear`),Oe=g.beginRenderPass(De);return Oe.setPipeline(Se),Oe.setBindGroup(0,Ee),Oe.draw(6,1,0,0),Oe.end(),_.releaseTemporaryAttachment(ee),X.x=b+le,X.y=x+B,xe},up=new Float32Array(12),dp=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null},{binding:4,resource:null}],fp=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m)=>{let{device:h,commandEncoder:g,frameBufferManager:_,pipelineManager:v,textureManager:y}=m,b=X.x,x=X.y,S=e.width,C=e.height,w=Ff(e,t,s,c,u,p,m),T=w.width,E=w.height,D=X.x,O=X.y,k=D-b,A=O-x,j=Math.sqrt(t[0]*t[0]+t[1]*t[1]),M=Math.sqrt(t[2]*t[2]+t[3]*t[3]),N=r*Hf,P=Math.cos(N)*n*(j/p),F=Math.sin(N)*n*(M/p),I=d===1,ee=I?S:T+Math.max(0,Math.abs(P)-k),L=I?C:E+Math.max(0,Math.abs(F)-A),R=Math.ceil(ee),z=Math.ceil(L),te=(R-ee)/2,ne=(z-L)/2,re=I?0:Math.max(0,k-P)+te,ie=I?0:Math.max(0,A-F)+ne,ae=I?P-D:(P>0?Math.max(0,P-k):0)+te,oe=I?F-O:(F>0?Math.max(0,F-A):0)+ne,se=fd(o,i,a);if(!se){let e=Ed(o,i,a),t=h.createTexture({size:{width:256,height:1},format:`rgba8unorm`,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});h.queue.writeTexture({texture:t},e.buffer,{bytesPerRow:1024,offset:e.byteOffset},{width:256,height:1}),se=pd(o,i,a,t,t.createView())}let ce=se.view,le=R/S,B=z/C,ue=re/S,de=ie/C,fe=R/T,pe=z/E,me=ae/T,he=oe/E,ge=_.createTemporaryAttachment(R,z),_e=v.getFilterPipeline(`gradient_glow_filter`,{GLOW_TYPE:d,IS_KNOCKOUT:+!!f}),ve=v.getBindGroupLayout(`gradient_glow_filter`);if(!_e||!ve)return console.error(`[WebGPU GradientGlowFilter] Pipeline not found`),_.releaseTemporaryAttachment(w),e;let V=y.createSampler(`gradient_glow_sampler`,!0);up[0]=l,up[1]=+!!I,up[2]=+!!f,up[3]=d,up[4]=le,up[5]=B,up[6]=ue,up[7]=de,up[8]=fe,up[9]=pe,up[10]=me,up[11]=he;let ye=m.bufferManager?m.bufferManager.acquireAndWriteUniformBuffer(up):h.createBuffer({size:up.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});m.bufferManager||h.queue.writeBuffer(ye,0,up),dp[0].resource.buffer=ye,dp[1].resource=V,dp[2].resource=w.texture.view,dp[3].resource=e.texture.view,dp[4].resource=ce;let be=h.createBindGroup({layout:ve,entries:dp}),xe=_.createRenderPassDescriptor(ge.texture.view,0,0,0,0,`clear`),Se=g.beginRenderPass(xe);return Se.setPipeline(_e),Se.setBindGroup(0,be),Se.draw(6,1,0,0),Se.end(),_.releaseTemporaryAttachment(w),X.x=b+re,X.y=x+ie,ge},pp=new Float32Array(12),mp=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:null}],hp=new Map,gp=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)=>{let{device:g,commandEncoder:_,frameBufferManager:v,textureManager:y}=h,b=e.width,x=e.height,S=r,C=i,w=v.createTemporaryAttachment(b,x),T=g.createTexture({size:{width:r,height:i},format:`rgba8unorm`,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});g.queue.writeTexture({texture:T},n.buffer,{bytesPerRow:r*4,offset:n.byteOffset},{width:r,height:i});let E=`${s},${c},${d}`,D=hp.get(E);if(!D){let e=G.getDisplacementMapFilterFragmentShader(s,c,d),t=g.createShaderModule({code:G.getBlurFilterVertexShader()}),n=g.createShaderModule({code:e}),r=g.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:`uniform`}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{}}]}),i=g.createPipelineLayout({bindGroupLayouts:[r]});D={pipeline:g.createRenderPipeline({layout:i,vertex:{module:t,entryPoint:`main`,buffers:[]},fragment:{module:n,entryPoint:`main`,targets:[{format:`rgba8unorm`,blend:{color:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`},alpha:{srcFactor:`one`,dstFactor:`one-minus-src-alpha`,operation:`add`}}}]},primitive:{topology:`triangle-list`,cullMode:`none`}}),bindGroupLayout:r},hp.set(E,D)}let O=y.createSampler(`displacement_sampler`,!0),k=d===1,A=k?48:32;if(pp[0]=S/r,pp[1]=C/i,pp[2]=a/r,pp[3]=(C-i-o)/i,pp[4]=l/S,pp[5]=u/C,pp[6]=0,pp[7]=0,k){let[e,t,n,r]=Uf(f,p);pp[8]=e,pp[9]=t,pp[10]=n,pp[11]=r}let j=h.bufferManager?h.bufferManager.acquireAndWriteUniformBuffer(pp,A):g.createBuffer({size:A,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});h.bufferManager||g.queue.writeBuffer(j,0,pp,0,A/4),mp[0].resource.buffer=j,mp[1].resource=O,mp[2].resource=e.texture.view,mp[3].resource=T.createView();let M=g.createBindGroup({layout:D.bindGroupLayout,entries:mp}),N=v.createRenderPassDescriptor(w.texture.view,0,0,0,0,`clear`),P=_.beginRenderPass(N);return P.setPipeline(D.pipeline),P.setBindGroup(0,M),P.draw(6,1,0,0),P.end(),h.frameTextures.push(T),w},_p=new Float32Array(4),vp=new Float32Array(6),yp=new Float32Array(6),Z=new Float32Array(8),bp=new Float32Array(12),xp=new Float32Array(20),Sp=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],Cp=new Set([`normal`,`layer`,`add`,`screen`,`alpha`,`erase`,`copy`]),wp=new Float32Array([1,-1,0,1]),Tp=e=>e[0]===1&&e[1]===1&&e[2]===1&&e[3]===1&&e[4]===0&&e[5]===0&&e[6]===0&&e[7]===0,Ep=(e,t,n)=>{let r=e.frameBufferManager.createTemporaryAttachment(t.width,t.height),i=e.pipelineManager.getPipeline(`color_transform`),a=e.pipelineManager.getBindGroupLayout(`texture_copy`);if(!i||!a||!t.texture||!r.texture)return t;Z[0]=n[0],Z[1]=n[1],Z[2]=n[2],Z[3]=n[3],Z[4]=n[4],Z[5]=n[5],Z[6]=n[6],Z[7]=0;let o=e.bufferManager.acquireAndWriteUniformBuffer(Z),s=e.textureManager.createSampler(`color_transform_sampler`,!1);Sp[0].resource.buffer=o,Sp[1].resource=s,Sp[2].resource=t.texture.view;let c=e.device.createBindGroup({layout:a,entries:Sp}),l=e.frameBufferManager.createRenderPassDescriptor(r.texture.view,0,0,0,0,`clear`),u=e.commandEncoder.beginRenderPass(l);return u.setPipeline(i),u.setBindGroup(0,c),u.draw(6,1,0,0),u.end(),r},Dp=(e,t,n)=>{let r=n.createTemporaryAttachment(e.w,e.h),i=Rl()||n.getAttachment(`atlas`);return i&&i.texture&&r.texture?t.copyTextureToTexture({texture:i.texture.resource,origin:{x:e.x,y:e.y,z:0}},{texture:r.texture.resource,origin:{x:0,y:0,z:0}},{width:e.w,height:e.h}):console.error(`[WebGPU Filter] $getTextureFromNode: FAILED - missing atlas or textures`),r},Op=e=>Cp.has(e),kp=(e,t,n,r,i,a)=>{let o=e.frameBufferManager.createTemporaryAttachment(i,a),s=e.pipelineManager.getPipeline(`complex_blend_copy`),c=e.pipelineManager.getBindGroupLayout(`texture_copy`);if(!s||!c||!t.texture||!o.texture)return o;let l=i/t.width,u=a/t.height,d=n/t.width,f=r/t.height;_p[0]=l,_p[1]=u,_p[2]=d,_p[3]=f;let p=e.bufferManager.acquireAndWriteUniformBuffer(_p),m=e.textureManager.createSampler(`filter_copy_sampler`,!1);Sp[0].resource.buffer=p,Sp[1].resource=m,Sp[2].resource=t.texture.view;let h=e.device.createBindGroup({layout:c,entries:Sp}),g=e.frameBufferManager.createRenderPassDescriptor(o.texture.view,0,0,0,0,`clear`),_=e.commandEncoder.beginRenderPass(g);return _.setPipeline(s),_.setBindGroup(0,h),_.draw(6,1,0,0),_.end(),o},Ap=(e,t,n,r,i)=>{let a=n.msaa&&n.msaaTexture?.view,o=a?`filter_complex_blend_output_msaa`:`filter_complex_blend_output`,s=e.pipelineManager.getPipeline(o),c=e.pipelineManager.getBindGroupLayout(`positioned_texture`);if(!s||!c||!t.texture||!n.texture)return;Z[0]=r,Z[1]=i,Z[2]=t.width,Z[3]=t.height,Z[4]=n.width,Z[5]=n.height,Z[6]=0,Z[7]=0;let l=e.bufferManager.acquireAndWriteUniformBuffer(Z),u=e.textureManager.createSampler(`filter_blend_output_sampler`,!1);Sp[0].resource.buffer=l,Sp[1].resource=u,Sp[2].resource=t.texture.view;let d=e.device.createBindGroup({layout:c,entries:Sp}),f=a?n.msaaTexture.view:n.texture.view;a&&(n.msaaDirty=!0);let p=e.frameBufferManager.createRenderPassDescriptor(f,0,0,0,0,`load`,null),m=e.commandEncoder.beginRenderPass(p);m.setPipeline(s),m.setBindGroup(0,d),m.draw(6,1,0,0),m.end()},jp=(e,t,n,r,i,a,o,s)=>{let c=e.mainAttachment||e.frameBufferManager.getAttachment(`main`);if(!c||!c.texture||!t.texture)return;let l=i,u=a,d=t.width,f=t.height,p=0,m=0;if(l<0&&(p=-l/t.width,d+=l,l=0),u<0&&(m=-u/t.height,f+=u,u=0),d<=0||f<=0)return;let h=c.width,g=c.height;if(l+d>h&&(d=h-l),u+f>g&&(f=g-u),Op(r)){let n=c.msaa&&c.msaaTexture?.view,i=du()&&(c.msaaStencil?.view||c.stencil?.view),a;if(i)a=n?`filter_output_masked_msaa`:`filter_output_masked`;else switch(r){case`add`:a=n?`filter_output_add_msaa`:`filter_output_add`;break;case`screen`:a=n?`filter_output_screen_msaa`:`filter_output_screen`;break;case`alpha`:a=n?`filter_output_alpha_msaa`:`filter_output_alpha`;break;case`erase`:a=n?`filter_output_erase_msaa`:`filter_output_erase`;break;case`copy`:a=n?`texture_copy_bgra_msaa`:`texture_copy_bgra`;break;default:a=n?`filter_output_msaa`:`filter_output`}let o=e.pipelineManager.getPipeline(a),s=e.pipelineManager.getBindGroupLayout(`texture_copy`);if((!o||!s)&&(a=n?`filter_output_msaa`:`filter_output`,o=e.pipelineManager.getPipeline(a),s=e.pipelineManager.getBindGroupLayout(`texture_copy`),!o||!s))return;let _=e.textureManager.createSampler(`filter_output_sampler`,!0),v=d/t.width,y=f/t.height;_p[0]=v,_p[1]=y,_p[2]=p,_p[3]=m;let b=e.bufferManager.acquireAndWriteUniformBuffer(_p);Sp[0].resource.buffer=b,Sp[1].resource=_,Sp[2].resource=t.texture.view;let x=e.device.createBindGroup({layout:s,entries:Sp}),S=n?c.msaaTexture.view:c.texture.view,C=n?c.texture.view:null,w;if(i){let t=n&&c.msaaStencil?.view?c.msaaStencil.view:c.stencil.view;w=e.frameBufferManager.createStencilRenderPassDescriptor(S,t,`load`,`load`,C)}else w=e.frameBufferManager.createRenderPassDescriptor(S,0,0,0,0,`load`,C);let T=Math.max(0,l),E=Math.max(0,u),D=Math.max(1,d),O=Math.max(1,f),k=Math.max(0,Math.floor(T)),A=Math.max(0,Math.floor(E)),j=Math.max(1,Math.min(Math.ceil(T+D)-k,h-k)),M=Math.max(1,Math.min(Math.ceil(E+O)-A,g-A));if(j<=0||M<=0||k>=h||A>=g)return;let N=e.commandEncoder.beginRenderPass(w);N.setPipeline(o),N.setBindGroup(0,x),i&&N.setStencilReference(pu()),N.setViewport(T,E,D,O,0,1),N.setScissorRect(k,A,j,M),N.draw(6,1,0,0),N.end()}else{let i=kp(e,c,l,u,d,f);Z[0]=n[0],Z[1]=n[1],Z[2]=n[2],Z[3]=n[3],Z[4]=n[4],Z[5]=n[5],Z[6]=n[6],Z[7]=0;let a=vf(t,i,r,Z,{device:e.device,commandEncoder:e.commandEncoder,bufferManager:e.bufferManager,frameBufferManager:e.frameBufferManager,pipelineManager:e.pipelineManager,textureManager:e.textureManager,frameTextures:e.frameTextures});Ap(e,a,c,l,u),e.frameBufferManager.releaseTemporaryAttachment(i),e.frameBufferManager.releaseTemporaryAttachment(a)}},Mp=(e,t,n,r,i,a,o,s,c,l,u,d)=>{X.x=0,X.y=0;let f=Dp(e,l.commandEncoder,l.frameBufferManager);if(f.texture){let t=l.frameBufferManager.createTemporaryAttachment(e.w,e.h),n=l.pipelineManager.getPipeline(`texture_copy_rgba8`),r=l.pipelineManager.getBindGroupLayout(`texture_copy`);if(n&&r&&t.texture){let e=l.textureManager.createSampler(`filter_flip_sampler`,!1),i=l.bufferManager.acquireAndWriteUniformBuffer(wp);Sp[0].resource.buffer=i,Sp[1].resource=e,Sp[2].resource=f.texture.view;let a=l.device.createBindGroup({layout:r,entries:Sp}),o=l.frameBufferManager.createRenderPassDescriptor(t.texture.view,0,0,0,0,`clear`),s=l.commandEncoder.beginRenderPass(o);s.setPipeline(n),s.setBindGroup(0,a),s.draw(6,1,0,0),s.end(),l.frameBufferManager.releaseTemporaryAttachment(f),f=t}}let p=Ys.getDevicePixelRatio(),m=Math.sqrt(i[0]*i[0]+i[1]*i[1]),h=Math.sqrt(i[2]*i[2]+i[3]*i[3]),g=Math.atan2(i[1],i[0]),_=Math.atan2(-i[2],i[3]),v=r?m*Math.cos(g):Math.cos(g),y=r?m*Math.sin(g):Math.sin(g),b=r?-h*Math.sin(_):-Math.sin(_),x=r?h*Math.cos(_):Math.cos(_);vp[0]=v,vp[1]=y,vp[2]=b,vp[3]=x,vp[4]=t/2,vp[5]=n/2,yp[0]=1,yp[1]=0,yp[2]=0,yp[3]=1,yp[4]=-e.w/2,yp[5]=-e.h/2;let S=vp[0]*yp[0]+vp[2]*yp[1],C=vp[1]*yp[0]+vp[3]*yp[1],w=vp[0]*yp[2]+vp[2]*yp[3],T=vp[1]*yp[2]+vp[3]*yp[3],E=vp[0]*yp[4]+vp[2]*yp[5]+vp[4],D=vp[1]*yp[4]+vp[3]*yp[5]+vp[5],O=0,k=0;if(S!==1||C!==0||w!==0||T!==1){let r=l.frameBufferManager.createTemporaryAttachment(t,n),i=l.pipelineManager.getPipeline(`texture_scale`),a=l.pipelineManager.getBindGroupLayout(`texture_scale`);if(i&&a){bp[0]=S,bp[1]=C,bp[2]=w,bp[3]=T,bp[4]=E,bp[5]=D,bp[6]=e.w,bp[7]=e.h,bp[8]=t,bp[9]=n,bp[10]=0,bp[11]=0;let o=l.bufferManager.acquireAndWriteUniformBuffer(bp,48),s=l.textureManager.createSampler(`filter_scale_sampler`,!0);Sp[0].resource.buffer=o,Sp[1].resource=s,Sp[2].resource=f.texture.view;let c=l.device.createBindGroup({layout:a,entries:Sp}),u=l.frameBufferManager.createRenderPassDescriptor(r.texture.view,0,0,0,0,`clear`),d=l.commandEncoder.beginRenderPass(u);d.setPipeline(i),d.setBindGroup(0,c),d.draw(6,1,0,0),d.end(),O=E,k=D,l.frameBufferManager.releaseTemporaryAttachment(f),f=r}}for(let e=0;c.length>e;)switch(c[e++]){case 0:{let t=c[e++],n=c[e++],r=c[e++],a=c[e++],o=c[e++],s=c[e++],u=c[e++],d=c[e++],m=c[e++],h=c[e++],g=c[e++],_=!!c[e++],v=tp(f,i,t,n,r,a,o,s,u,d,m,h,g,_,p,l);f!==v&&l.frameBufferManager.releaseTemporaryAttachment(f),f=v}break;case 1:{let t=c[e++],n=c[e++],r=c[e++],a=Ff(f,i,t,n,r,p,l);f!==a&&l.frameBufferManager.releaseTemporaryAttachment(f),f=a}break;case 2:{xp[0]=c[e++],xp[1]=c[e++],xp[2]=c[e++],xp[3]=c[e++],xp[4]=c[e++],xp[5]=c[e++],xp[6]=c[e++],xp[7]=c[e++],xp[8]=c[e++],xp[9]=c[e++],xp[10]=c[e++],xp[11]=c[e++],xp[12]=c[e++],xp[13]=c[e++],xp[14]=c[e++],xp[15]=c[e++],xp[16]=c[e++],xp[17]=c[e++],xp[18]=c[e++],xp[19]=c[e++];let t=Vf(f,xp,l);f!==t&&l.frameBufferManager.releaseTemporaryAttachment(f),f=t}break;case 3:{let t=c[e++],n=c[e++],r=t*n,i=new Float32Array(r);for(let t=0;t!e||e[0]===1&&e[1]===1&&e[2]===1&&e[3]===1&&e[4]===0&&e[5]===0&&e[6]===0&&e[7]===0,zp=(e,t,n)=>{let r=e.frameBufferManager.createTemporaryAttachment(t.width,t.height),i=e.pipelineManager.getPipeline(`color_transform`),a=e.pipelineManager.getBindGroupLayout(`texture_copy`);if(!i||!a||!t.texture||!r.texture)return t;Q[0]=n[0],Q[1]=n[1],Q[2]=n[2],Q[3]=n[3],Q[4]=n[4],Q[5]=n[5],Q[6]=n[6],Q[7]=0;let o=e.bufferManager.acquireAndWriteUniformBuffer(Q),s=e.textureManager.createSampler(`container_ct_sampler`,!1);Fp[0].resource.buffer=o,Fp[1].resource=s,Fp[2].resource=t.texture.view;let c=e.device.createBindGroup({layout:a,entries:Fp}),l=e.frameBufferManager.createRenderPassDescriptor(r.texture.view,0,0,0,0,`clear`),u=e.commandEncoder.beginRenderPass(l);return u.setPipeline(i),u.setBindGroup(0,c),u.draw(6,1,0,0),u.end(),r},Bp=(e,t,n,r,i,a)=>{let o=e.frameBufferManager.createTemporaryAttachment(i,a),s=e.pipelineManager.getPipeline(`texture_copy_rgba8`),c=e.pipelineManager.getBindGroupLayout(`texture_copy`);if(!s||!c||!t.texture||!o.texture)return o;let l=i/t.width,u=a/t.height,d=n/t.width,f=r/t.height;Np[0]=l,Np[1]=u,Np[2]=d,Np[3]=f;let p=e.bufferManager.acquireAndWriteUniformBuffer(Np),m=e.textureManager.createSampler(`container_copy_sampler`,!1);Fp[0].resource.buffer=p,Fp[1].resource=m,Fp[2].resource=t.texture.view;let h=e.device.createBindGroup({layout:c,entries:Fp}),g=e.frameBufferManager.createRenderPassDescriptor(o.texture.view,0,0,0,0,`clear`),_=e.commandEncoder.beginRenderPass(g);return _.setPipeline(s),_.setBindGroup(0,h),_.draw(6,1,0,0),_.end(),o},Vp=(e,t,n,r,i,a,o)=>{if(!n.texture||!t.texture)return;let s=i,c=a,l=t.width,u=t.height,d=0,f=0;if(s<0&&(d=-s/t.width,l+=s,s=0),c<0&&(f=-c/t.height,u+=c,c=0),l<=0||u<=0)return;let p=n.width,m=n.height;if(s+l>p&&(l=p-s),c+u>m&&(u=m-c),Ip.has(r)){let i=n.msaa&&n.msaaTexture?.view,a;switch(r){case`add`:a=i?`filter_output_add_msaa`:`filter_output_add`;break;case`screen`:a=i?`filter_output_screen_msaa`:`filter_output_screen`;break;case`alpha`:a=i?`filter_output_alpha_msaa`:`filter_output_alpha`;break;case`erase`:a=i?`filter_output_erase_msaa`:`filter_output_erase`;break;case`copy`:a=i?`texture_copy_bgra_msaa`:`texture_copy_bgra`;break;default:a=i?`filter_output_msaa`:`filter_output`}let h=e.pipelineManager.getPipeline(a),g=e.pipelineManager.getBindGroupLayout(`texture_copy`);if(!h||!g)return;let _=e.textureManager.createSampler(`container_output_sampler`,!0),v=l/t.width,y=u/t.height;Np[0]=v,Np[1]=y,Np[2]=d,Np[3]=f;let b=o.acquireAndWriteUniformBuffer(Np);Fp[0].resource.buffer=b,Fp[1].resource=_,Fp[2].resource=t.texture.view;let x=e.device.createBindGroup({layout:g,entries:Fp}),S=i?n.msaaTexture.view:n.texture.view;i&&(n.msaaDirty=!0);let C=e.frameBufferManager.createRenderPassDescriptor(S,0,0,0,0,`load`,null),w=Math.max(0,s),T=Math.max(0,c),E=Math.max(1,l),D=Math.max(1,u),O=Math.max(0,Math.floor(w)),k=Math.max(0,Math.floor(T)),A=Math.max(1,Math.min(Math.ceil(w+E)-O,p-O)),j=Math.max(1,Math.min(Math.ceil(T+D)-k,m-k));if(A<=0||j<=0||O>=p||k>=m)return;let M=e.commandEncoder.beginRenderPass(C);M.setPipeline(h),M.setBindGroup(0,x),M.setViewport(w,T,E,D,0,1),M.setScissorRect(O,k,A,j),M.draw(6,1,0,0),M.end()}else{_d(e.commandEncoder,e.frameBufferManager,n);let i=Bp(e,n,s,c,l,u);Q[0]=Lp[0],Q[1]=Lp[1],Q[2]=Lp[2],Q[3]=Lp[3],Q[4]=Lp[4]/255,Q[5]=Lp[5]/255,Q[6]=Lp[6]/255,Q[7]=0;let a=vf(t,i,r,Q,{device:e.device,commandEncoder:e.commandEncoder,bufferManager:e.bufferManager,frameBufferManager:e.frameBufferManager,pipelineManager:e.pipelineManager,textureManager:e.textureManager,frameTextures:e.frameTextures}),d=n.msaa&&n.msaaTexture?.view,f=d?`filter_complex_blend_output_msaa`:`filter_complex_blend_output`,p=e.pipelineManager.getPipeline(f),m=e.pipelineManager.getBindGroupLayout(`positioned_texture`);if(p&&m&&a.texture&&n.texture){Q[0]=s,Q[1]=c,Q[2]=a.width,Q[3]=a.height,Q[4]=n.width,Q[5]=n.height,Q[6]=0,Q[7]=0;let t=o.acquireAndWriteUniformBuffer(Q),r=e.textureManager.createSampler(`container_blend_output_sampler`,!1);Fp[0].resource.buffer=t,Fp[1].resource=r,Fp[2].resource=a.texture.view;let i=e.device.createBindGroup({layout:m,entries:Fp}),l=d?n.msaaTexture.view:n.texture.view;d&&(n.msaaDirty=!0);let u=e.frameBufferManager.createRenderPassDescriptor(l,0,0,0,0,`load`,null),f=e.commandEncoder.beginRenderPass(u);f.setPipeline(p),f.setBindGroup(0,i),f.draw(6,1,0,0),f.end()}e.frameBufferManager.releaseTemporaryAttachment(i),e.frameBufferManager.releaseTemporaryAttachment(a)}},Hp=(e,t,n,r,i)=>{X.x=0,X.y=0;for(let a=0;n.length>a;)switch(n[a++]){case 0:{let o=tp(e,t,n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],n[a++],!!n[a++],r,i);e!==o&&i.frameBufferManager.releaseTemporaryAttachment(e),e=o}break;case 1:{let o=Ff(e,t,n[a++],n[a++],n[a++],r,i);e!==o&&i.frameBufferManager.releaseTemporaryAttachment(e),e=o}break;case 2:{Pp[0]=n[a++],Pp[1]=n[a++],Pp[2]=n[a++],Pp[3]=n[a++],Pp[4]=n[a++],Pp[5]=n[a++],Pp[6]=n[a++],Pp[7]=n[a++],Pp[8]=n[a++],Pp[9]=n[a++],Pp[10]=n[a++],Pp[11]=n[a++],Pp[12]=n[a++],Pp[13]=n[a++],Pp[14]=n[a++],Pp[15]=n[a++],Pp[16]=n[a++],Pp[17]=n[a++],Pp[18]=n[a++],Pp[19]=n[a++];let t=Vf(e,Pp,i);e!==t&&i.frameBufferManager.releaseTemporaryAttachment(e),e=t}break;case 3:{let t=n[a++],r=n[a++],o=t*r,s=new Float32Array(o);for(let e=0;e{if(_d(p.commandEncoder,p.frameBufferManager,e),o&&i&&s&&c){let n=Bp(p,e,0,0,e.width,e.height);p.frameBufferManager.releaseTemporaryAttachment(e);let o=Ys.getDevicePixelRatio();if(n=Hp(n,i,c,o,p),l){let e=W.get(l,`fTexture`);e&&p.frameBufferManager.releaseTemporaryAttachment(e),W.set(l,`fKey`,u),W.set(l,`fTexture`,n)}if(n){let e=n,c=null;Rp(a)||(c=zp(p,n,a),e=c);let u=Math.sqrt(i[0]*i[0]+i[1]*i[1]),d=Math.sqrt(i[2]*i[2]+i[3]*i[3]),f=s[0]*(u/o),h=s[1]*(d/o),g=f+i[4],_=h+i[5];Vp(p,e,t,r,g,_,m),c&&p.frameBufferManager.releaseTemporaryAttachment(c),l||p.frameBufferManager.releaseTemporaryAttachment(n)}}else{let n=Bp(p,e,0,0,e.width,e.height);if(p.frameBufferManager.releaseTemporaryAttachment(e),!Rp(a)){let e=zp(p,n,a);p.frameBufferManager.releaseTemporaryAttachment(n),n=e}Vp(p,n,t,r,i[4],i[5],m),p.frameBufferManager.releaseTemporaryAttachment(n)}},Wp=new Float32Array([1,1,0,0]),Gp=[],Kp=new Float32Array([0,0,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1,1,0,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1,0,1,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1,1,0,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1,1,1,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1,0,1,.5,.5,1,1,1,1,1,0,0,0,1,0,0,0,1]),qp=new Float32Array([0,0,1,0,0,1,1,0,1,1,0,1]),Jp=new Float32Array(8),Yp=new Float32Array([1,-1,0,1]),Xp=null,Zp=new WeakMap,Qp=new Float32Array(16),$p=null,em=null,tm=null,nm={view:null,clearValue:{r:0,g:0,b:0,a:0},loadOp:`clear`,storeOp:`store`},rm={colorAttachments:[nm]},im=[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null}],am={r:0,g:0,b:0,a:0},om={view:null,clearValue:am,loadOp:`clear`,storeOp:`store`,resolveTarget:void 0},sm={view:null,stencilClearValue:0,stencilLoadOp:`clear`,stencilStoreOp:`store`},cm={colorAttachments:[om]},lm={view:null,resolveTarget:void 0,loadOp:`load`,storeOp:`store`},um={view:null,stencilLoadOp:`load`,stencilStoreOp:`store`},dm={colorAttachments:[lm]};var fm=class{$stack;$matrix;$clearColorR;$clearColorG;$clearColorB;$clearColorA;$mainAttachmentObject;$stackAttachmentObject;globalAlpha;globalCompositeOperation;imageSmoothingEnabled;$fillStyle;$strokeStyle;maskBounds;thickness;caps;joints;miterLimit;device;canvasContext;preferredFormat;commandEncoder=null;renderPassEncoder=null;renderPassIsInstanced=!1;mainTexture=null;mainTextureView=null;frameStarted=!1;frameTextures=[];pooledTextures=[];pooledRenderTextures=[];currentRenderTarget=null;viewportWidth=0;viewportHeight=0;pathCommand;bufferManager;textureManager;frameBufferManager;pipelineManager;newDrawState=!1;_pendingAtlasNodes=[];$containerLayerStack=[];containerLayerContentSizes=[];inMaskMode=!1;nodeAreaCleared=!1;currentNodeScissor=null;nodeRenderPassAtlasIndex=-1;fillDynamicBindGroup=null;fillDynamicBindGroupBuffer=null;nodeClearQuadBuffer=null;useOptimizedInstancing=!0;$needsReconfigure=!1;$uniformData8=new Float32Array(8);$scissorRect={x:0,y:0,w:0,h:0};$filterConfig;constructor(e,t,n,r=1){this.device=e,this.canvasContext=t,this.preferredFormat=n,Ys.setDevice(e),Ys.setDevicePixelRatio(r);let i=e.limits.maxTextureDimension2D,a=Math.max(2048,i/2);Ys.setRenderMaxSize(a),this.$stack=Ys.createArray(),this.$stackAttachmentObject=Ys.createArray(),this.$matrix=Ys.createFloat32Array(9),this.$matrix.set([1,0,0,0,1,0,0,0,1]),this.$clearColorR=0,this.$clearColorG=0,this.$clearColorB=0,this.$clearColorA=0,this.thickness=1,this.caps=0,this.joints=2,this.miterLimit=0,this.$mainAttachmentObject=null,this.globalAlpha=1,this.globalCompositeOperation=`normal`,this.imageSmoothingEnabled=!1,this.$fillStyle=new Float32Array([1,1,1,1]),this.$strokeStyle=new Float32Array([1,1,1,1]),this.maskBounds={xMin:0,yMin:0,xMax:0,yMax:0},t.configure({device:e,format:n,alphaMode:`premultiplied`}),this.viewportWidth=t.canvas.width,this.viewportHeight=t.canvas.height,this.pathCommand=new rc,this.bufferManager=new gc(e),this.textureManager=new vc(e),this.frameBufferManager=new Gc(e,n),this.pipelineManager=new Ol(e,n),this.pipelineManager.warmupLazyGroupsAsync(),Ll(e=>{let t=Ys.getRenderMaxSize();return this.frameBufferManager.createAttachment(`atlas_${e}`,t,t,!1,!0)}),this.$filterConfig={device:this.device,commandEncoder:null,bufferManager:this.bufferManager,frameBufferManager:this.frameBufferManager,pipelineManager:this.pipelineManager,textureManager:this.textureManager,frameTextures:this.frameTextures},Zs(this)}clearTransferBounds(){this.beginFrame()}updateBackgroundColor(e,t,n,r){this.$clearColorR=e,this.$clearColorG=t,this.$clearColorB=n,this.$clearColorA=r}fillBackgroundColor(){if(!this.$mainAttachmentObject||!this.$mainAttachmentObject.texture)return;this.frameStarted||this.beginFrame(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.ensureCommandEncoder();let e=this.$mainAttachmentObject.msaa&&this.$mainAttachmentObject.msaaTexture?.view;om.view=e?this.$mainAttachmentObject.msaaTexture.view:this.$mainAttachmentObject.texture.view,om.resolveTarget=void 0,e&&(this.$mainAttachmentObject.msaaDirty=!0),am.r=this.$clearColorR,am.g=this.$clearColorG,am.b=this.$clearColorB,am.a=this.$clearColorA;let t=e&&this.$mainAttachmentObject.msaaStencil?.view?this.$mainAttachmentObject.msaaStencil.view:this.$mainAttachmentObject.stencil?.view;t?(sm.view=t,cm.depthStencilAttachment=sm):cm.depthStencilAttachment=void 0,this.renderPassEncoder=this.commandEncoder.beginRenderPass(cm),this.renderPassIsInstanced=!1,this.renderPassEncoder.end(),this.renderPassEncoder=null}resize(e,t,n=!0){this.clearArraysInstanced();for(let e of this.frameTextures)e.destroy();this.frameTextures.length=0;for(let e of this.pooledTextures)Vc(e);this.pooledTextures.length=0;for(let e of this.pooledRenderTextures)Uc(e);if(this.pooledRenderTextures.length=0,Wc(),this.frameStarted=!1,this.commandEncoder=null,this.renderPassEncoder=null,this.currentRenderTarget=null,gu(),this.$stackAttachmentObject.length){for(let e=0;e0?Gp.pop():new Float32Array(9);e.set(this.$matrix),this.$stack.push(e)}restore(){let e=this.$stack.pop();e&&(this.$matrix.set(e),Gp.push(e))}setTransform(e,t,n,r,i,a){this.$matrix[0]=e,this.$matrix[1]=t,this.$matrix[3]=n,this.$matrix[4]=r,this.$matrix[6]=i,this.$matrix[7]=a}transform(e,t,n,r,i,a){let o=this.$matrix,s=o[0],c=o[1],l=o[3],u=o[4],d=o[6],f=o[7];o[0]=e*s+t*l,o[1]=e*c+t*u,o[3]=n*s+r*l,o[4]=n*c+r*u,o[6]=i*s+a*l+d,o[7]=i*c+a*u+f}reset(){this.$matrix.set([1,0,0,0,1,0,0,0,1]),this.$stack.length=0,this.$stackAttachmentObject.length=0,this.globalAlpha=1,this.globalCompositeOperation=`normal`,this.imageSmoothingEnabled=!1}beginPath(){this.pathCommand.beginPath()}moveTo(e,t){this.pathCommand.moveTo(e,t)}lineTo(e,t){this.pathCommand.lineTo(e,t)}quadraticCurveTo(e,t,n,r){this.pathCommand.quadraticCurveTo(e,t,n,r)}fillStyle(e,t,n,r){this.$fillStyle[0]=e,this.$fillStyle[1]=t,this.$fillStyle[2]=n,this.$fillStyle[3]=r}strokeStyle(e,t,n,r){this.$strokeStyle[0]=e,this.$strokeStyle[1]=t,this.$strokeStyle[2]=n,this.$strokeStyle[3]=r}closePath(){this.pathCommand.closePath()}arc(e,t,n){this.pathCommand.arc(e,t,n)}bezierCurveTo(e,t,n,r,i,a){this.pathCommand.bezierCurveTo(e,t,n,r,i,a)}ensureFillRenderPass(){if(this.frameStarted||this.beginFrame(),this.ensureCommandEncoder(),this.renderPassEncoder){if(!this.renderPassIsInstanced){this.currentRenderTarget&&this.ensureNodeAreaCleared();return}this.renderPassEncoder.end(),this.renderPassEncoder=null,this.renderPassIsInstanced=!1}{let e=this.getCurrentTextureView(),t=Rl(),n=t?.msaa&&t?.msaaTexture?.view,r=n?t.msaaTexture.view:e,i=n?e:null;if(this.currentRenderTarget&&t?.stencil?.view){let e=n&&t?.msaaStencil?.view?t.msaaStencil.view:t.stencil.view,a=this.frameBufferManager.createStencilRenderPassDescriptor(r,e,`load`,`clear`,i);this.renderPassEncoder=this.commandEncoder.beginRenderPass(a),this.renderPassIsInstanced=!1}else if(!this.currentRenderTarget&&(du()||su())&&this.$mainAttachmentObject?.stencil?.view){let e=this.$mainAttachmentObject.msaa&&this.$mainAttachmentObject.msaaTexture?.view,t=e?this.$mainAttachmentObject.msaaTexture.view:this.$mainAttachmentObject.texture.view,n=e&&this.$mainAttachmentObject.msaaStencil?.view?this.$mainAttachmentObject.msaaStencil.view:this.$mainAttachmentObject.stencil.view;e&&(this.$mainAttachmentObject.msaaDirty=!0);let r=this.frameBufferManager.createStencilRenderPassDescriptor(t,n,`load`,`load`,null);this.renderPassEncoder=this.commandEncoder.beginRenderPass(r),this.renderPassIsInstanced=!1,du()&&this.renderPassEncoder.setStencilReference(pu())}else if(!this.currentRenderTarget&&this.$mainAttachmentObject){let e=this.$mainAttachmentObject.msaa&&this.$mainAttachmentObject.msaaTexture?.view,t=e?this.$mainAttachmentObject.msaaTexture.view:this.$mainAttachmentObject.texture.view;if(e&&(this.$mainAttachmentObject.msaaDirty=!0),this.$mainAttachmentObject.stencil?.view){let n=e&&this.$mainAttachmentObject.msaaStencil?.view?this.$mainAttachmentObject.msaaStencil.view:this.$mainAttachmentObject.stencil.view,r=this.frameBufferManager.createStencilRenderPassDescriptor(t,n,`load`,`clear`,null);this.renderPassEncoder=this.commandEncoder.beginRenderPass(r),this.renderPassIsInstanced=!1}else{let e=this.frameBufferManager.createRenderPassDescriptor(t,0,0,0,0,`load`,null);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e),this.renderPassIsInstanced=!1}}else{let e=this.frameBufferManager.createRenderPassDescriptor(r,0,0,0,0,`load`,i);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e),this.renderPassIsInstanced=!1}}this.currentRenderTarget&&this.ensureNodeAreaCleared()}fill(){let e=this.pathCommand.$getVertices;if(e.length===0)return;this.ensureFillRenderPass();let t=this.viewportWidth,n=this.viewportHeight,r=wu(e);if(r.indexCount===0)return;let i=this.bufferManager.acquireVertexBuffer(r.buffer.byteLength,r.buffer),a=this.writeFillUniform(this.$fillStyle[0],this.$fillStyle[1],this.$fillStyle[2],this.$fillStyle[3],this.$matrix[0],this.$matrix[1],this.$matrix[3],this.$matrix[4],this.$matrix[6],this.$matrix[7],t,n),o=this.getOrCreateFillDynamicBindGroup(),s=Rl();if(this.currentRenderTarget&&s?.stencil?.view)this.fillWithStencil(i,r.indexCount,o,a);else if(!this.currentRenderTarget&&!this.inMaskMode&&!du()&&this.$mainAttachmentObject?.stencil?.view)this.fillWithStencilMain(i,r.indexCount,o,a);else{let e=(this.inMaskMode||du())&&!!this.$mainAttachmentObject?.stencil?.view&&!this.currentRenderTarget;this.fillSimple(i,r.indexCount,e,o,a)}}getOrCreateFillDynamicBindGroup(){let e=this.bufferManager.dynamicUniform.getBuffer();if(!this.fillDynamicBindGroup||this.fillDynamicBindGroupBuffer!==e){let t=this.pipelineManager.getBindGroupLayout(`fill_dynamic`);if(!t)throw Error(`[WebGPU] fill_dynamic bind group layout not found`);this.fillDynamicBindGroup=this.device.createBindGroup({layout:t,entries:[{binding:0,resource:{buffer:e,size:256}}]}),this.fillDynamicBindGroupBuffer=e}return this.fillDynamicBindGroup}writeFillUniform(e,t,n,r,i,a,o,s,c,l,u,d){return Qp[0]=e,Qp[1]=t,Qp[2]=n,Qp[3]=r,Qp[4]=i/u,Qp[5]=a/d,Qp[6]=0,Qp[7]=0,Qp[8]=o/u,Qp[9]=s/d,Qp[10]=0,Qp[11]=0,Qp[12]=c/u,Qp[13]=l/d,Qp[14]=1,Qp[15]=0,this.bufferManager.dynamicUniform.allocate(Qp)}fillWithStencil(e,t,n,r){gd(this.renderPassEncoder,this.pipelineManager,e,t,n,r)}fillWithStencilMain(e,t,n,r){vd(this.renderPassEncoder,this.pipelineManager,e,t,n,r)}fillSimple(e,t,n,r,i){let a=this.$mainAttachmentObject?.clipLevel??1;yd(this.renderPassEncoder,this.pipelineManager,e,t,r,i,this.currentRenderTarget!==null,n,a)}stroke(){let e=this.pathCommand.getVerticesForStroke();if(e.length===0)return;this.ensureFillRenderPass();let t=this.viewportWidth,n=this.viewportHeight,r=Ju(e,this.thickness);if(r.length===0)return;let i=wu(r);if(i.indexCount===0)return;let a=this.bufferManager.acquireVertexBuffer(i.buffer.byteLength,i.buffer),o=this.writeFillUniform(this.$strokeStyle[0],this.$strokeStyle[1],this.$strokeStyle[2],this.$strokeStyle[3],this.$matrix[0],this.$matrix[1],this.$matrix[3],this.$matrix[4],this.$matrix[6],this.$matrix[7],t,n),s=this.getOrCreateFillDynamicBindGroup(),c=Rl();if(this.currentRenderTarget&&c?.stencil?.view)this.fillWithStencil(a,i.indexCount,s,o);else if(!this.currentRenderTarget&&!this.inMaskMode&&!du()&&this.$mainAttachmentObject?.stencil?.view)this.fillWithStencilMain(a,i.indexCount,s,o);else{let e=(this.inMaskMode||du())&&!!this.$mainAttachmentObject?.stencil?.view&&!this.currentRenderTarget;this.fillSimple(a,i.indexCount,e,s,o)}this.pathCommand.reset()}gradientFill(e,t,n,r,i,a){let o=this.pathCommand.$getVertices;if(o.length===0)return;this.ensureFillRenderPass();let s=this.viewportWidth,c=this.viewportHeight,l=!!((this.inMaskMode||du())&&this.$mainAttachmentObject?.stencil?.view&&!this.currentRenderTarget),u=this.currentRenderTarget!==null,d=Nd(this.device,this.renderPassEncoder,this.bufferManager,this.pipelineManager,o,this.$matrix,this.$fillStyle,e,t,n,r,i,a,s,c,u,l,this.$mainAttachmentObject?.clipLevel??1);d&&this.addFrameTexture(d),this.beginPath()}bitmapFill(e,t,n,r,i,a){let o=this.pathCommand.$getVertices;if(o.length===0)return;this.ensureFillRenderPass();let s=Rl(),c=!!(this.currentRenderTarget&&s?.stencil?.view),l=!!((this.inMaskMode||du())&&this.$mainAttachmentObject?.stencil?.view&&!this.currentRenderTarget),u=c||l,d=this.$mainAttachmentObject?.clipLevel??1,f=Bd(this.device,this.renderPassEncoder,this.bufferManager,this.pipelineManager,o,this.$matrix,this.$fillStyle,e,t,n,r,i,a,this.viewportWidth,this.viewportHeight,this.currentRenderTarget!==null,!!u,d);f&&this.addFrameTexture(f),this.beginPath()}gradientStroke(e,t,n,r,i,a){let o=this.pathCommand.getVerticesForStroke();if(o.length===0)return;this.ensureFillRenderPass();let s=Rl(),c=!!(this.currentRenderTarget&&s?.stencil?.view),l=!!(!this.currentRenderTarget&&this.$mainAttachmentObject?.stencil?.view),u=c||l,d=qd(this.device,this.renderPassEncoder,this.bufferManager,this.pipelineManager,o,this.thickness,this.$matrix,this.$strokeStyle,e,t,n,r,i,a,this.viewportWidth,this.viewportHeight,this.currentRenderTarget!==null,u);d&&this.addFrameTexture(d),this.pathCommand.reset()}bitmapStroke(e,t,n,r,i,a){let o=this.pathCommand.getVerticesForStroke();if(o.length===0)return;this.ensureFillRenderPass();let s=Rl(),c=!!(this.currentRenderTarget&&s?.stencil?.view),l=!!(!this.currentRenderTarget&&this.$mainAttachmentObject?.stencil?.view),u=c||l,d=$d(this.device,this.renderPassEncoder,this.bufferManager,this.pipelineManager,o,this.thickness,this.$matrix,this.$strokeStyle,e,t,n,r,i,a,this.viewportWidth,this.viewportHeight,this.currentRenderTarget!==null,u);d&&this.addFrameTexture(d),this.pathCommand.reset()}clip(){let e=this.frameBufferManager.getCurrentAttachment(),t=!e||e===this.$mainAttachmentObject;if(!e&&this.$mainAttachmentObject&&(e=this.$mainAttachmentObject),!e||!e.stencil)return;let n=this.pathCommand.$getVertices;if(n.length!==0){if(this.renderPassEncoder&&this.renderPassIsInstanced&&(this.renderPassEncoder.end(),this.renderPassEncoder=null,this.renderPassIsInstanced=!1),!this.renderPassEncoder){if(this.ensureCommandEncoder(),t&&this.$mainAttachmentObject?.stencil?.view){let e=this.$mainAttachmentObject.msaa&&this.$mainAttachmentObject.msaaTexture?.view,t=e?this.$mainAttachmentObject.msaaTexture.view:this.$mainAttachmentObject.texture.view,n=e&&this.$mainAttachmentObject.msaaStencil?.view?this.$mainAttachmentObject.msaaStencil.view:this.$mainAttachmentObject.stencil.view,r=this.frameBufferManager.createStencilRenderPassDescriptor(t,n,`load`,`load`);this.renderPassEncoder=this.commandEncoder.beginRenderPass(r),this.renderPassIsInstanced=!1}else return}af(this.device,this.renderPassEncoder,this.bufferManager,this.pipelineManager,e,n,this.$matrix,this.$fillStyle,this.globalAlpha,t)}}bind(e){this.frameBufferManager.setCurrentAttachment(e),this.viewportWidth=e.width,this.viewportHeight=e.height}get currentAttachmentObject(){return this.frameBufferManager.getCurrentAttachment()||this.$mainAttachmentObject}get atlasAttachmentObject(){return Rl()}useGrid(e){Yu.set(Xu,e)}beginNodeRendering(e){this.nodeAreaCleared=!1,this.frameStarted||this.beginFrame();let t=zl(e.index)||Rl();if(t&&t.texture){if(this.renderPassEncoder&&this.nodeRenderPassAtlasIndex===e.index)this.currentRenderTarget=t.texture.view,this.viewportWidth=t.width,this.viewportHeight=t.height;else{this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.currentRenderTarget=t.texture.view,this.viewportWidth=t.width,this.viewportHeight=t.height,this.ensureCommandEncoder();let n=t.msaa&&t.msaaTexture?.view,r=n?t.msaaTexture.view:t.texture.view,i=n?t.texture.view:null;if(t.stencil?.view){let e=n&&t.msaaStencil?.view?t.msaaStencil.view:t.stencil.view,a=this.frameBufferManager.createStencilRenderPassDescriptor(r,e,`load`,`load`,i);this.renderPassEncoder=this.commandEncoder.beginRenderPass(a),this.renderPassIsInstanced=!1}else{let e=this.frameBufferManager.createRenderPassDescriptor(r,0,0,0,0,`load`,i);this.renderPassEncoder=this.commandEncoder.beginRenderPass(e),this.renderPassIsInstanced=!1}this.nodeRenderPassAtlasIndex=e.index}let n=Math.max(0,e.x),r=Math.max(0,e.y),i=Math.min(e.w,t.width-n),a=Math.min(e.h,t.height-r);if(n=Math.min(n,t.width),r=Math.min(r,t.height),i=Math.max(0,Math.min(i,t.width-n)),a=Math.max(0,Math.min(a,t.height-r)),this.$scissorRect.x=n,this.$scissorRect.y=r,this.$scissorRect.w=i,this.$scissorRect.h=a,this.currentNodeScissor=this.$scissorRect,i>0&&a>0){let e=Math.min(i+1,t.width-n),o=Math.min(a+1,t.height-r);this.renderPassEncoder.setScissorRect(n,r,e,o)}}}ensureNodeAreaCleared(){this.nodeAreaCleared||(this.nodeAreaCleared=!0,this.clearNodeArea())}clearNodeArea(){if(!this.renderPassEncoder)return;let e=this.pipelineManager.getPipeline(`node_clear_atlas`);if(!e)return;if(!this.nodeClearQuadBuffer){let e=this.device.createBuffer({size:qp.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});new Float32Array(e.getMappedRange()).set(qp),e.unmap(),this.nodeClearQuadBuffer=e}let t=this.nodeClearQuadBuffer;this.renderPassEncoder.setPipeline(e),this.renderPassEncoder.setVertexBuffer(0,t),this.renderPassEncoder.draw(6),this.currentNodeScissor&&this.renderPassEncoder.setScissorRect(this.currentNodeScissor.x,this.currentNodeScissor.y,this.currentNodeScissor.w,this.currentNodeScissor.h)}endNodeRendering(){this.currentRenderTarget=null,this.currentNodeScissor=null,this.viewportWidth=this.canvasContext.canvas.width,this.viewportHeight=this.canvasContext.canvas.height}drawFill(){Zu()}drawDisplayObject(e,t,n,r,i,a){let o=Ys.getRenderMaxSize();iu(e,t,n,r,i,a,this.$matrix,this.globalCompositeOperation,this.viewportWidth,this.viewportHeight,o,this.globalAlpha)}resolveMainAttachment(){let e=this.$mainAttachmentObject;!e||!e.msaaDirty||!e.msaa||!e.msaaTexture?.view||!e.texture?.view||(this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null,this.renderPassIsInstanced=!1),this.ensureCommandEncoder(),_d(this.commandEncoder,this.frameBufferManager,e))}drawArraysInstanced(){if(this.frameStarted||this.beginFrame(),this.renderPassEncoder&&!this.renderPassIsInstanced&&(this.renderPassEncoder.end(),this.renderPassEncoder=null),this.nodeRenderPassAtlasIndex=-1,this.ensureCommandEncoder(),this.$mainAttachmentObject){if(this.useOptimizedInstancing){let e=this.renderPassEncoder;this.renderPassEncoder=hf(this.device,this.commandEncoder,this.renderPassEncoder,this.$mainAttachmentObject,this.bufferManager,this.frameBufferManager,this.textureManager,this.pipelineManager,!1,!0,this.renderPassIsInstanced),this.renderPassIsInstanced=this.renderPassEncoder!==null&&(this.renderPassEncoder!==e||this.renderPassIsInstanced)}else this.renderPassEncoder=uf(this.device,this.commandEncoder,this.renderPassEncoder,this.$mainAttachmentObject,this.bufferManager,this.frameBufferManager,this.textureManager,this.pipelineManager),this.renderPassIsInstanced=!1;this.processComplexBlendQueue()}}processComplexBlendQueue(){eu().length&&(this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null,this.renderPassIsInstanced=!1),this.resolveMainAttachment(),this.ensureCommandEncoder(),Ef(this.device,this.commandEncoder,this.$mainAttachmentObject,this.frameBufferManager,this.textureManager,this.pipelineManager,this.bufferManager))}clearArraysInstanced(){ru().clear()}drawPixels(e,t){let n=zl(e.index)||Rl();if(!n||!n.texture)return;let r=e.w,i=e.h;if(this.renderPassEncoder&&=(this.ensureNodeAreaCleared(),this.renderPassEncoder.end(),null),this.nodeRenderPassAtlasIndex=-1,n.msaa&&n.msaaTexture?.view)this.drawPixelsToMsaa(n,e,t,r,i);else{let a=r*4;this.device.queue.writeTexture({texture:n.texture.resource,origin:{x:e.x,y:e.y,z:0}},t,{bytesPerRow:a,rowsPerImage:i,offset:0},{width:r,height:i,depthOrArrayLayers:1})}}drawPixelsToMsaa(e,t,n,r,i){let a=Hc(this.device,r,i),o=r*4;this.device.queue.writeTexture({texture:a},n,{bytesPerRow:o,rowsPerImage:i},{width:r,height:i});let s=this.pipelineManager.getPipeline(`bitmap_render_msaa`);if(!s){Uc(a);return}let c=this.pipelineManager.getBindGroupLayout(`positioned_texture`);if(!c){Uc(a);return}let l=this.$uniformData8;l[0]=t.x,l[1]=t.y,l[2]=r,l[3]=i,l[4]=e.width,l[5]=e.height,l[6]=0,l[7]=0;let u=this.bufferManager.acquireAndWriteUniformBuffer(l),d=this.textureManager.createSampler(`linear_sampler`,!0),f=Fc(a);im[0].resource.buffer=u,im[1].resource=d,im[2].resource=f;let p=this.device.createBindGroup({layout:c,entries:im});this.ensureCommandEncoder(),lm.view=e.msaaTexture.view,lm.resolveTarget=e.texture.view;let m=e.msaaStencil?.view;m?(um.view=m,dm.depthStencilAttachment=um):dm.depthStencilAttachment=void 0;let h=this.commandEncoder.beginRenderPass(dm);h.setViewport(0,0,e.width,e.height,0,1),h.setScissorRect(t.x,t.y,r,i),h.setPipeline(s),h.setBindGroup(0,p),h.draw(6),h.end(),this.pooledRenderTextures.push(a)}drawElement(e,t,n=!1){let r=zl(e.index)||Rl();if(!r||!r.texture)return;let i=e.w,a=e.h;this.renderPassEncoder&&=(this.ensureNodeAreaCleared(),this.renderPassEncoder.end(),null),this.nodeRenderPassAtlasIndex=-1,r.msaa&&r.msaaTexture?.view?this.drawElementToMsaa(r,e,t,i,a,n):this.drawElementToTexture(r,e,t,i,a,n)}drawElementToMsaa(e,t,n,r,i,a){let o=Hc(this.device,r,i);this.device.queue.copyExternalImageToTexture({source:n,flipY:a},{texture:o,premultipliedAlpha:!0},{width:r,height:i});let s=this.pipelineManager.getPipeline(`bitmap_render_msaa`);if(!s){Uc(o);return}let c=this.pipelineManager.getBindGroupLayout(`positioned_texture`);if(!c){Uc(o);return}let l=this.$uniformData8;l[0]=t.x,l[1]=t.y,l[2]=r,l[3]=i,l[4]=e.width,l[5]=e.height,l[6]=0,l[7]=0;let u=this.bufferManager.acquireAndWriteUniformBuffer(l),d=this.textureManager.createSampler(`linear_sampler`,!0),f=Fc(o);im[0].resource.buffer=u,im[1].resource=d,im[2].resource=f;let p=this.device.createBindGroup({layout:c,entries:im});this.ensureCommandEncoder(),lm.view=e.msaaTexture.view,lm.resolveTarget=e.texture.view;let m=e.msaaStencil?.view;m?(um.view=m,dm.depthStencilAttachment=um):dm.depthStencilAttachment=void 0;let h=this.commandEncoder.beginRenderPass(dm);h.setViewport(0,0,e.width,e.height,0,1),h.setScissorRect(t.x,t.y,r,i),h.setPipeline(s),h.setBindGroup(0,p),h.draw(6),h.end(),this.pooledRenderTextures.push(o)}drawElementToTexture(e,t,n,r,i,a){let o=Hc(this.device,r,i);this.device.queue.copyExternalImageToTexture({source:n,flipY:a},{texture:o,premultipliedAlpha:!0},{width:r,height:i});let s=this.pipelineManager.getPipeline(`bitmap_render`);if(!s){Uc(o);return}let c=this.pipelineManager.getBindGroupLayout(`positioned_texture`);if(!c){Uc(o);return}let l=this.$uniformData8;l[0]=t.x,l[1]=t.y,l[2]=r,l[3]=i,l[4]=e.width,l[5]=e.height,l[6]=0,l[7]=0;let u=this.bufferManager.acquireAndWriteUniformBuffer(l),d=this.textureManager.createSampler(`linear_sampler`,!0),f=Fc(o);im[0].resource.buffer=u,im[1].resource=d,im[2].resource=f;let p=this.device.createBindGroup({layout:c,entries:im});this.ensureCommandEncoder(),lm.view=e.texture.view,lm.resolveTarget=void 0;let m=e.stencil?.view;m?(um.view=m,dm.depthStencilAttachment=um):dm.depthStencilAttachment=void 0;let h=this.commandEncoder.beginRenderPass(dm);h.setViewport(0,0,e.width,e.height,0,1),h.setScissorRect(t.x,t.y,r,i),h.setPipeline(s),h.setBindGroup(0,p),h.draw(6),h.end(),this.pooledRenderTextures.push(o)}applyFilter(e,t,n,r,i,a,o,s,c,l,u){this.drawArraysInstanced(),this.frameStarted||this.beginFrame(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.nodeRenderPassAtlasIndex=-1,this.ensureCommandEncoder(),this.$filterConfig.commandEncoder=this.commandEncoder,this.$filterConfig.mainAttachment=this.$mainAttachmentObject,Mp(e,r,i,a,o,s,c,l,u,this.$filterConfig,this.mainTextureView,this.bufferManager)}containerBeginLayer(e,t){this.drawArraysInstanced(),this.frameStarted||this.beginFrame(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null);let n=this.$mainAttachmentObject;this.$containerLayerStack.push(n),this.containerLayerContentSizes.push({width:e,height:t});let r=this.frameBufferManager.createAttachment(`container_layer`,e,t,n.msaa,!0);this.$mainAttachmentObject=r,this.bind(r)}containerEndLayer(e,t,n,r,i,a,o,s,c=1,l=1){this.drawArraysInstanced(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.ensureCommandEncoder();let u=this.$mainAttachmentObject,d=this.containerLayerContentSizes.pop()||{width:u.width,height:u.height};this.$mainAttachmentObject=this.$containerLayerStack.pop(),this.$filterConfig.commandEncoder=this.commandEncoder,this.$filterConfig.mainAttachment=void 0,Up(u,this.$mainAttachmentObject,`container_layer`,e,t,n,r,i,a,o,s,d.width,d.height,this.$filterConfig,this.bufferManager,c,l),this.bind(this.$mainAttachmentObject)}containerBeginAtlasNode(e,t){this.drawArraysInstanced();let n=this.createNode(e,t);this._pendingAtlasNodes.push(n);let r=this.$mainAttachmentObject;this.$containerLayerStack.push(r),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null);let i=this.frameBufferManager.createAttachment(`container_layer`,e,t,r.msaa,!0);return this.$mainAttachmentObject=i,this.bind(i),n}containerEndAtlasNode(){this.drawArraysInstanced(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.ensureCommandEncoder();let e=this.$mainAttachmentObject,t=this._pendingAtlasNodes.pop();this.$mainAttachmentObject=this.$containerLayerStack.pop(),_d(this.commandEncoder,this.frameBufferManager,e),this.copyTempToAtlasNode(e,t),this.frameBufferManager.releaseTemporaryAttachment(e),this.bind(this.$mainAttachmentObject)}copyTempToAtlasNode(e,t){let n=zl(t.index)||Rl();if(!n||!n.texture||!e.texture)return;let r=n.msaa&&n.msaaTexture?.view,i=r?`texture_copy_rgba8_msaa`:`texture_copy_rgba8`,a=this.pipelineManager.getPipeline(i),o=this.pipelineManager.getBindGroupLayout(`texture_copy`);if(!a||!o)return;Xp||(Xp=this.device.createBuffer({size:Yp.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.device.queue.writeBuffer(Xp,0,Yp.buffer,Yp.byteOffset,Yp.byteLength));let s=e.texture.view,c=Zp.get(s);if(!c){let e=this.textureManager.createSampler(`container_atlas_copy`,!1);c=this.device.createBindGroup({layout:o,entries:[{binding:0,resource:{buffer:Xp}},{binding:1,resource:e},{binding:2,resource:s}]}),Zp.set(s,c)}let l=r?n.msaaTexture.view:n.texture.view,u=r?n.texture.view:null,d=this.frameBufferManager.createRenderPassDescriptor(l,0,0,0,0,`load`,u),f=this.commandEncoder.beginRenderPass(d);f.setViewport(t.x,t.y,t.w,t.h,0,1),f.setScissorRect(t.x,t.y,t.w,t.h),f.setPipeline(a),f.setBindGroup(0,c),f.draw(6,1,0,0),f.end(),this.nodeRenderPassAtlasIndex=-1}containerDrawCachedFilter(e,t,n,r,i,a){if(W.get(i,`fKey`)!==a)return;let o=W.get(i,`fTexture`);if(!o||!o.texture)return;this.drawArraysInstanced(),this.frameStarted||this.beginFrame(),this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.ensureCommandEncoder();let s=this.$mainAttachmentObject;if(!s||!s.texture)return;let c=o,l=null;if(n[0]!==1||n[1]!==1||n[2]!==1||n[3]!==1||n[4]!==0||n[5]!==0||n[6]!==0||n[7]!==0){l=this.frameBufferManager.createTemporaryAttachment(o.width,o.height);let e=this.pipelineManager.getPipeline(`color_transform`),t=this.pipelineManager.getBindGroupLayout(`texture_copy`);if(e&&t&&l.texture){Jp[0]=n[0],Jp[1]=n[1],Jp[2]=n[2],Jp[3]=n[3],Jp[4]=n[4],Jp[5]=n[5],Jp[6]=n[6],Jp[7]=0;let r=Jp,i=this.bufferManager.acquireAndWriteUniformBuffer(r),a=this.textureManager.createSampler(`cached_ct_sampler`,!1);im[0].resource.buffer=i,im[1].resource=a,im[2].resource=o.texture.view;let s=this.device.createBindGroup({layout:t,entries:im}),u=this.frameBufferManager.createRenderPassDescriptor(l.texture.view,0,0,0,0,`clear`),d=this.commandEncoder.beginRenderPass(u);d.setPipeline(e),d.setBindGroup(0,s),d.draw(6,1,0,0),d.end(),c=l}}let u=Ys.getDevicePixelRatio(),d=Math.sqrt(t[0]*t[0]+t[1]*t[1]),f=Math.sqrt(t[2]*t[2]+t[3]*t[3]),p=r[0]*(d/u),m=r[1]*(f/u),h=Math.floor(p+t[4]),g=Math.floor(m+t[5]),_=s.msaa&&s.msaaTexture?.view,v;switch(e){case`add`:v=_?`filter_output_add_msaa`:`filter_output_add`;break;case`screen`:v=_?`filter_output_screen_msaa`:`filter_output_screen`;break;case`alpha`:v=_?`filter_output_alpha_msaa`:`filter_output_alpha`;break;case`erase`:v=_?`filter_output_erase_msaa`:`filter_output_erase`;break;default:v=_?`filter_output_msaa`:`filter_output`}let y=this.pipelineManager.getPipeline(v),b=this.pipelineManager.getBindGroupLayout(`texture_copy`);if(!y||!b)return;let x=this.textureManager.createSampler(`cached_filter_sampler`,!0),S=this.bufferManager.acquireAndWriteUniformBuffer(Wp);im[0].resource.buffer=S,im[1].resource=x,im[2].resource=c.texture.view;let C=this.device.createBindGroup({layout:b,entries:im}),w=_?s.msaaTexture.view:s.texture.view;_&&(s.msaaDirty=!0);let T=this.frameBufferManager.createRenderPassDescriptor(w,0,0,0,0,`load`,null),E=Math.max(0,h),D=Math.max(0,g),O=Math.max(1,c.width),k=Math.max(1,c.height),A=s.width,j=s.height,M=Math.max(1,Math.min(O,A-E)),N=Math.max(1,Math.min(k,j-D));if(M<=0||N<=0||E>=A||D>=j){l&&this.frameBufferManager.releaseTemporaryAttachment(l);return}let P=this.commandEncoder.beginRenderPass(T);P.setPipeline(y),P.setBindGroup(0,C),P.setViewport(E,D,O,k,0,1),P.setScissorRect(E,D,M,N),P.draw(6,1,0,0),P.end(),l&&this.frameBufferManager.releaseTemporaryAttachment(l),this.bind(s)}ensureMainTexture(){this.mainTexture||(this.$needsReconfigure&&=(this.canvasContext.configure({device:this.device,format:this.preferredFormat,alphaMode:`premultiplied`}),!1),this.mainTexture=this.canvasContext.getCurrentTexture(),this.mainTextureView=this.mainTexture.createView())}getCurrentTextureView(){return this.currentRenderTarget?this.currentRenderTarget:(this.ensureMainTexture(),this.mainTextureView)}ensureCommandEncoder(){this.commandEncoder||=this.device.createCommandEncoder()}beginFrame(){this.frameStarted||(this.ensureMainTexture(),this.ensureCommandEncoder(),this.frameStarted=!0,this.frameBufferManager.beginFrame())}addFrameTexture(e){this.pooledTextures.push(e)}endFrame(){if(this.frameStarted){if(this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.bufferManager.dynamicUniform.flush(),this.commandEncoder)try{let e=this.commandEncoder.finish();this.device.queue.submit([e])}catch(e){console.error(`Failed to submit frame commands:`,e)}this.frameBufferManager.flushPendingReleases(),this.bufferManager.clearFrameBuffers();for(let e of this.frameTextures)e.destroy();this.frameTextures.length=0;for(let e of this.pooledTextures)Vc(e);this.pooledTextures.length=0;for(let e of this.pooledRenderTextures)Uc(e);this.pooledRenderTextures.length=0,ad(),md(),this.fillDynamicBindGroup=null,this.fillDynamicBindGroupBuffer=null,this.commandEncoder=null,this.renderPassEncoder=null,this.currentRenderTarget=null,this.nodeRenderPassAtlasIndex=-1,this.mainTexture=null,this.mainTextureView=null,this.frameStarted=!1}}submit(){this.endFrame()}createNode(e,t){let n=Nl();if(!Bl[n]){let e=Ys.getRenderMaxSize();Bl[n]=new ri(n,e,e)}return Bl[n].insert(e,t)||(Ml(n+1),this.createNode(e,t))}removeNode(e){let t=e.index,n=Bl[t];n&&n.dispose(e.x,e.y,e.w,e.h)}releaseTextureCache(e){if(!(!e||typeof e!=`object`)){if(`w`in e){let t=e,n=Bl[t.index];n&&n.dispose(t.x,t.y,t.w,t.h)}else(`color`in e||`texture`in e)&&this.frameBufferManager.releaseTemporaryAttachment(e)}}transferMainCanvas(){if(!this.$mainAttachmentObject||!this.$mainAttachmentObject.texture){this.endFrame();return}this.renderPassEncoder&&=(this.renderPassEncoder.end(),null),this.ensureCommandEncoder(),this.ensureMainTexture();let e=this.pipelineManager.getPipeline(`texture_copy_bgra`),t=this.pipelineManager.getBindGroupLayout(`texture_copy`);if(!e||!t){console.error(`[WebGPU] texture_copy_bgra pipeline not found`),this.endFrame();return}this.resolveMainAttachment();let n=this.$mainAttachmentObject.texture.view;if(!$p||em!==n){tm||(tm=this.device.createBuffer({size:Wp.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.device.queue.writeBuffer(tm,0,Wp.buffer,Wp.byteOffset,Wp.byteLength));let e=this.textureManager.createSampler(`transfer_sampler`,!1);im[0].resource={buffer:tm},im[1].resource=e,im[2].resource=n,$p=this.device.createBindGroup({layout:t,entries:im}),em=n}let r=$p;nm.view=this.mainTextureView;let i=this.commandEncoder.beginRenderPass(rm);i.setPipeline(e),i.setBindGroup(0,r),i.draw(6,1,0,0),i.end(),this.endFrame()}async createImageBitmap(e,t){let n=this.$mainAttachmentObject;if(!n||!n.texture)throw Error(`[WebGPU] Main attachment not found`);this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null,this.renderPassIsInstanced=!1),this.resolveMainAttachment();let r=Math.ceil(e*4/256)*256,i=r*t,a=this.device.createBuffer({size:i,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ});this.ensureCommandEncoder(),this.commandEncoder.copyTextureToBuffer({texture:n.texture.resource,mipLevel:0,origin:{x:0,y:0,z:0}},{buffer:a,bytesPerRow:r,rowsPerImage:t},{width:e,height:t,depthOrArrayLayers:1}),this.endFrame(),await a.mapAsync(GPUMapMode.READ);let o=a.getMappedRange(),s=new Uint8Array(o),c=this.preferredFormat===`bgra8unorm`,l=new Uint8Array(e*t*4),u=e*4;for(let e=0;e1&&i){let t=`clip_clear_main_${Math.min(8,Math.max(1,e))}`,n=this.pipelineManager.getPipeline(t);if(n){let e=this.frameBufferManager.createStencilRenderPassDescriptor(r,i,`load`,`load`),t=this.commandEncoder.beginRenderPass(e),a=this.bufferManager.acquireVertexBuffer(Kp.byteLength,Kp);t.setPipeline(n),t.setStencilReference(0),t.setVertexBuffer(0,a),t.draw(6,1,0,0),t.end()}}}};let $,pm=e=>{$=e},mm,hm=e=>{mm=e},gm=0,_m=()=>gm,vm=0,ym=()=>vm,bm=!1,xm=(e,t)=>{bm=!0,gm=e,vm=t},Sm=()=>bm,Cm=()=>{mm.width=gm,mm.height=vm,bm=!1},wm=[],Tm=(...e)=>{let t=wm.pop()||[];return e.length&&t.push(...e),t},Em=(e,t=1)=>({R:(e&16711680)>>16,G:(e&65280)>>8,B:e&255,A:t*255}),Dm=async(e,t)=>{if(hm(e),`gpu`in navigator){let n=navigator.gpu,r=await n.requestAdapter();if(!r)throw Error(`WebGPU adapter not available`);let i=await r.requestDevice();if(!i)throw Error(`WebGPU device not available`);let a=e.getContext(`webgpu`);if(!a)throw Error(`WebGPU context not available`);let o=n.getPreferredCanvasFormat();pm(new fm(i,a,o,t))}else{let n=e.getContext(`webgl2`,{stencil:!0,premultipliedAlpha:!0,antialias:!1,depth:!1});if(!n)throw Error(`webgl2 is not supported.`);pm(new Js(n,4,t))}},Om=(e,t,n=!0)=>{(_m()!==e||ym()!==t)&&(xm(e,t),$.resize(e,t,n),n&&W.reset())},km=(e,t=!1)=>{let n=0;for(;e.length>n;)switch(e[n++]){case 9:$.beginPath();break;case 0:$.moveTo(e[n++],e[n++]);break;case 2:$.lineTo(e[n++],e[n++]);break;case 1:$.quadraticCurveTo(e[n++],e[n++],e[n++],e[n++]);break;case 5:if(t){n+=4;break}$.fillStyle(e[n++]/255,e[n++]/255,e[n++]/255,e[n++]/255);break;case 7:$.fill();break;case 6:if(t){n+=8;break}$.thickness=e[n++],$.caps=e[n++],$.joints=e[n++],$.miterLimit=e[n++],$.strokeStyle(e[n++]/255,e[n++]/255,e[n++]/255,e[n++]/255);break;case 8:if(t)break;$.stroke();break;case 12:$.closePath();break;case 4:$.arc(e[n++],e[n++],e[n++]);break;case 3:$.bezierCurveTo(e[n++],e[n++],e[n++],e[n++],e[n++],e[n++]);break;case 10:{if(t){n+=1;let t=e[n++];n+=t*5,n+=9,$.fill();break}let r=e[n++],i=Tm(),a=e[n++];for(let t=0;t{switch(e){case 0:return`copy`;case 1:return`add`;case 2:return`alpha`;case 3:return`darken`;case 4:return`difference`;case 5:return`erase`;case 6:return`hardlight`;case 7:return`invert`;case 8:return`layer`;case 9:return`lighten`;case 10:return`multiply`;case 11:return`normal`;case 12:return`overlay`;case 13:return`screen`;case 14:return`subtract`;default:return`normal`}},jm=(e,t)=>{let n=e.subarray(t,t+6);t+=6;let r=e.subarray(t,t+8);t+=8;let i=e.subarray(t,t+4);t+=4;let a=e[t++],o=e[t++],s=e[t++],c=e[t++],l=!!e[t++],u=!!e[t++],d=e[t++],f=d===1,p=d===2,m=`${e[t++]}`,h=`${e[t++]}`,g=e[t++],_=e[t++],v=e[t++],y;if(!e[t++]){let n=l?new Float32Array(28):null;n&&(n.set(e.subarray(t,t+24)),t+=24),$.useGrid(n);let r=e[t++],i=!u&&!l,d=i?null:e.subarray(t,t+r);if(f&&!l){let n=Math.ceil(Math.abs(s-a)),i=Math.ceil(Math.abs(c-o)),l=W.get(m,h);l&&$.removeNode(l),y=$.createNode(n,i),W.set(m,h,y);let f=$.currentAttachmentObject,p=$.atlasAttachmentObject;p&&$.bind(p),$.reset(),$.beginNodeRendering(y);let g=p?p.height-y.y-i:0;$.setTransform(1,0,0,1,y.x,g),u?(km(d),$.drawFill()):$.drawPixels(y,new Uint8Array(e.buffer,e.byteOffset+t*4,r)),$.endNodeRendering(),f&&$.bind(f)}else{let e=Math.ceil(Math.abs(s-a)*g),t=Math.ceil(Math.abs(c-o)*_),r=W.get(m,h);r&&$.removeNode(r),y=$.createNode(e,t),W.set(m,h,y);let i=$.currentAttachmentObject,l=$.atlasAttachmentObject;l&&$.bind(l),$.reset(),$.beginNodeRendering(y);let u=l?l.height-y.y-t:0;$.setTransform(g,0,0,_,-a*g+y.x,-o*_+u),n&&(n[24]=y.x,n[25]=u),km(d),$.drawFill(),$.endNodeRendering(),i&&$.bind(i)}t+=i?Math.ceil(r/4):r}else if(y=W.get(m,h),!y)return t;let b=e[t++];if(e[t++]){let a=!!e[t++],o=e.subarray(t,t+4);t+=4;let s=e[t++],c=e.subarray(t,t+s),l=Math.ceil(Math.abs(i[2]-i[0])),u=Math.ceil(Math.abs(i[3]-i[1]));return $.applyFilter(y,`${v}`,a,l,u,f,n,r,Am(b),o,c),t+=s,t}if($.globalAlpha=Math.min(Math.max(0,r[3]+r[7]/255),1),$.imageSmoothingEnabled=!0,$.globalCompositeOperation=Am(b),f&&!l)$.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),$.drawDisplayObject(y,i[0],i[1],i[2],i[3],r);else if(p){let e=n[0]*a+n[2]*o+n[4],t=n[1]*a+n[3]*o+n[5];$.setTransform(n[0]/g,n[1]/g,n[2]/_,n[3]/_,e,t),$.drawDisplayObject(y,i[0],i[1],i[2],i[3],r)}else{let e=Math.atan2(n[1],n[0]),t=Math.atan2(-n[2],n[3]);if(e||t){let r=a*g,i=o*_,s=Math.cos(e),c=Math.sin(e),l=Math.cos(t),u=Math.sin(t);$.setTransform(s,c,-u,l,r*s-i*u+n[4],r*c+i*l+n[5])}else $.setTransform(1,0,0,1,i[0],i[1]);$.drawDisplayObject(y,i[0],i[1],i[2],i[3],r)}return t},Mm=(e,t)=>{let n=e.subarray(t,t+6);t+=6,$.reset(),$.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]);let r=e[t++]?new Float32Array(28):null;$.useGrid(r),r&&(r.set(e.subarray(t,t+24)),t+=24);let i=e[t++],a=e.subarray(t,t+i);return km(a,!0),t+=i,$.clip(),t},Nm=(e,t,n)=>{let r=e.widthTable[t.line]||0,i=t.textFormat,a=i.leftMargin||0;if(!n.wordWrap&&r>n.rawWidth)return Math.max(0,a);let o=i.rightMargin||0;return i.align===`center`||n.autoSize===`center`?Math.max(0,n.rawWidth/2-a-o-r/2-2):i.align===`right`||n.autoSize===`right`?Math.max(0,n.rawWidth-a-r-o-4):Math.max(0,a)},Pm=e=>{let t=``;return e.italic&&(t+=`italic `),e.bold&&(t+=`bold `),`${t}${e.size}px '${e.font}','sans-serif'`},Fm=(e,t,n,r)=>{let i=new OffscreenCanvas(t.width,t.height),a=i.getContext(`2d`);if(!a)return i;let o=Math.min(1,Math.max(n,r));if(t.background||t.border){if(a.beginPath(),a.moveTo(0,0),a.lineTo(t.width,0),a.lineTo(t.width,t.height),a.lineTo(0,t.height),a.lineTo(0,0),t.background){let e=Em(t.backgroundColor);a.fillStyle=`rgba(${e.R},${e.G},${e.B},${e.A})`,a.fill()}if(t.border){let e=Em(t.borderColor);a.lineWidth=o,a.strokeStyle=`rgba(${e.R},${e.G},${e.B},${e.A})`,a.stroke()}}if(!e)return i;a.save(),a.beginPath(),a.moveTo(2,2),a.lineTo(t.width-2,2),a.lineTo(t.width-2,t.height-2),a.lineTo(2,t.height-2),a.lineTo(2,2),a.clip();let s=2;if(t.scrollX>0){let e=(t.textWidth+4-t.rawWidth)/t.rawWidth;s+=-t.scrollX*e}let c=2;if(t.scrollY>0){let e=(t.textHeight+2-t.rawHeight)/t.rawHeight;c+=-t.scrollY*e}if(a.setTransform(n,0,0,r,s*n,c*r),a.beginPath(),t.selectIndex>-1&&t.focusIndex>-1){let n=e.textTable.length-1,r=0,i=0;t.focusIndex<=t.selectIndex?(r=Math.min(t.focusIndex,n),i=Math.min(t.selectIndex,n)):(r=Math.min(t.selectIndex,n),i=Math.min(t.focusIndex-1,n));let o=e.textTable[r],s=e.lineTable[o.line],c=Nm(e,s,t),l=0;if(r&&o.mode===`text`){let t=r;for(;t;){let n=e.textTable[--t];if(n.mode!==`text`)break;l+=n.w}}a.fillStyle=`#b4d7ff`;let u=0;for(let t=r;t<=i;++t){let n=e.textTable[t];if(n.mode===`text`&&(u+=n.w,t!==i))continue;let r=0,o=n.mode===`text`?n.line:n.line-1;for(let t=0;t0){let e=(t.textWidth-l)/l;u=t.scrollX*e}let d=l+u,f=t.rawHeight,p=0;if(t.scrollY>0){let e=(t.textHeight-f)/f;p=t.scrollY*e}let m=f+p,h=0,g=0,_=0,v=0,y=!1,b=-1;for(let n=0;n-1&&b>t.stopIndex))break;if(y&&r.mode===`text`)continue;let i=r.textFormat;if(t.autoSize===`none`){if(g>m)break;if(r.mode===`text`&&(u>h+r.w||h>d)){h+=r.w;continue}}let s=Em(i.color||0);if(a.fillStyle=`rgba(${s.R},${s.G},${s.B},${s.A})`,t.focusVisible&&t.focusIndex===n){let t=h+_+.1,n=r.line,i=r.y,o=e.ascentTable[n];r.mode!==`text`&&(i=r.mode===`break`?r.h:e.ascentTable[n-1],n>0?(n=r.line-1,o=e.ascentTable[n]):o=r.h),n>0&&e.ascentTable[n]===0&&n++;for(let t=0;tg+e.heightTable[c]){y=!0;continue}v=e.ascentTable[c],_=Nm(e,r,t),y=!1;break;case`text`:{a.beginPath(),a.font=Pm(i);let e=h+_,n=g+v;if(i.underline){let t=Em(i.color||0);a.lineWidth=o,a.strokeStyle=`rgba(${t.R},${t.G},${t.B},${t.A})`,a.beginPath(),a.moveTo(e,n+2),a.lineTo(e+r.w,n+2),a.stroke()}t.thickness&&a.strokeText(r.text,e,n),a.fillText(r.text,e,n),h+=r.w}}}if(t.focusVisible&&t.focusIndex>=e.textTable.length){let n=e.textTable[t.focusIndex-1];if(n){let e=Em(n.textFormat.color||0);a.strokeStyle=`rgba(${e.R},${e.G},${e.B},${e.A})`;let t=h+_+.1,r=g+v;a.beginPath(),n.mode===`text`?a.moveTo(t,r-n.y):a.moveTo(t,r+n.h),a.lineTo(t,r),a.stroke()}}return a.restore(),i},Im=new TextDecoder,Lm=(e,t)=>{let n=e.subarray(t,t+6);t+=6;let r=e.subarray(t,t+8);t+=8;let i=e.subarray(t,t+4);t+=4;let a=e[t++],o=e[t++],s=e[t++],c=e[t++],l=`${e[t++]}`,u=`${e[t++]}`,d=e[t++],f=!!(d&1),p=!!(d&2),m=e[t++],h=e[t++],g=e[t++],_;if(!e[t++]){let n=Math.ceil(Math.abs(s-a)*m),r=Math.ceil(Math.abs(c-o)*h);if(e[t++])_=W.get(l,u);else{let e=W.get(l,u);e&&$.removeNode(e),_=$.createNode(n,r),W.set(l,u,_)}let i=e[t++],d=new Uint8Array(e.buffer,e.byteOffset+t*4,i);t+=Math.ceil(i/4);let f=`none`;switch(e[t++]){case 0:f=`center`;break;case 1:f=`left`;break;case 2:f=`none`;break;case 3:f=`right`}let p={width:n,height:r,autoSize:f,stopIndex:e[t++],scrollX:e[t++],scrollY:e[t++],textWidth:e[t++],textHeight:e[t++],rawWidth:e[t++],rawHeight:e[t++],focusIndex:e[t++],selectIndex:e[t++],focusVisible:!!e[t++],thickness:e[t++],thicknessColor:e[t++],wordWrap:!!e[t++],border:!!e[t++],borderColor:e[t++],background:!!e[t++],backgroundColor:e[t++],defaultColor:e[t++],defaultSize:e[t++]},g=Fm(JSON.parse(Im.decode(d)),p,m,h),v=$.currentAttachmentObject,y=$.atlasAttachmentObject;y&&$.bind(y),$.reset(),$.beginNodeRendering(_);let b=y?y.height-_.y-r:0;$.setTransform(1,0,0,1,_.x,b),$.drawElement(_,g),$.endNodeRendering(),v&&$.bind(v)}else if(_=W.get(l,u),!_)return t;let v=e[t++];if(e[t++]){let a=!!e[t++],o=e.subarray(t,t+4);t+=4;let s=e[t++],c=e.subarray(t,t+s),l=Math.ceil(Math.abs(i[2]-i[0])),u=Math.ceil(Math.abs(i[3]-i[1]));return $.applyFilter(_,`${g}`,!!Math.max(+f,+a),l,u,!1,n,r,Am(v),o,c),t+=s,t}if($.globalAlpha=Math.min(Math.max(0,r[3]+r[7]/255),1),$.imageSmoothingEnabled=!0,$.globalCompositeOperation=Am(v),p){let e=n[0]*a+n[2]*o+n[4],t=n[1]*a+n[3]*o+n[5];$.setTransform(n[0]/m,n[1]/m,n[2]/h,n[3]/h,e,t)}else{let e=Math.atan2(n[1],n[0]),t=Math.atan2(-n[2],n[3]);if(e||t){let r=a*m,i=o*h,s=Math.cos(e),c=Math.sin(e),l=Math.cos(t),u=Math.sin(t);$.setTransform(s,c,-u,l,r*s-i*u+n[4],r*c+i*l+n[5])}else $.setTransform(1,0,0,1,i[0],i[1])}return $.drawDisplayObject(_,i[0],i[1],i[2],i[3],r),t},Rm=(e,t,n)=>{let r=e.subarray(t,t+6);t+=6;let i=e.subarray(t,t+8);t+=8;let a=e.subarray(t,t+4);t+=4;let o=e[t++],s=e[t++],c=e[t++],l=e[t++],u=`${e[t++]}`,d=!!e[t++],f=`${e[t++]}`,p;if(!e[t++]){let r=Math.abs(c-o),i=Math.abs(l-s);if(e[t++])p=W.get(u,`0`);else{let e=W.get(u,`0`);e&&$.removeNode(e),p=$.createNode(r,i),W.set(u,`0`,p)}if(n&&n.length){let e=$.currentAttachmentObject,t=$.atlasAttachmentObject;t&&$.bind(t),$.reset(),$.beginNodeRendering(p);let r=t?t.height-p.y-i:0;$.setTransform(1,0,0,1,p.x,r);let a=n.shift();$.drawElement(p,a,!0),$.endNodeRendering(),e&&$.bind(e)}}else if(p=W.get(u,`0`),!p)return t;let m=e[t++];if(e[t++]){let n=!!e[t++],o=e.subarray(t,t+4);t+=4;let s=e[t++],c=e.subarray(t,t+s),l=Math.ceil(Math.abs(a[2]-a[0])),u=Math.ceil(Math.abs(a[3]-a[1]));return $.applyFilter(p,f,!!Math.max(+d,+n),l,u,!0,r,i,Am(m),o,c),t+=s,t}return $.globalAlpha=Math.min(Math.max(0,i[3]+i[7]/255),1),$.imageSmoothingEnabled=!0,$.globalCompositeOperation=Am(m),$.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),$.drawDisplayObject(p,a[0],a[1],a[2],a[3],i),t},zm=(e,t)=>{let n=e[t++];for(let r=0;r{let r=0,i=!0,a=Am(e[t++]),o=!!e[t++],s=0,c=0,l=!1,u=!1,d=``,f=``,p=1,m=1,h=null,g=null,_=null,v=null,y=1,b=1;if(o){s=e[t++],c=e[t++];let n=e[t++];if(l=n===1,u=n===2,u){let n=!!e[t++];if(d=`${e[t++]}`,f=`${e[t++]}`,h=e.subarray(t,t+4),t+=4,p=e[t++],m=e[t++],_=e.subarray(t,t+6),t+=6,v=e.subarray(t,t+8),t+=8,n){let e=W.get(d,`bNode`);return e&&($.globalAlpha=Math.min(Math.max(0,v[3]+v[7]/255),1),$.globalCompositeOperation=a,$.setTransform(_[0]/p,_[1]/p,_[2]/m,_[3]/m,_[4],_[5]),$.drawDisplayObject(e,h[0],h[1],h[2],h[3],v)),t}t+=e[t]+1}else if(l){let n=!!e[t++];if(d=`${e[t++]}`,f=`${e[t++]}`,n)return h=e.subarray(t,t+4),t+=4,_=e.subarray(t,t+6),t+=6,t+=2,v=e.subarray(t,t+8),t+=8,$.containerDrawCachedFilter(a,_,v,h,d,f),t;h=e.subarray(t,t+4),t+=4,_=e.subarray(t,t+6),t+=6,y=e[t++],b=e[t++],v=e.subarray(t,t+8),t+=8;let r=e[t++];g=e.subarray(t,t+r),t+=r}else _=e.subarray(t,t+6),t+=6,v=e.subarray(t,t+8),t+=8}let x=null;u?x=$.containerBeginAtlasNode(s,c):o&&$.containerBeginLayer(s,c);let S=!!e[t++];if(S){switch($.drawArraysInstanced(),$.save(),$.beginMask(),$.setMaskBounds(e[t++],e[t++],e[t++],e[t++]),e[t++]){case 0:t=zm(e,t);break;case 1:t=Mm(e,t)}$.endMask()}let C=e[t++];for(let a=0;C>a;a++){let a=e[t++],o=e[t++];if(r&&a>r&&(i&&($.restore(),$.leaveMask()),r=0,i=!0),i){if(o){if(r=o,i=!!e[t++],!i)continue;switch($.drawArraysInstanced(),$.save(),$.beginMask(),$.setMaskBounds(e[t++],e[t++],e[t++],e[t++]),e[t++]){case 0:t=zm(e,t);break;case 1:t=Mm(e,t)}$.endMask();continue}if(e[t++])switch(e[t++]){case 0:t=Bm(e,t,n);break;case 1:t=jm(e,t);break;case 2:t=Lm(e,t);break;case 3:t=Rm(e,t,n)}}}if((r||S)&&($.restore(),$.leaveMask()),x){$.containerEndAtlasNode();let e=W.get(d,`bNode`);e&&$.removeNode(e),W.set(d,`bNode`,x),W.set(d,`bKey`,f),$.globalAlpha=Math.min(Math.max(0,v[3]+v[7]/255),1),$.globalCompositeOperation=a,$.setTransform(_[0]/p,_[1]/p,_[2]/m,_[3]/m,_[4],_[5]),$.drawDisplayObject(x,h[0],h[1],h[2],h[3],v)}else o&&$.containerEndLayer(a,_,v,l,h,g,d,f,y,b);return t},Vm=-1,Hm=(e,t)=>{Sm()&&Cm(),$.clearTransferBounds();let n=0,r=e[n++];for(Vm!==r&&(Vm=r,Vm===-1?$.updateBackgroundColor(0,0,0,0):$.updateBackgroundColor((Vm>>16&255)/255,(Vm>>8&255)/255,(Vm&255)/255,1)),$.reset(),$.setTransform(1,0,0,1,0,0),$.fillBackgroundColor();e.length>n;){if(!e[n++])continue;let r=e[n++];switch(r){case 0:n=Bm(e,n,t);break;case 1:n=jm(e,n);break;case 2:n=Lm(e,n);break;case 3:n=Rm(e,n,t);break;default:console.error(`unknown type`,r)}}$.drawArraysInstanced(),$.transferMainCanvas()},Um=e=>{for(let t=0;t{$.clearTransferBounds();let o=1;$.reset(),$.setTransform(1,0,0,1,0,0);let s=$.$clearColorR,c=$.$clearColorG,l=$.$clearColorB,u=$.$clearColorA;for($.updateBackgroundColor((r>>16&255)/255,(r>>8&255)/255,(r&255)/255,i),$.fillBackgroundColor();e.length>o;){if(!e[o++])continue;let t=e[o++];switch(t){case 0:o=Bm(e,o,a);break;case 1:o=jm(e,o);break;case 2:o=Lm(e,o);break;case 3:o=Rm(e,o,a);break;default:console.error(`unknown type`,t)}}$.drawArraysInstanced();let d=await $.createImageBitmap(t,n);return $.updateBackgroundColor(s,c,l,u),d},Gm=new class{state;queue;constructor(){this.state=`deactivate`,this.queue=[]}async execute(){for(this.state=`active`;this.queue.length;){let e=this.queue.shift();if(e)switch(e.command){case`render`:Hm(e.buffer.subarray(0,e.length),e.imageBitmaps),globalThis.postMessage({message:`render`,buffer:e.buffer},[e.buffer.buffer]);break;case`resize`:Om(e.buffer[0],e.buffer[1],!!e.buffer[2]);break;case`initialize`:await Dm(e.canvas,e.devicePixelRatio);break;case`removeCache`:Um(e.buffer);break;case`cacheClear`:W.reset();break;case`capture`:{let t=await Wm(e.buffer.subarray(0,e.length),e.width,e.height,e.bgColor,e.bgAlpha,e.imageBitmaps);globalThis.postMessage({message:`capture`,buffer:e.buffer,imageBitmap:t},[e.buffer.buffer,t])}}}this.state=`deactivate`}};self.addEventListener(`message`,async e=>{Gm.queue.push(e.data),Gm.state===`deactivate`&&await Gm.execute()})})();",y=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,v],{type:`text/javascript;charset=utf-8`});function b(e){let t;try{if(t=y&&(self.URL||self.webkitURL).createObjectURL(y),!t)throw``;let n=new Worker(t,{name:e?.name});return n.addEventListener(`error`,()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch{return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(v),{name:e?.name})}}var x=new b,S=e=>{let t=e.transferControlToOffscreen();x.postMessage({command:`initialize`,canvas:t,devicePixelRatio:window.devicePixelRatio},[t])},C=class{static get AT_TARGET(){return 2}static get BUBBLING_PHASE(){return 3}static get CAPTURING_PHASE(){return 1}},w=class{type;bubbles;listener;target;currentTarget;eventPhase;_$stopImmediatePropagation;_$stopPropagation;constructor(e,t=!1){this.type=`${e}`,this.bubbles=t,this.target=null,this.currentTarget=null,this.eventPhase=C.AT_TARGET,this.listener=null,this._$stopImmediatePropagation=!1,this._$stopPropagation=!1}static get ADDED(){return`added`}static get ADDED_TO_STAGE(){return`addedToStage`}static get CHANGE(){return`change`}static get COMPLETE(){return`complete`}static get ENDED(){return`ended`}static get ENTER_FRAME(){return`enterFrame`}static get FRAME_LABEL(){return`frameLabel`}static get INPUT(){return`input`}static get OPEN(){return`open`}static get REMOVED(){return`removed`}static get REMOVED_FROM_STAGE(){return`removedFromStage`}static get RESIZE(){return`resize`}static get SCROLL(){return`scroll`}stopImmediatePropagation(){this._$stopImmediatePropagation=!0}stopPropagation(){this._$stopPropagation=!0}},T=new Map,E=[],ee=()=>E.length?E.pop():[],te=e=>{10>E.length&&(e.length=0,E.push(e))},ne=null,re=e=>{ne=e},ie=()=>ne,D=class e extends w{constructor(t,n=!0){return super(t,n),new Proxy(this,{get:(t,n)=>{if(n in t)return t[n];let r=ie();if(r)switch(r.type){case e.KEY_DOWN:case e.KEY_UP:return n in r?$event[n]:void 0;default:return}}})}static get KEY_DOWN(){return`keydown`}static get KEY_UP(){return`keyup`}},ae=(e,t,n,r=!1,i=0)=>{let a;switch(t){case w.ENTER_FRAME:case D.KEY_DOWN:case D.KEY_UP:(!T.size||!T.has(t))&&T.set(t,ee()),a=T.get(t);break;default:e._$events||=new Map,(!e._$events.size||!e._$events.has(t))&&e._$events.set(t,ee()),a=e._$events.get(t)}let o=a.length,s=0;for(;s1&&a.sort((e,t)=>{switch(!0){case e.priority>t.priority:return-1;case e.priority{switch(t){case w.ENTER_FRAME:case D.KEY_DOWN:case D.KEY_UP:return!!(T.size&&T.has(t));default:return!!(e._$events&&e._$events.size&&e._$events.has(t))}},se=(e,t,n,r=!1)=>{let i;switch(t){case w.ENTER_FRAME:case D.KEY_DOWN:case D.KEY_UP:if(!T.size||!T.has(t))return;i=T.get(t);break;default:if(!e._$events||!e._$events.size||!e._$events.has(t))return;i=e._$events.get(t)}if(i){for(let e=0;e1&&i.sort((e,t)=>{switch(!0){case e.priority>t.priority:return-1;case e.priority{let r;switch(t){case w.ENTER_FRAME:case D.KEY_DOWN:case D.KEY_UP:if(!T.size||!T.has(t))return;r=T.get(t);break;default:if(!e._$events||!e._$events.size||!e._$events.has(t))return;r=e._$events.get(t)}if(!r)return;let i=ee();for(let e=0;e1&&i.sort((e,t)=>{switch(!0){case e.priority>t.priority:return-1;case e.priority{if(e.hasEventListener(t))return!0;if(`parent`in e){let n=e.parent;for(;n;){if(n.hasEventListener(t))return!0;if(!(`parent`in n))break;n=n.parent}}return!1},ue=(e,t)=>{switch(t.type){case w.ENTER_FRAME:case D.KEY_DOWN:case D.KEY_UP:{if(!T.size||!T.has(t.type))return!1;let e=T.get(t.type);if(!e.length)return!1;for(let n=0;n-1;--e){let n=r[e];for(let e=0;e{if(n in t)return t[n];let r=ie();if(r)switch(r.type){case e.FOCUS_IN:case e.FOCUS_OUT:return n in r?$event[n]:void 0;default:return}}})}static get FOCUS_IN(){return`focusin`}static get FOCUS_OUT(){return`focusout`}},O=class extends w{gamepadIndex;buttonIndex;buttonValue;axisIndex;axisValue;constructor(e,t=!0){super(e,t),this.gamepadIndex=0,this.buttonIndex=void 0,this.buttonValue=void 0,this.axisIndex=void 0,this.axisValue=void 0}static get GAMEPAD_CONNECTED(){return`gamepadconnected`}static get GAMEPAD_DISCONNECTED(){return`gamepaddisconnected`}static get BUTTON_DOWN(){return`gamepadbuttondown`}static get BUTTON_UP(){return`gamepadbuttonup`}static get AXES_MOTION(){return`gamepadaxesmotion`}},pe=class extends w{status;responseHeaders;responseURL;constructor(e,t=!1,n=0,r=``,i=[]){super(e,t),this.status=n|0,this.responseHeaders=i,this.responseURL=r}static get HTTP_STATUS(){return`httpStatus`}},me=class extends w{text;constructor(e,t=!1,n=``){super(e,t),this.text=`${n}`}static get IO_ERROR(){return`ioError`}},k=()=>{let e=ie();if(!e)return null;switch(e.type){case A.POINTER_DOWN:case A.POINTER_MOVE:case A.POINTER_UP:case A.POINTER_LEAVE:case A.POINTER_OVER:case A.POINTER_OUT:return e;default:return null}},A=class extends w{constructor(e,t=!0){super(e,t)}get pointerId(){return k()?.pointerId}get pointerType(){return k()?.pointerType}get width(){return k()?.width}get height(){return k()?.height}get pressure(){return k()?.pressure}get tangentialPressure(){return k()?.tangentialPressure}get tiltX(){return k()?.tiltX}get tiltY(){return k()?.tiltY}get twist(){return k()?.twist}get isPrimary(){return k()?.isPrimary}get clientX(){return k()?.clientX}get clientY(){return k()?.clientY}get pageX(){return k()?.pageX}get pageY(){return k()?.pageY}get screenX(){return k()?.screenX}get screenY(){return k()?.screenY}get offsetX(){return k()?.offsetX}get offsetY(){return k()?.offsetY}get movementX(){return k()?.movementX}get movementY(){return k()?.movementY}get x(){return k()?.x}get y(){return k()?.y}get button(){return k()?.button}get buttons(){return k()?.buttons}get altKey(){return k()?.altKey}get ctrlKey(){return k()?.ctrlKey}get metaKey(){return k()?.metaKey}get shiftKey(){return k()?.shiftKey}get detail(){return k()?.detail}get timeStamp(){return k()?.timeStamp}static get DOUBLE_CLICK(){return`dblclick`}static get POINTER_DOWN(){return`pointerdown`}static get POINTER_LEAVE(){return`pointerleave`}static get POINTER_MOVE(){return`pointermove`}static get POINTER_OUT(){return`pointerout`}static get POINTER_OVER(){return`pointerover`}static get POINTER_UP(){return`pointerup`}static get POINTER_CANCEL(){return`pointercancel`}},j=class extends w{bytesLoaded;bytesTotal;constructor(e,t=!1,n=0,r=0){super(e,t),this.bytesLoaded=n|0,this.bytesTotal=r|0}static get PROGRESS(){return`progress`}},he=class extends w{static get PLAY(){return`play`}static get PLAYING(){return`playing`}static get PAUSE(){return`pause`}static get SEEK(){return`seek`}},ge=class extends w{static get UPDATE(){return`jobupdate`}static get STOP(){return`jobstop`}},_e=class e extends w{constructor(t,n=!0){return super(t,n),new Proxy(this,{get:(t,n)=>{if(n in t)return t[n];let r=ie();if(r&&r.type===e.WHEEL)return n in r?$event[n]:void 0}})}static get WHEEL(){return`wheel`}},ve=[],ye=e=>{e.size&&e.clear(),ve.push(e)},be=()=>ve.pop()||new Map,xe=(e,t,n)=>{n.clear(),e.$timerId!==null&&clearTimeout(e.$timerId);for(let n of t.values()){for(let t of n.values())t&&e.destroy(t);ye(n)}t.clear()},Se=(e,t)=>{if(!(!t||typeof t!=`object`)&&`canvas`in t){let n=t.canvas,r=n.width,i=n.height;t.clearRect(0,0,r+1,i+1),n.width=n.height=1,e.push(n)}},Ce=(e,t,n)=>{if(!e.has(t))return;let r=e.get(t);r.has(n)&&(r.delete(n),r.size||(ye(r),e.delete(t)))},we=(e,t,n)=>{if(!t.has(n))return;let r=t.get(n);for(let t of r.values())e.destroy(t);t.delete(n),ye(r)},Te=(e,t,n,r,i)=>{let a=t.get(r)||null;return a?(n.has(r)&&(n.delete(r),a.delete(`trash`)),e.$maxStoreSize>0&&(t.delete(r),t.set(r,a)),a.get(i)||null):null},Ee=(e,t,n,r,i=null)=>{t.has(n)||t.set(n,be());let a=t.get(n);if(i===null){if(!a.has(r))return;e.destroy(a.get(r)),a.delete(r),a.size||(t.delete(n),ye(a));return}if(a.set(r,i),e.$maxStoreSize>0)for(t.delete(n),t.set(n,a);t.size>e.$maxStoreSize;){let r=t.keys().next().value;if(r===n)break;e.removeById(r),e.$removeIds.push(+r)}},De=(e,t,n=``)=>n?e.has(t)?e.get(t).has(n):!1:e.has(t),Oe=(e,t,n)=>{let r=2166136261,i=e*100|0;return r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619),i=t*100|0,r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619),n&&(i=n*100|0,r^=i&255,r=Math.imul(r,16777619),r^=i>>>8&255,r=Math.imul(r,16777619),r^=i>>>16&255,r=Math.imul(r,16777619),r^=i>>>24,r=Math.imul(r,16777619)),(r>>>0)%16777216},ke=(e,t,n,r)=>{let i=2166136261,a=e*100|0;return i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=t*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=n*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),a=r*100|0,i^=a&255,i=Math.imul(i,16777619),i^=a>>>8&255,i=Math.imul(i,16777619),i^=a>>>16&255,i=Math.imul(i,16777619),i^=a>>>24,i=Math.imul(i,16777619),(i>>>0)%16777216},Ae=(e,t,n,r)=>{if(n.has(r))return;let i=t.get(r);i&&(i.set(`trash`,!0),n.set(r,i),e.$timerId!==null&&clearTimeout(e.$timerId),e.$removeCache=!1,e.$timerId=setTimeout(()=>{e.$removeCache=!0,e.$timerId=null},1e3))},je=(e,t)=>{if(t.size){for(let[n,r]of t)r.has(`trash`)&&(e.removeById(n),e.$removeIds.push(+n));t.clear(),e.$removeCache=!1}},Me=(e,t,n)=>{if(!t.has(n))return;t.delete(n);let r=e.get(n);r&&r.delete(`trash`)},M=new class{_$pool;_$store;_$trash;$timerId;$removeCache;$removeIds;$maxStoreSize;constructor(){this._$pool=[],this._$store=new Map,this._$trash=new Map,this.$timerId=null,this.$removeIds=[],this.$removeCache=!1,this.$maxStoreSize=0}reset(){xe(this,this._$store,this._$trash)}destroy(e=null){Se(this._$pool,e)}getCanvas(){return this._$pool.pop()||document.createElement(`canvas`)}remove(e,t){Ce(this._$store,e,t)}removeTimer(e){Ae(this,this._$store,this._$trash,e)}cancelRemoveTimer(e){Me(this._$store,this._$trash,e)}removeTimerScheduledCache(){je(this,this._$trash)}removeById(e){we(this,this._$store,e)}getById(e){let t=this._$store.get(e);return t&&this.$maxStoreSize>0&&(this._$store.delete(e),this._$store.set(e,t)),t}get(e,t){return Te(this,this._$store,this._$trash,e,t)}set(e,t,n=null){Ee(this,this._$store,e,t,n)}has(e,t=``){return De(this._$store,e,t)}generateKeys(e,t,n){return Oe(e,t,n)}generateFilterKeys(e,t,n,r){return ke(e,t,n,r)}},Ne=e=>{let t=M.getCanvas();t.width=e.width,t.height=e.height;let n=t.getContext(`2d`,{willReadFrequently:!0});n.drawImage(e,0,0);let r=n.getImageData(0,0,e.width,e.height),i=new Uint8Array(r.data.buffer);return M.destroy(n),i},Pe=e=>{let t=M.getCanvas();t.width=e.width,t.height=e.height;let n=t.getContext(`2d`);n.setTransform(1,0,0,1,0,0),n.drawImage(e,0,0);let r=n.getImageData(0,0,e.width,e.height),i=new Uint8Array(r.data.buffer);return M.destroy(n),i},Fe=class e{width;height;buffer;constructor(e=0,t=0){this.width=e|0,this.height=t|0,this.buffer=null}set image(e){if(!e){this.width=0,this.height=0,this.buffer=null;return}this.buffer=Ne(e),this.width=e.width,this.height=e.height}set canvas(e){if(!e){this.width=0,this.height=0,this.buffer=null;return}this.buffer=Pe(e),this.width=e.width,this.height=e.height}clone(){let t=new e(this.width,this.height);return this.buffer!==null&&(t.buffer=this.buffer.slice()),t}},Ie=class{static get ADD(){return`add`}static get ALPHA(){return`alpha`}static get DARKEN(){return`darken`}static get DIFFERENCE(){return`difference`}static get ERASE(){return`erase`}static get HARDLIGHT(){return`hardlight`}static get INVERT(){return`invert`}static get LAYER(){return`layer`}static get LIGHTEN(){return`lighten`}static get MULTIPLY(){return`multiply`}static get NORMAL(){return`normal`}static get OVERLAY(){return`overlay`}static get SCREEN(){return`screen`}static get SUBTRACT(){return`subtract`}},Le=(e,t)=>{let n=N.multiply(e._$colorTransform,t._$colorTransform);e._$colorTransform[0]=n[0],e._$colorTransform[1]=n[1],e._$colorTransform[2]=n[2],e._$colorTransform[3]=n[3],e._$colorTransform[4]=n[4],e._$colorTransform[5]=n[5],e._$colorTransform[6]=n[6],e._$colorTransform[7]=n[7],N.release(n)},Re=[],ze=(e=1,t=0,n=0,r=1,i=0,a=0)=>{let o=Re.pop()||new Float32Array(6);return o[0]=e,o[1]=t,o[2]=n,o[3]=r,o[4]=i,o[5]=a,o},Be=e=>{Re.push(e)},Ve=[],He=(e=1,t=1,n=1,r=1,i=0,a=0,o=0,s=0)=>{let c=Ve.pop()||new Float32Array(8);return c[0]=e,c[1]=t,c[2]=n,c[3]=r,c[4]=i,c[5]=a,c[6]=o,c[7]=s,c},Ue=e=>{Ve.push(e)},We=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},N=class e{_$colorTransform;constructor(e=1,t=1,n=1,r=1,i=0,a=0,o=0,s=0){this._$colorTransform=He(e,t,n,r,i,a,o,s)}get rawData(){return this._$colorTransform}get alphaMultiplier(){return this._$colorTransform[3]}set alphaMultiplier(e){this._$colorTransform[3]=We(e,0,1,1)}get alphaOffset(){return this._$colorTransform[7]}set alphaOffset(e){this._$colorTransform[7]=We(e,-255,255,0)}get blueMultiplier(){return this._$colorTransform[2]}set blueMultiplier(e){this._$colorTransform[2]=We(e,0,1,1)}get blueOffset(){return this._$colorTransform[6]}set blueOffset(e){this._$colorTransform[6]=We(e,-255,255,0)}get greenMultiplier(){return this._$colorTransform[1]}set greenMultiplier(e){this._$colorTransform[1]=We(e,0,1,1)}get greenOffset(){return this._$colorTransform[5]}set greenOffset(e){this._$colorTransform[5]=We(e,-255,255,0)}get redMultiplier(){return this._$colorTransform[0]}set redMultiplier(e){this._$colorTransform[0]=We(e,0,1,1)}get redOffset(){return this._$colorTransform[4]}set redOffset(e){this._$colorTransform[4]=We(e,-255,255,0)}clone(){return new e(...this._$colorTransform)}concat(e){Le(this,e)}static multiply(e,t){return He(e[0]*t[0],e[1]*t[1],e[2]*t[2],e[3]*t[3],e[0]*t[4]+e[4],e[1]*t[5]+e[5],e[2]*t[6]+e[6],e[3]*t[7]+e[7])}static release(e){Ue(e)}},Ge=e=>new F(e._$matrix[0],e._$matrix[1],e._$matrix[2],e._$matrix[3],e._$matrix[4],e._$matrix[5]),Ke=(e,t)=>{let n=e._$matrix,r=t._$matrix,i=n[0]*r[0],a=0,o=0,s=n[3]*r[3],c=n[4]*r[0]+r[4],l=n[5]*r[3]+r[5];(n[1]||n[2]||r[1]||r[2])&&(i+=n[1]*r[2],s+=n[2]*r[1],a+=n[0]*r[1]+n[1]*r[3],o+=n[2]*r[0]+n[3]*r[2],c+=n[5]*r[2],l+=n[4]*r[1]),n[0]=i,n[1]=a,n[2]=o,n[3]=s,n[4]=c,n[5]=l},qe=(e,t)=>{e._$matrix[0]=t._$matrix[0],e._$matrix[1]=t._$matrix[1],e._$matrix[2]=t._$matrix[2],e._$matrix[3]=t._$matrix[3],e._$matrix[4]=t._$matrix[4],e._$matrix[5]=t._$matrix[5]},Je=(e,t,n,r=0,i=0,a=0)=>{e.identity(),e.rotate(r),e.scale(t,n),e.translate(i,a)},Ye=(e,t,n,r=0,i=0,a=0)=>{let o=e._$matrix;if(o[0]=t/1638.4,o[3]=n/1638.4,r){let e=Math.cos(r),t=Math.sin(r);o[1]=t*o[3],o[2]=-t*o[0],o[0]*=e,o[3]*=e}else o[1]=0,o[2]=0;o[4]=i+t/2,o[5]=a+n/2},Xe=(e,t)=>new P(e.x+t.x,e.y+t.y),Ze=e=>new P(e.x,e.y),Qe=(e,t)=>{e.x=t.x,e.y=t.y},$e=(e,t)=>Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2),et=(e,t)=>e.x===t.x&&e.y===t.y,tt=(e,t,n)=>new P(e.x+(t.x-e.x)*(1-n),e.y+(t.y-e.y)*(1-n)),nt=(e,t)=>{let n=t/e.length;e.x*=n,e.y*=n},rt=(e,t,n)=>{e.x+=t,e.y+=n},it=(e,t)=>new P(e*Math.cos(t),e*Math.sin(t)),at=(e,t,n)=>{e.x=t,e.y=n},ot=(e,t)=>new P(e.x-t.x,e.y-t.y),P=class{x;y;constructor(e=0,t=0){this.x=e,this.y=t}get length(){return Math.sqrt(this.x**2+this.y**2)}add(e){return Xe(this,e)}clone(){return Ze(this)}copyFrom(e){Qe(this,e)}static distance(e,t){return $e(e,t)}equals(e){return et(this,e)}static interpolate(e,t,n){return tt(e,t,n)}normalize(e){nt(this,e)}offset(e,t){rt(this,e,t)}static polar(e,t){return it(e,t)}setTo(e,t){at(this,e,t)}subtract(e){return ot(this,e)}},st=(e,t)=>new P(t.x*e._$matrix[0]+t.y*e._$matrix[2],t.x*e._$matrix[1]+t.y*e._$matrix[3]),ct=e=>{e._$matrix[0]=1,e._$matrix[1]=0,e._$matrix[2]=0,e._$matrix[3]=1,e._$matrix[4]=0,e._$matrix[5]=0},lt=e=>{let t=e._$matrix[0],n=e._$matrix[1],r=e._$matrix[2],i=e._$matrix[3],a=e._$matrix[4],o=e._$matrix[5];if(n===0&&r===0)e._$matrix[0]=1/t,e._$matrix[1]=0,e._$matrix[2]=0,e._$matrix[3]=1/i,e._$matrix[4]=-e._$matrix[0]*a,e._$matrix[5]=-e._$matrix[3]*o;else{let s=t*i-n*r;if(s){let c=1/s;e._$matrix[0]=i*c,e._$matrix[1]=-n*c,e._$matrix[2]=-r*c,e._$matrix[3]=t*c,e._$matrix[4]=-(e._$matrix[0]*a+e._$matrix[2]*o),e._$matrix[5]=-(e._$matrix[1]*a+e._$matrix[3]*o)}}},ut=(e,t)=>{let n=e._$matrix,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5];n[0]=r*Math.cos(t)-i*Math.sin(t),n[1]=r*Math.sin(t)+i*Math.cos(t),n[2]=a*Math.cos(t)-o*Math.sin(t),n[3]=a*Math.sin(t)+o*Math.cos(t),n[4]=s*Math.cos(t)-c*Math.sin(t),n[5]=s*Math.sin(t)+c*Math.cos(t)},dt=(e,t,n)=>{let r=e._$matrix;r[0]*=t,r[2]*=t,r[4]*=t,r[1]*=n,r[3]*=n,r[5]*=n},ft=(e,t,n,r,i,a,o)=>{let s=e._$matrix;s[0]=t,s[1]=n,s[2]=r,s[3]=i,s[4]=a,s[5]=o},pt=(e,t)=>{let n=t.x,r=t.y,i=e._$matrix;return new P(n*i[0]+r*i[2]+i[4],n*i[1]+r*i[3]+i[5])},mt=(e,t,n)=>{e.tx+=t,e.ty+=n},F=class{_$matrix;constructor(e=1,t=0,n=0,r=1,i=0,a=0){this._$matrix=ze(e,t,n,r,i,a)}get a(){return this._$matrix[0]}set a(e){this._$matrix[0]=e}get b(){return this._$matrix[1]}set b(e){this._$matrix[1]=e}get c(){return this._$matrix[2]}set c(e){this._$matrix[2]=e}get d(){return this._$matrix[3]}set d(e){this._$matrix[3]=e}get tx(){return this._$matrix[4]}set tx(e){this._$matrix[4]=e}get ty(){return this._$matrix[5]}set ty(e){this._$matrix[5]=e}get rawData(){return this._$matrix}clone(){return Ge(this)}concat(e){Ke(this,e)}copyFrom(e){qe(this,e)}createBox(e,t,n=0,r=0,i=0){Je(this,e,t,n,r,i)}createGradientBox(e,t,n=0,r=0,i=0){Ye(this,e,t,n,r,i)}deltaTransformPoint(e){return st(this,e)}identity(){ct(this)}invert(){lt(this)}rotate(e){ut(this,e)}scale(e,t){dt(this,e,t)}setTo(e,t,n,r,i,a){ft(this,e,t,n,r,i,a)}transformPoint(e){return pt(this,e)}translate(e,t){mt(this,e,t)}static multiply(e,t){let n=e[0],r=e[1],i=e[2],a=e[3],o=e[4],s=e[5],c=t[0],l=t[1],u=t[2],d=t[3],f=t[4],p=t[5];return ze(n*c+i*l,r*c+a*l,n*u+i*d,r*u+a*d,n*f+i*p+o,r*f+a*p+s)}static release(e){Be(e)}},ht=e=>new jt(e.x,e.y,e.width,e.height),gt=(e,t,n)=>e.x<=t&&e.y<=n&&e.right>t&&e.bottom>n,_t=(e,t)=>e.x<=t.x&&e.y<=t.y&&e.right>t.x&&e.bottom>t.y,vt=(e,t)=>e.x<=t.x&&e.y<=t.y&&e.right>=t.right&&e.bottom>=t.bottom,yt=(e,t)=>{e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height},bt=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,xt=(e,t,n)=>{e.x-=t,e.width+=2*t,e.y-=n,e.height+=2*n},St=(e,t)=>{e.x-=t.x,e.width+=2*t.x,e.y-=t.y,e.height+=2*t.y},Ct=(e,t)=>{let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y),i=Math.min(e.right,t.right),a=Math.min(e.bottom,t.bottom),o=i-n,s=a-r;return o>0&&s>0?new jt(n,r,o,s):new jt(0,0,0,0)},wt=(e,t)=>{let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y),i=Math.min(e.right,t.right),a=Math.min(e.bottom,t.bottom);return i-n>0&&a-r>0},Tt=e=>e.width<=0||e.height<=0,Et=(e,t,n)=>{e.x+=t,e.y+=n},Dt=(e,t)=>{e.x+=t.x,e.y+=t.y},Ot=e=>{e.x=e.y=e.width=e.height=0},kt=(e,t,n,r,i)=>{e.x=t,e.y=n,e.width=r,e.height=i},At=(e,t)=>e.isEmpty()?t.clone():t.isEmpty()?e.clone():new jt(Math.min(e.x,t.x),Math.min(e.y,t.y),Math.max(e.right-t.left,t.right-e.left),Math.max(e.bottom-t.top,t.bottom-e.top)),jt=class{x;y;width;height;constructor(e=0,t=0,n=0,r=0){this.x=e,this.y=t,this.width=n,this.height=r}get bottom(){return this.y+this.height}set bottom(e){this.height=e-this.y}get bottomRight(){return new P(this.right,this.bottom)}set bottomRight(e){this.right=e.x,this.bottom=e.y}get left(){return this.x}set left(e){this.width=this.right-e,this.x=e}get right(){return this.x+this.width}set right(e){this.width=e-this.x}get size(){return new P(this.width,this.height)}set size(e){this.width=e.x,this.height=e.y}get top(){return this.y}set top(e){this.height=this.bottom-e,this.y=e}get topLeft(){return new P(this.x,this.y)}set topLeft(e){this.left=e.x,this.top=e.y}clone(){return ht(this)}contains(e,t){return gt(this,e,t)}containsPoint(e){return _t(this,e)}containsRect(e){return vt(this,e)}copyFrom(e){yt(this,e)}equals(e){return bt(this,e)}inflate(e,t){xt(this,e,t)}inflatePoint(e){St(this,e)}intersection(e){return Ct(this,e)}intersects(e){return wt(this,e)}isEmpty(){return Tt(this)}offset(e,t){Et(this,e,t)}offsetPoint(e){Dt(this,e)}setEmpty(){Ot(this)}setTo(e,t,n,r){kt(this,e,t,n,r)}union(e){return At(this,e)}},I=e=>{e.changed=!0;let t=e.parent;for(;t&&!t.changed;)t.changed=!0,t=t.parent},Mt=e=>{if(e.placeObject)return e.placeObject;let t=e.placeId;if(t===-1)return null;let n=e.parent;if(!n)return null;let r=n.loaderInfo;if(!r||!r.data)return null;let i=r.data.characters[n.characterId],a=n.isTimelineEnabled?n.currentFrame:1,o=i.placeMap[a];if(!o||!(t in o))return null;let s=o[t],c=i.placeObjects[s];return c?(e.placeObject=c,c):null},Nt=e=>(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e++,e),L=new class{buffer;offset;constructor(){this.buffer=new Float32Array(256),this.offset=0}push(...e){this.buffer.lengthIt++,Rt=[],zt=[],Bt=[],Vt=[],R=(e=0,t=0,n=0,r=0,i=0,a=0)=>{let o=Bt.pop()||new Float32Array(6);return o[0]=e,o[1]=t,o[2]=n,o[3]=r,o[4]=i,o[5]=a,o},Ht=e=>{Bt.push(e)},Ut=(e=1,t=1,n=1,r=1,i=0,a=0,o=0,s=0)=>{let c=Vt.pop()||new Float32Array(8);return c[0]=e,c[1]=t,c[2]=n,c[3]=r,c[4]=i,c[5]=a,c[6]=o,c[7]=s,c},Wt=[],Gt=()=>Wt.pop()||new Map,Kt=e=>{e.clear(),Wt.push(e)},z=(...e)=>{let t=Rt.pop()||[];return e.length&&t.push(...e),t},qt=e=>{e.length&&=0,Rt.push(e)},B=(e,t,n,r)=>{let i=zt.length?zt.pop():new Float32Array(4);return i[0]=e,i[1]=t,i[2]=n,i[3]=r,i},V=e=>{zt.push(e)},Jt=!1,Yt=()=>Jt,Xt=(e,t)=>{Jt=!1;let n=0;for(let r=0;r{for(let t=0;t{let t=null;switch(e.method.toUpperCase()){case`GET`:if(e.data){let t=e.url.split(`?`);t[1]=t.length===1?e.data.toString():`${t[1]}&${e.data.toString()}`,e.url=t.join(`?`)}break;case`PUT`:case`POST`:e.data&&(t=e.data.toString())}let n=new XMLHttpRequest;if(n.open(e.method,e.url,!0),n.responseType=e.format,n.withCredentials=e.withCredentials,e.event){let t=Object.keys(e.event);for(let r=0;r{let t=z();if(e){let n=e.trim().split(` +`);for(let e=0;eon?(on.fillStyle=e,+`0x${on.fillStyle.slice(1)}`):0,cn=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},ln=[],un=[],dn=new Map,fn=null,pn=e=>{fn=e},mn=()=>fn,H=e=>{if(e.$matrix)return e.$matrix.rawData;let t=Mt(e);if(!t||!t.matrix)return null;if(!t.typedMatrix){let e=t.matrix;t.typedMatrix=R(e[0],e[1],e[2],e[3],e[4],e[5])}return t.typedMatrix},hn=e=>{let t=H(e)||Ft,n=e.parent;for(;n;){let e=H(n);e&&(t=F.multiply(e,t)),n=n.parent}return new F(t[0],t[1],t[2],t[3],t[4],t[5])},gn=e=>{if(e.$colorTransform)return e.$colorTransform.rawData;let t=Mt(e);if(!t||!t.colorTransform)return null;if(!t.typedColorTransform){let e=t.colorTransform;t.typedColorTransform=Ut(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7])}return t.typedColorTransform},_n=e=>{if(e.$alpha!==null)return e.$alpha;if(e.$colorTransform){let t=e.$colorTransform.rawData;return t[3]+t[7]/255}let t=gn(e);return t?t[3]+t[7]/255:1},vn=(e,t)=>{if(t=cn(t,0,1),e.$alpha===t)return;e.$alpha=t;let n=e.$colorTransform;if(!n){let t=gn(e);n=t?new N(...t):new N}n.alphaMultiplier=t,n.alphaOffset=0,e.$colorTransform=n,I(e)},yn=class{$updated;$buffer;constructor(){this.$updated=!0,this.$buffer=null}canApplyFilter(){return!0}getBounds(e){return e}},U=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},bn=document.createElement(`canvas`);bn.width=bn.height=1;var xn=bn.getContext(`2d`),Sn=e=>xn?(xn.fillStyle=e,+`0x${xn.fillStyle.slice(1)}`):0,Cn=Math.PI/180,wn=e=>{switch(e){case`full`:return 0;case`inner`:return 1;case`outer`:return 2;default:return 0}},Tn=e=>e.strength>0&&e.distance!==0&&e.blurX>0&&e.blurY>0&&e.quality>0,En=e=>e.blurX>0&&e.blurY>0&&e.quality>0,Dn=[.5,1.05,1.4,1.55,1.75,1.9,2,2.15,2.2,2.3,2.5,3,3,3.5,3.5],On=(e,t)=>{if(!En(e))return t;let n=Dn[e.quality-1],r=Math.round(e.blurX*n),i=Math.round(e.blurY*n);return t[0]-=r,t[2]+=r,t[1]-=i,t[3]+=i,t},kn=(e,t)=>{if(!Tn(e)||e.type===`inner`)return t;On(e,t);let n=e.angle*Cn,r=e.distance,i=Math.abs(Math.cos(n)*r),a=Math.abs(Math.sin(n)*r);return t[0]-=i,t[2]+=i,t[1]-=a,t[3]+=a,t},An=e=>[e.$filterType,e.distance,e.angle,e.highlightColor,e.highlightAlpha,e.shadowColor,e.shadowAlpha,e.blurX,e.blurY,e.strength,e.quality,e.type,e.knockout],jn=e=>new Float32Array([e.$filterType,e.distance,e.angle,e.highlightColor,e.highlightAlpha,e.shadowColor,e.shadowAlpha,e.blurX,e.blurY,e.strength,e.quality,wn(e.type),+e.knockout]),Mn=class e extends yn{$filterType=0;_$blurX;_$blurY;_$quality;_$distance;_$angle;_$highlightColor;_$highlightAlpha;_$shadowColor;_$shadowAlpha;_$strength;_$type;_$knockout;constructor(e=4,t=45,n=16777215,r=1,i=0,a=1,o=4,s=4,c=1,l=1,u=`inner`,d=!1){super(),this._$distance=4,this._$angle=45,this._$highlightColor=16777215,this._$highlightAlpha=1,this._$blurX=4,this._$blurY=4,this._$quality=1,this._$shadowColor=0,this._$shadowAlpha=1,this._$strength=1,this._$type=`inner`,this._$knockout=!1,this.blurX=o,this.blurY=s,this.quality=l,this.distance=e,this.angle=t,this.highlightColor=n,this.highlightAlpha=r,this.shadowColor=i,this.shadowAlpha=a,this.strength=c,this.type=u,this.knockout=d}get angle(){return this._$angle}set angle(e){e=U(e%360,-360,360,45),e!==this._$angle&&(this._$angle=e,this.$updated=!0)}get blurX(){return this._$blurX}set blurX(e){e=U(+e,0,255,0),e!==this._$blurX&&(this._$blurX=e,this.$updated=!0)}get blurY(){return this._$blurY}set blurY(e){e=U(+e,0,255,0),e!==this._$blurY&&(this._$blurY=e,this.$updated=!0)}get distance(){return this._$distance}set distance(e){e=U(+e,-255,255,4),e!==this._$distance&&(this._$distance=e,this.$updated=!0)}get highlightAlpha(){return this._$highlightAlpha}set highlightAlpha(e){e=U(+e,0,1,0),e!==this._$highlightAlpha&&(this._$highlightAlpha=e,this.$updated=!0)}get highlightColor(){return this._$highlightColor}set highlightColor(e){e=U(typeof e==`string`?Sn(e):e,0,16777215,16777215),e!==this._$highlightColor&&(this._$highlightColor=e,this.$updated=!0)}get knockout(){return this._$knockout}set knockout(e){e=!!e,e!==this._$knockout&&(this._$knockout=e,this.$updated=!0)}get quality(){return this._$quality}set quality(e){e=U(e|0,0,15,1),e!==this._$quality&&(this._$quality=e,this.$updated=!0)}get shadowAlpha(){return this._$shadowAlpha}set shadowAlpha(e){e=U(e,0,1,0),e!==this._$shadowAlpha&&(this._$shadowAlpha=e,this.$updated=!0)}get shadowColor(){return this._$shadowColor}set shadowColor(e){e=U(typeof e==`string`?Sn(e):e,0,16777215,0),e!==this._$shadowColor&&(this._$shadowColor=e,this.$updated=!0)}get strength(){return this._$strength}set strength(e){e=U(e|0,0,255,0),e!==this._$strength&&(this._$strength=e,this.$updated=!0)}get type(){return this._$type}set type(e){if(e=`${e}`.toLowerCase(),e!==this._$type){switch(e){case`inner`:case`outer`:case`full`:break;default:return}this._$type=e,this.$updated=!0}}clone(){return new e(this._$distance,this._$angle,this._$highlightColor,this._$highlightAlpha,this._$shadowColor,this._$shadowAlpha,this._$blurX,this._$blurY,this._$strength,this._$quality,this._$type,this._$knockout)}toArray(){return An(this)}toNumberArray(){return jn(this)}canApplyFilter(){return Tn(this)}getBounds(e){return kn(this,e)}},Nn=e=>[e.$filterType,e.blurX,e.blurY,e.quality],Pn=e=>new Float32Array([e.$filterType,e.blurX,e.blurY,e.quality]),Fn=class e extends yn{$filterType=1;_$blurX;_$blurY;_$quality;constructor(e=4,t=4,n=1){super(),this._$blurX=4,this._$blurY=4,this._$quality=1,this.blurX=e,this.blurY=t,this.quality=n}get blurX(){return this._$blurX}set blurX(e){e=U(+e,0,255,0),e!==this._$blurX&&(this._$blurX=e,this.$updated=!0)}get blurY(){return this._$blurY}set blurY(e){e=U(+e,0,255,0),e!==this._$blurY&&(this._$blurY=e,this.$updated=!0)}get quality(){return this._$quality}set quality(e){e=U(e|0,0,15,1),e!==this._$quality&&(this._$quality=e,this.$updated=!0)}clone(){return new e(this._$blurX,this._$blurY,this._$quality)}toArray(){return Nn(this)}toNumberArray(){return Pn(this)}canApplyFilter(){return En(this)}getBounds(e){return On(this,e)}},In=e=>[e.$filterType,e.matrix],Ln=e=>new Float32Array([e.$filterType,...e.matrix]),Rn=class e extends yn{$filterType=2;_$matrix;constructor(e=null){super(),this._$matrix=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],e&&e.length===20&&(this.matrix=e)}get matrix(){return this._$matrix}set matrix(e){if(this._$matrix!==e&&!(!Array.isArray(e)||e.length!==20)){for(let t=0;t<20;t++)if(e[t]!==this._$matrix[t]){this.$updated=!0;break}this.$updated&&(this._$matrix=e)}}clone(){return new e(this._$matrix)}toArray(){return In(this)}toNumberArray(){return Ln(this)}},zn=e=>e.matrix!==null&&e.matrixX*e.matrixY===e.matrix.length,Bn=e=>[e.$filterType,e.matrixX,e.matrixY,e.matrix,e.divisor,e.bias,e.preserveAlpha,e.clamp,e.color,e.alpha],Vn=e=>{let t=e.matrix||[];return new Float32Array([e.$filterType,e.matrixX,e.matrixY,...t,e.divisor,e.bias,+e.preserveAlpha,+e.clamp,e.color,e.alpha])},Hn=class e extends yn{$filterType=3;_$matrixX;_$matrixY;_$matrix;_$divisor;_$bias;_$preserveAlpha;_$clamp;_$color;_$alpha;constructor(e=0,t=0,n=null,r=1,i=0,a=!0,o=!0,s=0,c=0){super(),this._$matrixX=0,this._$matrixY=0,this._$matrix=null,this._$divisor=1,this._$bias=0,this._$preserveAlpha=!0,this._$clamp=!0,this._$color=0,this._$alpha=0,this.matrixX=e,this.matrixY=t,this.matrix=n,this.divisor=r,this.bias=i,this.preserveAlpha=a,this.clamp=o,this.color=s,this.alpha=c}get alpha(){return this._$alpha}set alpha(e){e=U(+e,0,1,0),e!==this._$alpha&&(this._$alpha=e,this.$updated=!0)}get bias(){return this._$bias}set bias(e){e|=0,e!==this._$bias&&(this._$bias=e,this.$updated=!0)}get clamp(){return this._$clamp}set clamp(e){e=!!e,e!==this._$clamp&&(this._$clamp=e,this.$updated=!0)}get color(){return this._$color}set color(e){e=U(typeof e==`string`?Sn(e):e,0,16777215,0),e!==this._$color&&(this._$color=e,this.$updated=!0)}get divisor(){return this._$divisor}set divisor(e){e|=0,e!==this._$divisor&&(this._$divisor=e,this.$updated=!0)}get matrix(){return this._$matrix}set matrix(e){this._$matrix!==e&&(this._$matrix=e,this.$updated=!0)}get matrixX(){return this._$matrixX}set matrixX(e){e=U(e|0,0,15,0)|0,e!==this._$matrixX&&(this._$matrixX=e,this.$updated=!0)}get matrixY(){return this._$matrixY}set matrixY(e){e=U(e|0,0,15,0)|0,e!==this._$matrixY&&(this._$matrixY=e,this.$updated=!0)}get preserveAlpha(){return this._$preserveAlpha}set preserveAlpha(e){e=!!e,e!==this._$preserveAlpha&&(this._$preserveAlpha=e,this.$updated=!0)}clone(){return new e(this._$matrixX,this._$matrixY,this._$matrix?this._$matrix.slice():null,this._$divisor,this._$bias,this._$preserveAlpha,this._$clamp,this._$color,this._$alpha)}toArray(){return Bn(this)}toNumberArray(){return Vn(this)}canApplyFilter(){return zn(this)}},Un=e=>e.bitmapBuffer!==null&&e.componentX>0&&e.componentY>0&&e.scaleX!==0&&e.scaleY!==0,Wn=e=>[e.$filterType,e.bitmapBuffer?Array.from(e.bitmapBuffer):null,e.bitmapWidth,e.bitmapHeight,e.mapPointX,e.mapPointY,e.componentX,e.componentY,e.scaleX,e.scaleY,e.mode,e.color,e.alpha],Gn=e=>{let t=2;switch(e.mode){case`clamp`:t=0;break;case`color`:t=1;break;case`wrap`:t=2;break;case`ignore`:t=3;break;default:t=2}let n=e.bitmapBuffer||new Uint8Array,r=[e.$filterType,n.length];for(let e=0;e[e.$filterType,e.distance,e.angle,e.color,e.alpha,e.blurX,e.blurY,e.strength,e.quality,e.inner,e.knockout,e.hideObject],Jn=e=>new Float32Array([e.$filterType,e.distance,e.angle,e.color,e.alpha,e.blurX,e.blurY,e.strength,e.quality,+e.inner,+e.knockout,+e.hideObject]),Yn=e=>e.alpha>0&&e.strength!==0&&e.blurX>0&&e.blurY>0&&e.quality>0,Xn=(e,t)=>{if(!Yn(e)||e.inner)return t;On(e,t);let n=e.angle*Cn,r=e.distance,i=Math.cos(n)*r,a=Math.sin(n)*r;return t[0]=Math.min(t[0],i),i>0&&(t[2]+=i),t[1]=Math.min(t[1],a),a>0&&(t[3]+=a),t},Zn=class e extends yn{$filterType=5;_$blurX;_$blurY;_$quality;_$distance;_$angle;_$color;_$alpha;_$strength;_$inner;_$knockout;_$hideObject;constructor(e=4,t=45,n=0,r=1,i=4,a=4,o=1,s=1,c=!1,l=!1,u=!1){super(),this._$blurX=4,this._$blurY=4,this._$quality=1,this._$distance=4,this._$angle=45,this._$color=0,this._$alpha=1,this._$strength=1,this._$inner=!1,this._$knockout=!1,this._$hideObject=!1,this.blurX=i,this.blurY=a,this.quality=s,this.distance=e,this.angle=t,this.color=n,this.alpha=r,this.strength=o,this.inner=c,this.knockout=l,this.hideObject=u}get alpha(){return this._$alpha}set alpha(e){e=U(+e,0,1,0),e!==this._$alpha&&(this._$alpha=e,this.$updated=!0)}get angle(){return this._$angle}set angle(e){e=U(e%360,-360,360,45),e!==this._$angle&&(this._$angle=e,this.$updated=!0)}get blurX(){return this._$blurX}set blurX(e){e=U(+e,0,255,0),e!==this._$blurX&&(this._$blurX=e,this.$updated=!0)}get blurY(){return this._$blurY}set blurY(e){e=U(+e,0,255,0),e!==this._$blurY&&(this._$blurY=e,this.$updated=!0)}get color(){return this._$color}set color(e){e=U(typeof e==`string`?Sn(e):e,0,16777215,0),e!==this._$color&&(this._$color=e,this.$updated=!0)}get distance(){return this._$distance}set distance(e){e=U(+e,-255,255,4),e!==this._$distance&&(this._$distance=e,this.$updated=!0)}get hideObject(){return this._$hideObject}set hideObject(e){e=!!e,e!==this._$hideObject&&(this._$hideObject=e,this.$updated=!0)}get inner(){return this._$inner}set inner(e){e=!!e,e!==this._$inner&&(this._$inner=e,this.$updated=!0)}get knockout(){return this._$knockout}set knockout(e){e=!!e,e!==this._$knockout&&(this._$knockout=e,this.$updated=!0)}get quality(){return this._$quality}set quality(e){e=U(e|0,0,15,1),e!==this._$quality&&(this._$quality=e,this.$updated=!0)}get strength(){return this._$strength}set strength(e){e=U(e|0,0,255,0),e!==this._$strength&&(this._$strength=e,this.$updated=!0)}clone(){return new e(this._$distance,this._$angle,this._$color,this._$alpha,this._$blurX,this._$blurY,this._$strength,this._$quality,this._$inner,this._$knockout,this._$hideObject)}toArray(){return qn(this)}toNumberArray(){return Jn(this)}canApplyFilter(){return Yn(this)}getBounds(e){return Xn(this,e)}},Qn=e=>[e.$filterType,e.color,e.alpha,e.blurX,e.blurY,e.strength,e.quality,e.inner,e.knockout],$n=e=>new Float32Array([e.$filterType,e.color,e.alpha,e.blurX,e.blurY,e.strength,e.quality,+e.inner,+e.knockout]),er=e=>e.alpha>0&&e.strength!==0&&e.blurX>0&&e.blurY>0&&e.quality>0,tr=(e,t)=>!er(e)||e.inner?t:On(e,t),nr=class e extends yn{$filterType=6;_$blurX;_$blurY;_$quality;_$color;_$alpha;_$strength;_$inner;_$knockout;constructor(e=0,t=1,n=4,r=4,i=1,a=1,o=!1,s=!1){super(),this._$blurX=4,this._$blurY=4,this._$quality=1,this._$color=0,this._$alpha=1,this._$strength=1,this._$inner=!1,this._$knockout=!1,this.blurX=n,this.blurY=r,this.quality=a,this.color=e,this.alpha=t,this.strength=i,this.inner=o,this.knockout=s}get alpha(){return this._$alpha}set alpha(e){e=U(+e,0,1,0),e!==this._$alpha&&(this._$alpha=e,this.$updated=!0)}get blurX(){return this._$blurX}set blurX(e){e=U(+e,0,255,0),e!==this._$blurX&&(this._$blurX=e,this.$updated=!0)}get blurY(){return this._$blurY}set blurY(e){e=U(+e,0,255,0),e!==this._$blurY&&(this._$blurY=e,this.$updated=!0)}get color(){return this._$color}set color(e){e=U(typeof e==`string`?Sn(e):e,0,16777215,4),e!==this._$color&&(this._$color=e,this.$updated=!0)}get inner(){return this._$inner}set inner(e){e=!!e,e!==this._$inner&&(this._$inner=e,this.$updated=!0)}get knockout(){return this._$knockout}set knockout(e){e=!!e,e!==this._$knockout&&(this._$knockout=e,this.$updated=!0)}get quality(){return this._$quality}set quality(e){e=U(e|0,0,15,1),e!==this._$quality&&(this._$quality=e,this.$updated=!0)}get strength(){return this._$strength}set strength(e){e=U(e|0,0,255,0),e!==this._$strength&&(this._$strength=e,this.$updated=!0)}clone(){return new e(this._$color,this._$alpha,this._$blurX,this._$blurY,this._$strength,this._$quality,this._$inner,this._$knockout)}toArray(){return Qn(this)}toNumberArray(){return $n(this)}canApplyFilter(){return er(this)}getBounds(e){return tr(this,e)}},rr=e=>e.strength>0&&e.distance>0&&e.alphas!==null&&e.ratios!==null&&e.colors!==null&&e.blurX>0&&e.blurY>0&&e.quality>0,ir=e=>[e.$filterType,e.distance,e.angle,e.colors,e.alphas,e.ratios,e.blurX,e.blurY,e.strength,e.quality,e.type,e.knockout],ar=e=>{let t=e.colors?e.colors:[],n=e.alphas?e.alphas:[],r=e.ratios?e.ratios:[];return new Float32Array([e.$filterType,e.distance,e.angle,t.length,...t,n.length,...n,r.length,...r,e.blurX,e.blurY,e.strength,e.quality,wn(e.type),+e.knockout])},or=(e,t)=>{if(!rr(e)||e.type===`inner`)return t;On(e,t);let n=e.angle*Cn,r=e.distance,i=Math.abs(Math.cos(n)*r),a=Math.abs(Math.sin(n)*r);return t[0]-=i,t[2]+=i,t[1]-=a,t[3]+=a,t},sr=class e extends yn{$filterType=7;_$blurX;_$blurY;_$quality;_$distance;_$angle;_$colors;_$alphas;_$ratios;_$strength;_$type;_$knockout;constructor(e=4,t=45,n=null,r=null,i=null,a=4,o=4,s=1,c=1,l=`inner`,u=!1){super(),this._$blurX=4,this._$blurY=4,this._$quality=1,this._$distance=4,this._$angle=45,this._$colors=null,this._$alphas=null,this._$ratios=null,this._$strength=1,this._$type=`inner`,this._$knockout=!1,this.blurX=a,this.blurY=o,this.quality=c,this.distance=e,this.angle=t,this.colors=n,this.alphas=r,this.ratios=i,this.strength=s,this.type=l,this.knockout=u}get alphas(){return this._$alphas}set alphas(e){if(e!==this._$alphas){if(Array.isArray(e))for(let t=0;t[e.$filterType,e.distance,e.angle,e.colors,e.alphas,e.ratios,e.blurX,e.blurY,e.strength,e.quality,e.type,e.knockout],lr=e=>e.strength>0&&e.distance>0&&e.alphas!==null&&e.ratios!==null&&e.colors!==null&&e.blurX>0&&e.blurY>0&&e.quality>0,ur=e=>{let t=e.colors?e.colors:[],n=e.alphas?e.alphas:[],r=e.ratios?e.ratios:[];return new Float32Array([e.$filterType,e.distance,e.angle,t.length,...t,n.length,...n,r.length,...r,e.blurX,e.blurY,e.strength,e.quality,wn(e.type),+e.knockout])},dr=(e,t)=>!lr(e)||e.type===`inner`?t:On(e,t),fr=class e extends yn{$filterType=8;_$blurX;_$blurY;_$quality;_$distance;_$angle;_$colors;_$alphas;_$ratios;_$strength;_$type;_$knockout;constructor(e=4,t=45,n=null,r=null,i=null,a=4,o=4,s=1,c=1,l=`outer`,u=!1){super(),this._$blurX=4,this._$blurY=4,this._$quality=1,this._$distance=4,this._$angle=45,this._$colors=null,this._$alphas=null,this._$ratios=null,this._$strength=1,this._$type=`outer`,this._$knockout=!1,this.blurX=a,this.blurY=o,this.quality=c,this.distance=e,this.angle=t,this.colors=n,this.alphas=r,this.ratios=i,this.strength=s,this.type=l,this.knockout=u}get alphas(){return this._$alphas}set alphas(e){if(e!==this._$alphas){if(Array.isArray(e))for(let t=0;t{let t=z();for(let n=0;n{if(e.$filters)return e.$filters;let t=Mt(e);return t&&t.surfaceFilterList?(t.filters||=pr(t.surfaceFilterList),t.filters):null},hr=(e,t)=>{e.$filters=t,I(e)},gr=e=>{if(e.$blendMode)return e.$blendMode;let t=Mt(e);return t&&t.blendMode?t.blendMode:`normal`},_r=(e,t)=>{e.$blendMode!==t&&(e.$blendMode=t,I(e))},vr=180/Math.PI,yr=e=>{let t=e.$matrix?e.$matrix.rawData:H(e);return t?Math.atan2(t[1],t[0])*vr:0},br=Math.PI/180,xr=(e,t)=>{if(t=cn(t%360,-360,360,0),e.$rotation===t)return;let n=e.$matrix;if(!n){let t=H(e);e.$matrix=n=t?new F(...t):new F}let r=Math.sqrt(n.a*n.a+n.b*n.b),i=Math.sqrt(n.c*n.c+n.d*n.d);if(t===0)n.a=r,n.b=0,n.c=0,n.d=i;else{let e=Math.atan2(n.b,n.a),a=Math.atan2(-n.c,n.d),o=t*br;a=a+o-e,e=o;let s=Math.sin(e),c=Math.cos(e);n.b=r*s,n.a=Math.abs(s)===1?0:r*c;let l=Math.sin(a),u=Math.cos(a);n.c=-i*l,n.d=Math.abs(l)===1?0:i*u}e.$scaleX=null,e.$scaleY=null,e.$rotation=t,I(e)},Sr=e=>{let t=e.$matrix?e.$matrix.rawData:H(e);if(!t)return 1;let n=(Math.abs(t[0])>=1e-12?Math.sign(t[0]):Math.sign(t[1]))||1,r=Math.hypot(t[0],t[1]);return Math.round(r*n*1e4)/1e4},Cr=(e,t)=>{t=cn(t,-Number.MAX_VALUE,Number.MAX_VALUE,1);let n=Math.round(t*1e4)/1e4;if(e.$scaleX===n)return;let r=e.$matrix;if(!r){let t=H(e);e.$matrix=r=t?new F(...t):new F}if(r.b===0||isNaN(r.b))r.a=n;else{let e=Math.atan2(r.b,r.a),t=(Math.hypot(r.a,r.b)*((Math.abs(r.a)>=1e-12?Math.sign(r.a):Math.sign(r.b))||1)>=0?e:e-Math.PI)+(n<0?Math.PI:0),i=Math.abs(n);r.a=i*Math.cos(t),r.b=i*Math.sin(t)}e.$scaleX=n,e.$rotation=null,I(e)},wr=e=>{let t=e.$matrix?e.$matrix.rawData:H(e);if(!t)return 1;let n=Math.hypot(t[0],t[1]),r=(Math.abs(t[0])>=1e-12?Math.sign(t[0]):Math.sign(t[1]))||1;return Math.round((t[0]*t[3]-t[1]*t[2])/(n*r)*1e4)/1e4},Tr=(e,t)=>{t=cn(t,-Number.MAX_VALUE,Number.MAX_VALUE,1);let n=Math.round(t*1e4)/1e4;if(e.$scaleY===n)return;let r=e.$matrix;if(!r){let t=H(e);e.$matrix=r=t?new F(...t):new F}if(r.c===0||isNaN(r.c))r.d=n;else{let e=Math.max(0,Math.abs(n)),t=Math.atan2(r.b,r.a);(r.a<0||Math.abs(r.a)<1e-12&&r.b<0)&&(t-=Math.PI),t<=-Math.PI&&(t+=2*Math.PI),t>Math.PI&&(t-=2*Math.PI);let i=t+(n<0?Math.PI:0);r.c=-e*Math.sin(i),r.d=e*Math.cos(i)}e.$scaleY=n,e.$rotation=null,I(e)},Er=e=>{let t=e.$matrix?e.$matrix.rawData:H(e);return t?t[4]:0},Dr=(e,t)=>{let n=e.$matrix;if(!n){let t=H(e);e.$matrix=n=t?new F(...t):new F}e.$x!==t&&(e.$x=n.tx=t,I(e))},Or=e=>{let t=e.$matrix?e.$matrix.rawData:H(e);return t?t[5]:0},kr=(e,t)=>{let n=e.$matrix;if(!n){let t=H(e);e.$matrix=n=t?new F(...t):new F}e.$y!==t&&(e.$y=n.ty=t,I(e))},W=(e,t,n,r,i)=>{let a=i[0],o=i[1],s=i[2],c=i[3],l=i[4],u=i[5],d=n*a+r*s+l,f=n*a+t*s+l,p=e*a+r*s+l,m=e*a+t*s+l,h=n*o+r*c+u,g=n*o+t*c+u,_=e*o+r*c+u,v=e*o+t*c+u;return B(Math.min(d,f,p,m),Math.min(h,g,_,v),Math.max(d,f,p,m),Math.max(h,g,_,v))},Ar=e=>{let t=e.graphics;return B(t.xMin,t.yMin,t.xMax,t.yMax)},jr=(e,t=null)=>{let n=Ar(e),r=H(e),i=e.cacheAsBitmap,a=null;if(i){let e=i.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);a=r?R(r[0]*t,r[1]*t,r[2]*n,r[3]*n,r[4],r[5]):R(t,0,0,n,0,0),r=a}if(!r){if(t){let e=W(n[0],n[1],n[2],n[3],t);return V(n),e}return n}let o=W(n[0],n[1],n[2],n[3],t?F.multiply(t,r):r);return a&&Ht(a),V(n),o},Mr=e=>B(0,0,e.videoWidth,e.videoHeight),Nr=(e,t=null)=>{let n=Mr(e),r=H(e);if(!r){if(t){let e=W(n[0],n[1],n[2],n[3],t);return V(n),e}return n}let i=W(n[0],n[1],n[2],n[3],t?F.multiply(t,r):r);return V(n),i},Pr=e=>B(e.xMin,e.yMin,e.xMax,e.yMax),Fr=(e,t=null)=>{let n=Pr(e),r=H(e),i=e.cacheAsBitmap,a=null;if(i){let e=i.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);a=r?R(r[0]*t,r[1]*t,r[2]*n,r[3]*n,r[4],r[5]):R(t,0,0,n,0,0),r=a}if(!r){if(t){let e=W(n[0],n[1],n[2],n[3],t);return V(n),e}return n}let o=W(n[0],n[1],n[2],n[3],t?F.multiply(t,r):r);return a&&Ht(a),V(n),o},Ir=(e,t=null)=>{let n=e.children;if(!n.length)return B(0,0,0,0);let r=H(e),i=e.cacheAsBitmap,a=null;if(i){let e=i.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);a=r?R(r[0]*t,r[1]*t,r[2]*n,r[3]*n,r[4],r[5]):R(t,0,0,n,0,0),r=a}let o=r?t?F.multiply(t,r):r:t,s=Number.MAX_VALUE,c=s,l=-s,u=s,d=-s;for(let e=0;e{switch(!0){case e.isContainerEnabled:return Ir(e);case e.isShape:return jr(e);case e.isText:return Fr(e);case e.isVideo:return Nr(e);default:return B(0,0,0,0)}},Rr=e=>{let t=Lr(e),n=Math.abs(t[2]-t[0]);switch(V(t),!0){case n===0:case n===1/0:case n===-1/0:return 0;default:return Math.round(n*100)/100}},zr=(e,t=null)=>{let n=e.children;if(!n.length)return B(0,0,0,0);let r=H(e),i=t;r&&(i=t?F.multiply(t,r):r);let a=Number.MAX_VALUE,o=a,s=-a,c=a,l=-a;for(let e=0;e{switch(!0){case e.isContainerEnabled:return zr(e);case e.isShape:return Ar(e);case e.isText:return Pr(e);case e.isVideo:return Mr(e);default:return B(0,0,0,0)}},Vr=(e,t)=>{if(t=+t,isNaN(t)||0>t)return;let n=Br(e),r=Math.abs(n[2]-n[0]);switch(!0){case r===0:case r===1/0:case r===-1/0:return;default:r=Math.round(r*100)/100}Cr(e,t/r)},Hr=(e,t)=>{let n=e.concatenatedMatrix,r=new P(t.x*n.a+t.y*n.c+n.tx,t.x*n.b+t.y*n.d+n.ty);return F.release(n.rawData),r},Ur=(e,t)=>{let n=e.concatenatedMatrix;n.invert();let r=new P(t.x*n.a+t.y*n.c+n.tx,t.x*n.b+t.y*n.d+n.ty);return F.release(n.rawData),r},Wr=e=>{let t=Lr(e),n=Math.abs(t[3]-t[1]);switch(V(t),!0){case n===0:case n===1/0:case n===-1/0:return 0;default:return Math.round(n*100)/100}},Gr=(e,t)=>{if(t=+t,isNaN(t)||0>t)return;let n=Br(e),r=Math.abs(n[3]-n[1]);switch(!0){case r===0:case r===1/0:case r===-1/0:return;default:r=Math.round(r*100)/100}Tr(e,t/r)},Kr=e=>{let t=e.parent;t&&t.removeChild(e)},qr=(e,t=null)=>{let n=e.concatenatedMatrix,r=Br(e),i=W(r[0],r[1],r[2],r[3],n.rawData);if(V(r),F.release(n.rawData),!t){let e=new jt(i[0],i[1],Math.abs(i[2]-i[0]),Math.abs(i[3]-i[1]));return V(i),e}let a=t.concatenatedMatrix;a.invert();let o=W(i[0],i[1],i[2],i[3],a.rawData);V(i),F.release(a.rawData);let s=new jt(o[0],o[1],Math.abs(o[2]-o[0]),Math.abs(o[3]-o[1]));return V(o),s},Jr=(e,t)=>{let n=Br(e),r=e.concatenatedMatrix,i=W(n[0],n[1],n[2],n[3],r.rawData);V(n),F.release(r.rawData);let a=Br(t),o=t.concatenatedMatrix,s=W(a[0],a[1],a[2],a[3],o.rawData);V(a),F.release(o.rawData);let c=Math.max(i[0],s[0]),l=Math.max(i[1],s[1]),u=Math.min(i[2],s[2]),d=Math.min(i[3],s[3]);return V(i),V(s),u-c>=0&&d-l>=0},Yr=class e{_$bitmapData;_$matrix;_$repeat;_$smooth;constructor(e,t=null,n=!0,r=!1){this._$bitmapData=e,this._$matrix=t,this._$repeat=n,this._$smooth=r}clone(){return new e(this._$bitmapData.clone(),this._$matrix?this._$matrix.clone():null,this._$repeat,this._$smooth)}toArray(){return z(this._$bitmapData,this._$matrix,this._$repeat,this._$smooth)}},Xr=class e{_$type;_$colors;_$alphas;_$ratios;_$matrix;_$spreadMethod;_$interpolationMethod;_$focalPointRatio;_$colorStops;constructor(e,t,n,r,i=null,a=`pad`,o=`rgb`,s=0){this._$type=e,this._$colors=t,this._$alphas=n,this._$ratios=r,this._$matrix=i,this._$spreadMethod=a,this._$interpolationMethod=o,this._$focalPointRatio=s,this._$colorStops=z()}get colorStops(){if(!this._$colorStops.length){let e=Math.min(Math.min(this._$alphas.length,this._$colors.length),this._$ratios.length);for(let t=0;t>>16&255,G:n>>>8&255,B:n&255,A:this._$alphas[t]*255&255}}}return this._$colorStops}toArray(){return z(this._$type,this.colorStops,this._$matrix?this._$matrix.rawData:Ft,this._$spreadMethod,this._$interpolationMethod,this._$focalPointRatio)}clone(){return new e(this._$type,this._$colors.slice(),this._$alphas.slice(),this._$ratios.slice(),this._$matrix?this._$matrix.clone():null,this._$spreadMethod,this._$interpolationMethod,this._$focalPointRatio)}},Zr=(e,t=0,n=0)=>{e.xMin=Math.min(e.xMin,t),e.xMax=Math.max(e.xMax,t),e.yMin=Math.min(e.yMin,n),e.yMax=Math.max(e.yMax,n)},Qr=(e,t=0,n=0,r=0,i=0,a=0,o=`none`)=>{e.xMin=Math.min(e.xMin,Math.min(t,r)),e.xMax=Math.max(e.xMax,Math.max(t,r)),e.yMin=Math.min(e.yMin,Math.min(n,i)),e.yMax=Math.max(e.yMax,Math.max(n,i));let s=r-t,c=i-n,l=Math.sqrt(s*s+c*c);if(!l)return;let u=s/l,d=c/l,f=-d,p=u,m=a/2,h=Math.min(t+f*m,t-f*m,r+f*m,r-f*m),g=Math.max(t+f*m,t-f*m,r+f*m,r-f*m),_=Math.min(n+p*m,n-p*m,i+p*m,i-p*m),v=Math.max(n+p*m,n-p*m,i+p*m,i-p*m);if(e.xMin=Math.min(e.xMin,h),e.xMax=Math.max(e.xMax,g),e.yMin=Math.min(e.yMin,_),e.yMax=Math.max(e.yMax,v),o===`round`||o===`square`){let r=t+m*-u,i=n+m*-d,a=Math.min(r+m*u+m*f,r-m*u+m*f,r+m*u-m*f,r-m*u-m*f),o=Math.max(r+m*u+m*f,r-m*u+m*f,r+m*u-m*f,r-m*u-m*f),s=Math.min(i+m*d+m*p,i+m*d-m*p,i-m*d-m*p,i-m*d+m*p),c=Math.max(i+m*d+m*p,i+m*d-m*p,i-m*d-m*p,i-m*d+m*p);e.xMin=Math.min(e.xMin,a),e.xMax=Math.max(e.xMax,o),e.yMin=Math.min(e.yMin,s),e.yMax=Math.max(e.yMax,c)}},$r=(e,t,n=0,r=0,i=0,a=`none`,...o)=>{for(let s=0;s{e.isConfirmed=!1,t&&r&&r.push(...a),n&&i&&i.push(...a)},ti=(e,t,n,r,i)=>{t=+t||0,n=+n||0,r=+r||0,i=+i||0,r=Math.round(r),i=Math.round(i);let a=r/2,o=i/2,s=t+a,c=n+o,l=t+r,u=n+i,d=4/3*(Math.SQRT2-1),f=d*a,p=d*o;return e.moveTo(s,n).cubicCurveTo(s+f,n,l,c-p,l,c).cubicCurveTo(l,c+p,s+f,u,s,u).cubicCurveTo(s-f,u,t,c+p,t,c).cubicCurveTo(t,c-p,s-f,n,s,n)},ni=(e,t,n,r,i)=>{t=+t||0,n=+n||0,r=+r||0,i=+i||0;let a=Math.round(t+r),o=Math.round(n+i);return e.moveTo(t,n).lineTo(t,o).lineTo(a,o).lineTo(a,n).lineTo(t,n)},ri=(e,t,n,r,i,a,o=NaN)=>{t=+t||0,n=+n||0,r=+r||0,i=+i||0,a=+a||0,o=+o||a,r=Math.round(r),i=Math.round(i),a=Math.round(a),o=Math.round(o);let s=a/2,c=o/2,l=4/3*(Math.SQRT2-1),u=l*s,d=l*c,f=t+s,p=t+r,m=p-s,h=n+c,g=n+i,_=g-c;return e.moveTo(f,n).lineTo(m,n).cubicCurveTo(m+u,n,p,h-d,p,h).lineTo(p,_).cubicCurveTo(p,_+d,m+u,g,m,g).lineTo(f,g).cubicCurveTo(f-u,g,t,_+d,t,_).lineTo(t,h).cubicCurveTo(t,h-d,f-u,n,f,n)},ii=e=>{if(!e)return[];let t=z();for(let n=0;ne.ratio-t.ratio);for(let e=0;e{let t=rn.get(e);t&&(t.uniqueKey!==``&&M.has(t.uniqueKey)&&M.removeById(t.uniqueKey),t.uniqueKey=``,t.$cache=null,I(t))},G=class e{isConfirmed;xMin;yMin;xMax;yMax;$recodes;_$buffer;_$maxAlpha;_$isBeginning;_$positionX;_$positionY;_$hasFillEnabled;_$fillType;_$fillColor;_$fillGradient;_$fillBitmap;_$fills;_$hasLineEnabled;_$lineType;_$lineColor;_$lineGradient;_$joints;_$miterLimit;_$caps;_$lineWidth;_$lines;constructor(){this.isConfirmed=!1,this.xMin=Number.MAX_VALUE,this.yMin=Number.MAX_VALUE,this.xMax=-Number.MAX_VALUE,this.yMax=-Number.MAX_VALUE,this.$recodes=null,this._$buffer=null,this._$positionX=0,this._$positionY=0,this._$maxAlpha=0,this._$isBeginning=!1,this._$fills=null,this._$hasFillEnabled=!1,this._$fillType=0,this._$fillGradient=null,this._$fillBitmap=null,this._$fillColor=0,this._$caps=`none`,this._$lineWidth=1,this._$lines=null,this._$hasLineEnabled=!1,this._$lineType=0,this._$lineGradient=null,this._$joints=`round`,this._$miterLimit=0,this._$lineColor=0}static get MOVE_TO(){return 0}static get CURVE_TO(){return 1}static get LINE_TO(){return 2}static get CUBIC(){return 3}static get ARC(){return 4}static get FILL_STYLE(){return 5}static get STROKE_STYLE(){return 6}static get END_FILL(){return 7}static get END_STROKE(){return 8}static get BEGIN_PATH(){return 9}static get GRADIENT_FILL(){return 10}static get GRADIENT_STROKE(){return 11}static get CLOSE_PATH(){return 12}static get BITMAP_FILL(){return 13}static get BITMAP_STROKE(){return 14}get isDrawable(){if(!this._$isBeginning||!this._$maxAlpha)return!1;let e=Math.abs(this.xMax-this.xMin),t=Math.abs(this.yMax-this.yMin);return e>0&&t>0}beginBitmapFill(t,n=null,r=!0,i=!1){return this._$hasFillEnabled&&this.endFill(),this._$fills||=z(),this._$maxAlpha=1,this._$hasFillEnabled=!0,this._$isBeginning=!0,this._$fills.push(e.BEGIN_PATH),this._$fillType=e.BITMAP_FILL,this._$fillBitmap=new Yr(t,n,r,i),this}beginFill(t=0,n=1){this._$hasFillEnabled&&this.endFill(),this._$fills||=z(),typeof t==`string`&&(t=sn(t)),t=cn(t,0,16777215,0),n=cn(n,0,1,1),this._$maxAlpha=Math.max(this._$maxAlpha,n),this._$hasFillEnabled=!0,this._$isBeginning=!0,this._$fills.push(e.BEGIN_PATH),this._$fillType=e.FILL_STYLE;let r=t>>>16&255,i=t>>>8&255,a=t&255;return this._$fillColor=r<<24|i<<16|a<<8|n*255,this}beginGradientFill(t,n,r,i,a=null,o=`pad`,s=`rgb`,c=0){this._$hasFillEnabled&&this.endFill(),this._$fills||=z();for(let e=0;ethis._$fills.length)return this;switch(this.$recodes||=z(),(this._$fills[2]!==this._$fills[this._$fills.length-2]||this._$fills[3]!==this._$fills[this._$fills.length-1])&&this._$fills.push(e.LINE_TO,this._$fills[2],this._$fills[3]),this.$recodes.push(...this._$fills),qt(this._$fills),this._$fills=null,this._$fillType){case e.FILL_STYLE:this.$recodes.push(this._$fillType,this._$fillColor>>>24&255,this._$fillColor>>>16&255,this._$fillColor>>>8&255,this._$fillColor&255,e.END_FILL);break;case e.GRADIENT_FILL:this._$fillGradient&&this.$recodes.push(this._$fillType,...this._$fillGradient.toArray());break;case e.BITMAP_FILL:this._$fillBitmap&&this.$recodes.push(this._$fillType,...this._$fillBitmap.toArray())}return this._$fillType=0,this._$fillColor=0,this._$fillGradient=null,this._$fillBitmap=null,this._$hasFillEnabled=!1,this}endLine(){if(!this._$hasLineEnabled||!this._$lines)return this;switch(this.$recodes||=z(),this.$recodes.push(...this._$lines),qt(this._$lines),this._$lines=null,this._$lineType){case e.STROKE_STYLE:this.$recodes.push(this._$lineType,this._$lineWidth,this._$caps,this._$joints,this._$miterLimit,this._$lineColor>>>24&255,this._$lineColor>>>16&255,this._$lineColor>>>8&255,this._$lineColor&255,e.END_STROKE);break;case e.GRADIENT_STROKE:this._$lineGradient&&this.$recodes.push(this._$lineType,this._$lineWidth,this._$caps,this._$joints,this._$miterLimit,...this._$lineGradient.toArray());break;case e.BITMAP_STROKE:this._$fillBitmap&&this.$recodes.push(this._$lineType,this._$lineWidth,this._$caps,this._$joints,this._$miterLimit,...this._$fillBitmap.toArray())}return this._$lineType=0,this._$lineWidth=0,this._$lineGradient=null,this._$lineColor=0,this._$caps=`none`,this._$joints=`round`,this._$miterLimit=0,this._$hasLineEnabled=!1,this}lineBitmapStyle(t,n=null,r=!0,i=!1){return this._$hasLineEnabled?(this._$lines||=z(),this._$maxAlpha=1,this._$hasLineEnabled=!0,this._$isBeginning=!0,this._$lines.push(e.BEGIN_PATH),this._$lineType=e.BITMAP_STROKE,this._$fillBitmap=new Yr(t,n,r,i),this):this}lineGradientStyle(t,n,r,i,a=null,o=`pad`,s=`rgb`,c=0){if(!this._$hasLineEnabled)return this;this._$lines||=z();for(let e=0;e>>16&255,c=n>>>8&255,l=n&255;return this._$lineColor=s<<24|c<<16|l<<8|r*255,this._$lineWidth=t,this._$caps=`${i}`,this._$joints=`${a}`,this._$joints===`miter`&&(this._$miterLimit=o),this}lineTo(t,n){return t=+t||0,n=+n||0,this._$positionX===t&&this._$positionY===n?this:($r(this,this._$hasLineEnabled,this._$positionX,this._$positionY,this._$lineWidth,this._$caps,t,n),ei(this,this._$hasFillEnabled,this._$hasLineEnabled,this._$fills,this._$lines,e.LINE_TO,t,n),this._$positionX=t,this._$positionY=n,this)}moveTo(t,n){t=+t||0,n=+n||0,this._$positionX=t,this._$positionY=n,$r(this,this._$hasLineEnabled,this._$positionX,this._$positionY,this._$lineWidth,this._$caps,t,n);let r=!1;return this._$hasFillEnabled&&this._$fills&&this._$fills[this._$fills.length-3]===e.MOVE_TO&&(r=!0,this._$fills[this._$fills.length-2]=t,this._$fills[this._$fills.length-1]=n),this._$hasLineEnabled&&this._$lines&&this._$lines[this._$lines.length-3]===e.MOVE_TO&&(r=!0,this._$lines[this._$lines.length-2]=t,this._$lines[this._$lines.length-1]=n),r||ei(this,this._$hasFillEnabled,this._$hasLineEnabled,this._$fills,this._$lines,e.MOVE_TO,t,n),this}get buffer(){if(this.isConfirmed&&this._$buffer)return this._$buffer;this._$hasLineEnabled&&this.endLine(),this._$hasFillEnabled&&this.endFill();let e=ii(this.$recodes);return this._$buffer=new Float32Array(e),qt(e),this.isConfirmed=!0,this._$buffer}set buffer(e){this._$buffer=e,this.isConfirmed=!0,this._$isBeginning=!0,this._$maxAlpha=1}},oi=(e,t,n)=>{for(let r=0;r{let i=e.graphics,a=i.xMax-i.xMin,o=i.yMax-i.yMin;if(a<=0||o<=0)return!1;let s=H(e),c=e.cacheAsBitmap,l=null;if(c){let e=c.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);l=s?R(s[0]*t,s[1]*t,s[2]*n,s[3]*n,s[4],s[5]):R(t,0,0,n,0,0),s=l}let u=s?F.multiply(n,s):n;l&&Ht(l);let d=u[0]*u[3]-u[1]*u[2];if(d){let e=r.x-u[4],t=r.y-u[5],s=(u[3]*e-u[2]*t)/d,c=(u[0]*t-u[1]*e)/d,l=i.buffer.length>0,f=l?i.xMin:0,p=l?i.yMin:0,m=l?i.xMax:a,h=l?i.yMax:o;if(sm||ch)return u!==n&&F.release(u),!1}t.beginPath(),t.setTransform(u[0],u[1],u[2],u[3],u[4],u[5]);let f=!1;return i.buffer.length?f=oi(t,i.buffer,r):(t.moveTo(0,0),t.lineTo(a,0),t.lineTo(a,o),t.lineTo(0,o),t.lineTo(0,0),f=t.isPointInPath(r.x,r.y)),u!==n&&F.release(u),f},ci=(e,t,n,r)=>{let i=Math.ceil(Math.abs(e.xMax-e.xMin)),a=Math.ceil(Math.abs(e.yMax-e.yMin));if(i<=0||a<=0)return!1;let o=H(e),s=e.cacheAsBitmap,c=null;if(s){let e=s.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);c=o?R(o[0]*t,o[1]*t,o[2]*n,o[3]*n,o[4],o[5]):R(t,0,0,n,0,0),o=c}let l=o?F.multiply(n,o):n;return c&&Ht(c),t.setTransform(l[0],l[1],l[2],l[3],l[4],l[5]),t.beginPath(),t.moveTo(0,0),t.lineTo(i,0),t.lineTo(i,a),t.lineTo(0,a),t.lineTo(0,0),l!==n&&F.release(l),t.isPointInPath(r.x,r.y)},li=(e,t,n,r)=>{let i=e.videoWidth,a=e.videoHeight;if(i<=0||a<=0)return!1;let o=H(e),s=o?F.multiply(n,o):n;return t.beginPath(),t.setTransform(s[0],s[1],s[2],s[3],s[4],s[5]),t.beginPath(),t.moveTo(0,0),t.lineTo(i,0),t.lineTo(i,a),t.lineTo(0,a),t.lineTo(0,0),s!==n&&F.release(s),t.isPointInPath(r.x,r.y)},ui=(e,t,n,r,i=!0)=>{let a=e.children;if(!a.length)return!1;let o=H(e),s=e.cacheAsBitmap,c=null;if(s){let e=s.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);c=o?R(o[0]*t,o[1]*t,o[2]*n,o[3]*n,o[4],o[5]):R(t,0,0,n,0,0),o=c}let l=o?F.multiply(n,o):n;c&&Ht(c);let u=z(),d=z(),f=Gt(),p=0,m=0;for(let e=0;ep&&(m=0,p=0),m&&f.set(t.instanceId,m),d.push(t))}}let h=e.mouseChildren&&i;if(e.isSprite&&e.hitArea&&e.hitArea.isSprite){let n=ui(e.hitArea,t,l,r,h);return n&&h&&e.mouseEnabled&&((e.isTimelineEnabled||e.buttonMode&&e.useHandCursor)&&(r.pointer=`pointer`),r.hit||=e),n}let g=!1,_=e.mask;if(_){let e=!1;switch(!0){case _.isContainerEnabled:e=ui(_,t,l,r,h);break;case _.isShape:e=si(_,t,l,r);break;case _.isText:e=ci(_,t,l,r);break;case _.isVideo:e=li(_,t,l,r)}if(!e)return!1}for(;d.length;){let e=d.pop();if(!e||e.isMask)continue;if(f.has(e.instanceId)){let n=f.get(e.instanceId);if(!n)continue;let i=u[n];if(!i)continue;let a=!1;switch(!0){case i.isContainerEnabled:a=ui(i,t,l,r,h);break;case i.isShape:a=si(i,t,l,r);break;case i.isText:a=ci(i,t,l,r);break;case i.isVideo:a=li(i,t,l,r)}if(!a)continue}let n=!1;switch(!0){case e.isContainerEnabled:n=ui(e,t,l,r,h);break;case e.isShape:n=si(e,t,l,r);break;case e.isText:n=ci(e,t,l,r);break;case e.isVideo:n=li(e,t,l,r)}if(n){if(g=!0,!h)break;if(e.isInteractive&&e.mouseEnabled){if(r.pointer===`auto`)switch(!0){case e.isText:e.type===`input`&&(r.pointer=`text`);break;case e.isSprite:(e.isTimelineEnabled||e.buttonMode&&e.useHandCursor)&&(r.pointer=`pointer`);break;default:r.pointer=`pointer`}r.hit||=e;break}}}return qt(u),qt(d),Kt(f),l!==n&&F.release(l),g},di={x:0,y:0,pointer:``,hit:null},fi=(e,t,n,r=!1)=>{if(r){let r=e.parent,i=r?r.concatenatedMatrix.rawData:Ft;switch(on.setTransform(1,0,0,1,0,0),on.beginPath(),di.x=t,di.y=n,di.hit=null,!0){case e.isContainerEnabled:return ui(e,on,i,di);case e.isShape:return si(e,on,i,di);case e.isText:return ci(e,on,i,di);case e.isVideo:return li(e,on,i,di);default:return!1}}let i=Br(e),a=H(e),o=e.cacheAsBitmap,s=a||Ft,c=null;if(o&&s){let e=o.rawData,t=Math.sqrt(e[0]*e[0]+e[1]*e[1]),n=Math.sqrt(e[2]*e[2]+e[3]*e[3]);c=R(s[0]*t,s[1]*t,s[2]*n,s[3]*n,s[4],s[5]),s=c}let l=W(i[0],i[1],i[2],i[3],s);V(i),c&&Ht(c);let u=new jt(l[0],l[1],Math.abs(l[2]-l[0]),Math.abs(l[3]-l[1]));V(l);let d=e.parent,f=d?d.globalToLocal(new P(t,n)):new P(t,n);return u.containsPoint(f)},pi=e=>{let t=H(e);return t?new F(t[0],t[1],t[2],t[3],t[4],t[5]):new F},mi=e=>{let t=gn(e);return t?new N(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7]):new N},hi=class extends de{instanceId;$instanceIdString;dictionaryId;isSprite;isInteractive;isContainerEnabled;isTimelineEnabled;isShape;isVideo;isText;placeId;placeObject;characterId;clipDepth;name;startFrame;endFrame;changed;$added;$addedToStage;uniqueKey;$matrix;$colorTransform;$filters;$blendMode;$scaleX;$scaleY;$rotation;$x;$y;$alpha;$cache;_$scale9Grid;_$visible;_$cacheAsBitmap;_$variables;isMask;parent;cacheTransform=null;constructor(){super(),this.instanceId=Lt(),this.dictionaryId=-1,this.uniqueKey=``,this.$instanceIdString=``,this.isSprite=!1,this.isContainerEnabled=!1,this.isTimelineEnabled=!1,this.isShape=!1,this.isVideo=!1,this.isText=!1,this.isInteractive=!1,this.placeId=-1,this.placeObject=null,this.characterId=-1,this.clipDepth=0,this.name=``,this.startFrame=1,this.endFrame=0,this.parent=null,this.isMask=!1,this.changed=!0,this.$added=!1,this.$addedToStage=!1,this.$matrix=null,this.$colorTransform=null,this.$filters=null,this.$blendMode=null,this._$visible=!0,this._$cacheAsBitmap=null,this._$scale9Grid=null,this._$variables=null,this.$x=null,this.$y=null,this.$alpha=null,this.$scaleX=null,this.$scaleY=null,this.$rotation=null,this.$cache=null}get concatenatedMatrix(){return hn(this)}get alpha(){return _n(this)}set alpha(e){vn(this,e)}get blendMode(){return gr(this)}set blendMode(e){_r(this,e)}get filters(){return mr(this)}set filters(e){hr(this,e)}get dropTarget(){return mn()}get height(){return Wr(this)}set height(e){Gr(this,e)}get loaderInfo(){return en.has(this)?en.get(this):null}get colorTransform(){return mi(this)}set colorTransform(e){this.$colorTransform=e}get matrix(){return pi(this)}set matrix(e){this.$matrix=e}get mouseX(){return this.globalToLocal(Pt).x}get mouseY(){return this.globalToLocal(Pt).y}get root(){return tn.has(this)?tn.get(this):null}get rotation(){return this.$rotation===null?yr(this):this.$rotation}set rotation(e){xr(this,e)}get scale9Grid(){return this._$scale9Grid}set scale9Grid(e){this._$scale9Grid!==e&&(this._$scale9Grid=e,I(this))}get scaleX(){let e=this.$scaleX===null?Sr(this):this.$scaleX;if(this._$cacheAsBitmap){let t=this._$cacheAsBitmap.rawData;return e*Math.sqrt(t[0]*t[0]+t[1]*t[1])}return e}set scaleX(e){Cr(this,e)}get scaleY(){let e=this.$scaleY===null?wr(this):this.$scaleY;if(this._$cacheAsBitmap){let t=this._$cacheAsBitmap.rawData;return e*Math.sqrt(t[2]*t[2]+t[3]*t[3])}return e}set scaleY(e){Tr(this,e)}get visible(){return this._$visible}set visible(e){e=!!e,this._$visible!==e&&(this._$visible=e,I(this))}get cacheAsBitmap(){return this._$cacheAsBitmap}set cacheAsBitmap(e){e!==null&&!(e instanceof F)||this._$cacheAsBitmap!==e&&(this._$cacheAsBitmap=e,I(this))}get width(){return Rr(this)}set width(e){Vr(this,e)}get x(){return this.$x===null?Er(this):this.$x}set x(e){Dr(this,e)}get y(){return this.$y===null?Or(this):this.$y}set y(e){kr(this,e)}getBounds(e=null){return qr(this,e)}globalToLocal(e){return Ur(this,e)}hitTestObject(e){return Jr(this,e)}hitTestPoint(e,t,n=!1){return fi(this,e,t,n)}localToGlobal(e){return Hr(this,e)}getLocalVariable(e){if(!this._$variables)return null;if(this._$variables.has(e))return this._$variables.get(e)}setLocalVariable(e,t){this._$variables||=new Map,this._$variables.set(e,t)}hasLocalVariable(e){return this._$variables?this._$variables.has(e):!1}deleteLocalVariable(e){this._$variables&&this._$variables.has(e)&&(this._$variables.delete(e),this._$variables.size||(this._$variables=null))}getGlobalVariable(e){return dn.has(e)?dn.get(e):null}setGlobalVariable(e,t){dn.set(e,t)}hasGlobalVariable(e){return dn.has(e)}deleteGlobalVariable(e){dn.has(e)&&dn.delete(e)}clearGlobalVariable(){return dn.clear()}remove(){Kr(this)}$syncLoaderInfo(e){en.set(this,e)}},gi=e=>{let t=e.children;for(let n=0;n{e.$addedToStage||!nn.has(e.instanceId)||(e.uniqueKey&&M.cancelRemoveTimer(e.uniqueKey),M.cancelRemoveTimer(`${e.instanceId}`),e.$addedToStage=!0,e.willTrigger(w.ADDED_TO_STAGE)&&e.dispatchEvent(new w(w.ADDED_TO_STAGE)))},vi=e=>{let t=e.children;for(let e=0;e{e.$added||(e.$added=!0,e.willTrigger(w.ADDED)&&e.dispatchEvent(new w(w.ADDED,!0)))},bi=(e,t,n=-1)=>{let r=t.parent;r&&r.removeChild(t);let i=e.children;return 0>n?i.push(t):i.splice(n,0,t),e.$container=null,t.parent=e,nn.has(e.instanceId)&&(tn.set(t,e.root),nn.add(t.instanceId),t.isContainerEnabled&&gi(t)),yi(t),nn.has(e.instanceId)&&(_i(t),t.isContainerEnabled&&vi(t)),I(t),t},xi=e=>{let t=e.children;for(let e=0;e{e.$added&&(e.$added=!1,e.willTrigger(w.REMOVED)&&e.dispatchEvent(new w(w.REMOVED,!0)))},Ci=e=>{if(!e.$addedToStage||!nn.has(e.instanceId))return;e.$addedToStage=!1,e.willTrigger(w.REMOVED_FROM_STAGE)&&e.dispatchEvent(new w(w.REMOVED_FROM_STAGE)),e.uniqueKey&&M.has(e.uniqueKey)&&M.removeTimer(e.uniqueKey);let t=`${e.instanceId}`;M.has(t)?M.removeTimer(t):M.$removeIds.push(e.instanceId)},wi=e=>{let t=e.children;for(let e=0;e{let n=t.parent;if(n&&n.instanceId!==e.instanceId)return;let r=e.children,i=r.indexOf(t);i>-1&&r.splice(i,1),e.$container=null,t.hasEventListener(w.ENTER_FRAME)&&t.removeAllEventListener(w.ENTER_FRAME),t.hasEventListener(D.KEY_DOWN)&&t.removeAllEventListener(D.KEY_DOWN),t.hasEventListener(D.KEY_UP)&&t.removeAllEventListener(D.KEY_UP),Si(t),nn.has(e.instanceId)&&(Ci(t),t.isContainerEnabled&&wi(t)),nn.has(e.instanceId)&&(tn.delete(t),nn.delete(t.instanceId),t.isVideo&&t.pause(),t.isContainerEnabled&&xi(t)),t.parent=null,I(e)},Ei=(e,t)=>{let n=e.children;return t in n?n[t]:null},Di=(e,t)=>{let n=Ei(e,t);n&&Ti(e,n)},Oi=(e,t)=>{if(e.instanceId===t.instanceId)return!0;let n=e.children;for(let e=0;e{if(!t)return null;let n=e.children;for(let e=0;e{let n=e.children.slice();if(n.length)for(let r=0;r{let r=e.getChildIndex(t);if(r===-1||r===n)return;let i=e.children;i.splice(r,1),i.splice(n,0,t),I(e)},Mi=(e,t,n)=>{let r=e.getChildIndex(t),i=e.getChildIndex(n);if(r===-1||i===-1)return;let a=e.children;a[r]=n,a[i]=t,I(e)},Ni=(e,t,n)=>{let r=e.children,i=r[t],a=r[n];!i||!a||(r[t]=a,r[n]=i,I(e))},Pi=class extends hi{mouseEnabled;isInteractive;constructor(){super(),this.isInteractive=!0,this.mouseEnabled=!0}},Fi=class extends Pi{_$children;_$mask;mouseChildren;$container;$layerScaleX;$layerScaleY;isContainerEnabled;constructor(){super(),this.isContainerEnabled=!0,this.mouseChildren=!0,this._$mask=null,this._$children=z(),this.$container=null,this.$layerScaleX=-1,this.$layerScaleY=-1}get children(){return this._$children}get numChildren(){return this.children.length}get mask(){return this._$mask}set mask(e){e!==this._$mask&&(this._$mask&&=(this._$mask.isMask=!1,null),e&&(e.isMask=!0,this._$mask=e),I(this))}addChild(e){return bi(this,e)}addChildAt(e,t){return bi(this,e,t)}contains(e){return Oi(this,e)}getChildAt(e){return Ei(this,e)}getChildByName(e){return ki(this,e)}getChildIndex(e){return this.children.indexOf(e)}removeChild(e){Ti(this,e)}removeChildAt(e){Di(this,e)}removeChildren(...e){Ai(this,e)}setChildIndex(e,t){ji(this,e,t)}swapChildren(e,t){Mi(this,e,t)}swapChildrenAt(e,t){Ni(this,e,t)}},Ii=class extends de{name;frame;constructor(e,t){super(),this.name=`${e}`,this.frame=t|0}},Li=class extends de{id;content;data;url;format;constructor(){super(),this.id=Lt(),this.url=``,this.content=null,this.data=null,this.format=`json`}},Ri=(e,t=!1,n=null)=>{let r=e.parent?e.parent.globalToLocal(Pt):e.globalToLocal(Pt);e.$lockCenter=t,e.$offsetX=e.x-r.x,e.$offsetY=e.y-r.y,e.$boundedRect=n,pn(e)},zi=e=>{e.$lockCenter=!1,e.$offsetX=0,e.$offsetY=0,e.$boundedRect=null,pn(null)},Bi=class extends Fi{buttonMode;useHandCursor;isSprite;hitArea;_$soundTransform;$offsetX=0;$offsetY=0;$lockCenter=!1;$boundedRect=null;constructor(){super(),this.isSprite=!0,this.buttonMode=!1,this.useHandCursor=!0,this.hitArea=null,this.$offsetX=0,this.$offsetY=0,this.$lockCenter=!1,this.$boundedRect=null,this._$soundTransform=null}static get namespace(){return`next2d.display.Sprite`}get namespace(){return`next2d.display.Sprite`}get soundTransform(){return this._$soundTransform}set soundTransform(e){this._$soundTransform=e}startDrag(e=!1,t=null){Ri(this,e,t)}stopDrag(){zi(this)}},Vi=e=>{e.isBitmap=!1,e.$bitmapBuffer=null,e.graphics.clear()},Hi=(e,t,n,r)=>{Vi(e),e.isBitmap=!0,e.$bitmapBuffer=r,e.graphics.xMin=0,e.graphics.yMin=0,e.graphics.xMax=t,e.graphics.yMax=n},Ui=(e,t)=>{let n=new Image;n.crossOrigin=`anonymous`,n.addEventListener(`load`,()=>{let t=n.width,r=n.height,i=M.getCanvas();i.width=t,i.height=r;let a=i.getContext(`2d`,{willReadFrequently:!0});a.drawImage(n,0,0,t,r),Hi(e,t,r,new Uint8Array(a.getImageData(0,0,t,r).data)),M.destroy(a),e.hasEventListener(w.COMPLETE)&&e.dispatchEvent(new w(w.COMPLETE))}),n.src=t},Wi=(e,t)=>{let n=e.graphics,r=Math.ceil(Math.abs(t.bounds.xMax-t.bounds.xMin)),i=Math.ceil(Math.abs(t.bounds.yMax-t.bounds.yMin));switch(!0){case t.bitmapId>0:{let a=e.loaderInfo.data?.characters[t.bitmapId];if(!a)break;e.isBitmap=!0,a.imageBuffer||(a.imageBuffer=new Uint8Array(a.buffer),a.buffer=null);let o=Math.ceil(Math.abs(a.bounds.xMax-a.bounds.xMin)),s=Math.ceil(Math.abs(a.bounds.yMax-a.bounds.yMin));if(t.grid){if(t.recodes){let e=t.recodes.slice(0);e.splice(-6,6);let r=new Fe(o,s);r.buffer=a.imageBuffer,e.push(G.BITMAP_FILL,r,null,!0,!1,9);let i=ii(e);n.buffer=new Float32Array(i),qt(e),qt(i)}}else if(r===o&&i===s)e.setBitmapBuffer(Math.ceil(Math.abs(a.bounds.xMax-a.bounds.xMin)),Math.ceil(Math.abs(a.bounds.yMax-a.bounds.yMin)),a.imageBuffer);else{let e=new Fe(o,s);if(e.buffer=a.imageBuffer,t.recodes){if(t.recodes[t.recodes.length-10]===G.BITMAP_STROKE){let r=t.recodes.slice(0);r.splice(-5,5),r.push(e,null,!0,!1);let i=ii(r);n.buffer=new Float32Array(i),qt(r),qt(i)}else n.beginBitmapFill(e).drawRect(0,0,r,i)}}}break;case t.inBitmap:{e.isBitmap=!0;let a=t.recodes,o=a[a.length-4];if(r===o.width&&i===o.height)e.setBitmapBuffer(o.width,o.height,o.buffer);else{let e=new Fe(o.width,o.height);e.buffer=o.buffer,n.beginBitmapFill(e).drawRect(0,0,r,i)}}break;case`buffer`in t:t.imageBuffer||(t.imageBuffer=new Uint8Array(t.buffer),t.buffer=null),e.setBitmapBuffer(Math.ceil(Math.abs(n.xMax-n.xMin)),Math.ceil(Math.abs(n.yMax-n.yMin)),t.imageBuffer);break;default:t.recodes&&=(t.recodeBuffer=new Float32Array(ii(t.recodes)),qt(t.recodes),null),t.recodeBuffer&&(n.buffer=t.recodeBuffer)}n.xMin=t.bounds.xMin,n.xMax=t.bounds.xMax,n.yMin=t.bounds.yMin,n.yMax=t.bounds.yMax,t.grid&&(e.scale9Grid=new jt(t.grid.x,t.grid.y,t.grid.w,t.grid.h))},Gi=(e,t)=>new Promise(n=>{let r=()=>{e.removeEventListener(w.COMPLETE,r),n()};e.addEventListener(w.COMPLETE,r),e.src=t}),Ki=class extends hi{_$graphics;_$src;isShape;cacheKey;cacheParams;isBitmap;$bitmapBuffer;constructor(){super(),this.isShape=!0,this.cacheKey=0,this.cacheParams=z(0,0,0),this._$graphics=null,this._$src=``,this.$bitmapBuffer=null,this.isBitmap=!1}static get namespace(){return`next2d.display.Shape`}get namespace(){return`next2d.display.Shape`}get graphics(){return this._$graphics||(this._$graphics=new G,rn.set(this._$graphics,this)),this._$graphics}get src(){return this._$src}set src(e){this._$src!==e&&(this._$src=e,Ui(this,e))}load(e){return Gi(this,e)}get bitmapData(){let e=new Fe(this.width,this.height);return this.$bitmapBuffer&&(e.buffer=this.$bitmapBuffer),e}clearBitmapBuffer(){Vi(this)}setBitmapBuffer(e,t,n){Hi(this,e,t,n)}$sync(e,t=null){t&&super.$syncLoaderInfo(t),Wi(this,e)}},qi=null,Ji=e=>{qi=e},Yi=()=>qi,K=document.createElement(`textarea`);K.tabIndex=-1;var Xi=``;Xi+=`position: fixed;`,Xi+=`top: 0;`,Xi+=`left: 0;`,Xi+=`font-size: 16px;`,Xi+=`border: 0;`,Xi+=`resize: none;`,Xi+=`opacity: 0;`,Xi+=`z-index: -1;`,Xi+=`pointer-events: none;`,K.setAttribute(`style`,Xi);var Zi=document.createElement(`canvas`);Zi.width=Zi.height=1;var Qi=Zi.getContext(`2d`),$i=0,ea=()=>$i,ta=e=>{$i=e},na=``,ra=e=>{na!==e&&(na=e,Qi.font=e)},ia=new Map,aa=e=>{if(!Qi)return 0;let t=ia.get(e);if(t!==void 0)return t;Qi.fillStyle=e;let n=+`0x${Qi.fillStyle.slice(1)}`;return 256>ia.size&&ia.set(e,n),n},oa=e=>isNaN(+e)?aa(`${e}`):+e,sa=(e,t=1)=>({R:(e&16711680)>>16,G:(e&65280)>>8,B:e&255,A:t*255}),ca=(e,t,n,r=null)=>{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},la,ua=()=>la,da=e=>{la=e},fa={x:0,y:0},pa=class e{align;bold;color;font;italic;leading;leftMargin;letterSpacing;rightMargin;size;underline;constructor(e=null,t=null,n=null,r=null,i=null,a=null,o=null,s=null,c=null,l=null,u=null){this.font=e,this.size=t,this.color=n,this.bold=r,this.italic=i,this.underline=a,this.align=o,this.leftMargin=s,this.rightMargin=c,this.leading=l,this.letterSpacing=u}clone(){return new e(this.font,this.size,this.color,this.bold,this.italic,this.underline,this.align,this.leftMargin,this.rightMargin,this.leading,this.letterSpacing)}toObject(){return{font:this.font,size:this.size,color:oa(this.color),bold:this.bold,italic:this.italic,underline:this.underline,align:this.align,leftMargin:this.leftMargin,rightMargin:this.rightMargin,leading:this.leading,letterSpacing:this.letterSpacing}}},ma=e=>{e.align=`left`,e.bold=!1,e.color=0,e.font=`Times New Roman`,e.italic=!1,e.leading=0,e.leftMargin=0,e.letterSpacing=0,e.rightMargin=0,e.size=12,e.underline=!1},ha=e=>{let t=``;if(e.font&&(t+=`font-family: ${e.font};`),e.size&&(t+=`font-size: ${e.size}px;`),e.color){let n=sa(oa(e.color)),r=n.R.toString(16).padStart(2,`0`),i=n.G.toString(16).padStart(2,`0`),a=n.B.toString(16).padStart(2,`0`);t+=`color: #${r}${i}${a};`}return e.bold&&(t+=`font-weight: bold;`),e.italic&&(t+=`font-style: italic;`),e.underline&&(t+=`text-decoration: underline;`),e.align&&(t+=`text-align: ${e.align};`),e.leftMargin&&(t+=`margin-left: ${e.leftMargin}px;`),e.rightMargin&&(t+=`margin-right: ${e.rightMargin}px;`),e.leading&&(t+=`margin-bottom: ${e.leading}px;`),e.letterSpacing&&(t+=`letter-spacing: ${e.letterSpacing}px;`),t},ga=class{_$textWidth;_$textHeight;heightTable;ascentTable;widthTable;textTable;lineTable;constructor(){this._$textWidth=-1,this._$textHeight=-1,this.widthTable=[],this.heightTable=[],this.ascentTable=[],this.textTable=[],this.lineTable=[]}get textWidth(){if(this._$textWidth!==-1)return this._$textWidth;this._$textWidth=0;for(let e=0;e{let t=``;return e.italic&&(t=`italic `),e.bold&&(t+=`bold `),`${t}${e.size}px '${e.font}',sans-serif`},va=(e,t)=>{ta(0);let n=e.lineTable.length;ra(_a(t));let r=Qi.measureText(``),i={mode:`break`,text:``,x:0,y:0,w:0,h:r.fontBoundingBoxAscent+r.fontBoundingBoxDescent,line:n,textFormat:t.toObject()};e.heightTable[n]=0,e.ascentTable[n]=0,e.widthTable[n]=0,e.lineTable.push(i),e.textTable.push(i)},ya=e=>{let t=e.heightTable.length-1;for(let n=1;n0)continue;let t=e.lineTable[n];t&&(e.heightTable[n]=t.h=e.heightTable[n-1])}},ba=e=>{let t=0;return e.leftMargin&&(t+=e.leftMargin),e.rightMargin&&(t+=e.rightMargin),t},xa=(e,t,n,r)=>{let i=n.lineTable.length-1,a=r.width-ba(t)-4,o=null,s=``;for(let c=0;ca){ta(p),i++,d.line=i;let e={mode:`wrap`,text:``,x:0,y:0,w:0,h:0,line:i,textFormat:l.toObject()},t=1,r=!0,a=/[0-9a-zA-Z?!;:.,?!。、;:〜]/g;for(;;){let e=n.textTable.length-t;if(0>=e){r=!1,t=0;break}let i=n.textTable[e];if(!i){r=!1,t=0;break}if(i.mode!==`text`){r=!1;break}if(i.text===` `){t--;break}if(!i.text.match(a)){t--;break}t++}if(n.widthTable[i]=0,n.heightTable[i]=0,n.ascentTable[i]=0,t>0&&r){let r=n.textTable.length-t;n.textTable.splice(r,0,e),n.lineTable.push(e);let a=i-1;n.widthTable[a]=0,n.heightTable[a]=0,n.ascentTable[a]=0;for(let e=0;e{let t=e.trim().split(`;`),n=[];for(let e=0;e{q=e,J=0,Y=e.length,Na(Ca,t,n,r),q=``},Na=(e,t,n,r)=>{for(;JJ&&xa(q.substring(J,i),t,n,r),J=i+1,J>=Y)break;if(q.charCodeAt(J)===47){J++;let t=q.indexOf(`>`,J);if(t===-1){J=Y;break}if(e!==Ca&&Ba(J,t)===e){J=t+1;return}J=t+1;continue}let a=J;for(;J{let e=q.indexOf(`>`,J);J=e===-1?Y:e+1},Fa=()=>{J{for(;;){for(;J=Y)break;let n=q.charCodeAt(J);if(n===62||n===47)break;let r=J;for(;J{switch(e){case 4:t===102||t===70?r.font=n:t===115||t===83?(r.size=+n,i.subFontSize&&(r.size-=i.subFontSize,1>r.size&&(r.size=1))):(t===98||t===66)&&(r.bold=!0);break;case 5:t===99||t===67?r.color=oa(n):t===115||t===83?za(Sa(n),r,i):(t===97||t===65)&&(r.align=n);break;case 6:(t===105||t===73)&&(r.italic=!0);break;case 7:(t===108||t===76)&&(r.leading=parseInt(n));break;case 9:(t===117||t===85)&&(r.underline=!0);break;case 10:(t===108||t===76)&&(r.leftMargin=parseInt(n));break;case 11:(t===114||t===82)&&(r.rightMargin=parseInt(n));break;case 14:(t===108||t===76)&&(r.letterSpacing=parseInt(n))}},Ra=(e,t,n)=>{e===4&&(t===98||t===66)?n.bold=!0:e===6&&(t===105||t===73)?n.italic=!0:e===9&&(t===117||t===85)&&(n.underline=!0)},za=(e,t,n)=>{for(let r=0;rt.size&&(t.size=1));break;case`color`:t.color=oa(i.value);break;case`align`:t.align=i.value;break;case`letterSpacing`:t.letterSpacing=parseInt(i.value);break;case`leading`:t.leading=parseInt(i.value);break;case`leftMargin`:t.leftMargin=parseInt(i.value);break;case`rightMargin`:t.rightMargin=parseInt(i.value);break;case`underline`:t.underline=!0;break;case`bold`:t.bold=!0;break;case`italic`:t.italic=!0}}},Ba=(e,t)=>{for(;ee;){let e=q.charCodeAt(t-1);if(e!==32&&e!==9)break;t--}let n=t-e;if(n===1){let t=q.charCodeAt(e);return t>=97&&(t-=32),t===66?wa:t===73?Ta:t===85?Ea:t===80?Da:Ca}if(n===2){let t=q.charCodeAt(e),n=q.charCodeAt(e+1);return t>=97&&(t-=32),n>=97&&(n-=32),t===66&&n===82?Oa:Ca}if(n===3){let t=q.charCodeAt(e);if(t>=97&&(t-=32),t===68){let t=q.charCodeAt(e+1),n=q.charCodeAt(e+2);if(t>=97&&(t-=32),n>=97&&(n-=32),t===73&&n===86)return ka}return Ca}if(n===4){let t=q.charCodeAt(e);if(t>=97&&(t-=32),t===70){let t=q.charCodeAt(e+1),n=q.charCodeAt(e+2),r=q.charCodeAt(e+3);if(t>=97&&(t-=32),n>=97&&(n-=32),r>=97&&(r-=32),t===79&&n===78&&r===84)return Aa}if(t===83){let t=q.charCodeAt(e+1),n=q.charCodeAt(e+2),r=q.charCodeAt(e+3);if(t>=97&&(t-=32),n>=97&&(n-=32),r>=97&&(r-=32),t===80&&n===65&&r===78)return ja}return Ca}return Ca},Va=(e,t,n)=>{let r=new ga;if(!e)return r;let i=e.trim().replace(/\r?\n/g,``).replace(/\t/g,``),a=t.clone();return n.subFontSize&&n.subFontSize>0&&a.size&&(a.size-=n.subFontSize,1>a.size&&(a.size=1)),va(r,a),Ma(i,a,r,n),ya(r),r},X=(e,t=0)=>(e.$textData||=Va(e.htmlText,e.defaultTextFormat,{width:e.width,multiline:e.multiline,wordWrap:e.wordWrap,subFontSize:t,textFormats:e.$textFormats}),e.$textData),Z=e=>{e.changed=!0;let t=e.parent;t&&!t.changed&&Z(t)},Ha=e=>{e.$textData=null,Z(e),e.uniqueKey!==``&&M.has(e.uniqueKey)&&M.removeById(e.uniqueKey)},Ua=e=>{if(Z(e),e.autoSize===`none`){e.xMin=e.bounds.xMin,e.yMin=e.bounds.yMin,e.xMax=e.bounds.xMax,e.yMax=e.bounds.yMax;return}let t=e.defaultTextFormat,n=e.textWidth+4+ba(t);if(e.wordWrap)e.xMin=e.bounds.xMin,e.xMax=e.bounds.xMax;else switch(e.autoSize){case`left`:e.xMax=n+e.xMin;break;case`center`:e.xMax=n+e.xMin;break;case`right`:e.xMax=e.bounds.xMax-(e.bounds.xMax-e.bounds.xMin-(n-e.bounds.xMin))}e.yMax=e.textHeight+e.bounds.yMin+4},Wa=e=>{let t=0,n=X(e);for(let e=0;er&&e.textWidth+4>e.width;)Ha(e),X(e,r++);if(e.height&&e.textHeight)for(;t>r&&e.textHeight+4>e.height;)Ha(e),X(e,r++);Z(e)},Ga=e=>{Ha(e),X(e),e.autoSize===`none`&&e.autoFontSize&&Wa(e),Ua(e)},Ka=(e,t)=>{let n=X(e);if(2>n.textTable.length)return;let r=2,i=0;for(let e=1;e=t){i=e;break}a.mode===`break`&&(o=!0,r=2),o&&i++}let a=n.textTable[i];if(!a)return;e.$scrollX=e.$scrollY=0;let o=a.line,s=0;for(let e=0;e<=o;++e)s+=n.heightTable[e];let c=Math.abs(e.yMax-e.yMin),l=0;for(let e=o;e>-1;--e){let t=n.heightTable[e];if(cc){let t=(e.textHeight-c)/c;e.$scrollY=Math.max(0,Math.min((s-l)/t,c))}let u=Math.abs(e.xMax-e.xMin),d=0;for(let e=i;e>0;--e){let t=n.textTable[e];if(t.mode===`text`){if(uu){let t=(e.textWidth-u)/u;e.$scrollX=Math.max(0,Math.min((r-d)/t,u+.5))}Z(e)},qa=()=>{let e=ua();e!==void 0&&clearTimeout(e),da(void 0)},Ja=window.devicePixelRatio,Ya=e=>{let t=e.$textData;if(!t)return{x:0,y:0,lineHeight:0,fontSize:0};let n=t.textTable,r=0,i=e.focusIndex,a=n[i];if(a)r=a.mode===`break`||a.mode===`wrap`?a.line-1:a.line;else{let e=n[n.length-1];r=e?e.line:0}r<0&&(r=0);let o=0;for(let e=1;e=i);++e){let t=n[e];!t||t.mode!==`text`||t.line!==r||(o+=t.w)}let s=0;for(let e=0;e=i))break}return{x:o,y:s,lineHeight:c,fontSize:l}},Xa=e=>{let t=Ya(e),n=t.x;if(e.scrollX>0){let t=e.width;n-=e.scrollX*(e.textWidth-t)/t}let r=t.y;if(e.scrollY>0){let t=e.height;r-=e.scrollY*(e.textHeight-t)/t}let i=e.localToGlobal(new P(n,r)),a=Q.rendererScale/Ja,o=(Q.rendererWidth-Q.stageWidth*Q.rendererScale)/2,s=(Q.rendererHeight-Q.stageHeight*Q.rendererScale)/2;K.style.left=`${fa.x+o/Ja+i.x*a}px`,K.style.top=`${fa.y+s/Ja+i.y*a}px`;let c=t.lineHeight;if(c>0){let e=t.fontSize||c;K.style.height=`${c*a}px`,K.style.fontSize=`${e*a}px`,K.style.lineHeight=`${c*a}px`}},Za=e=>{e.focusVisible=!e.focusVisible,Z(e),da(setTimeout(()=>Za(e),500)),Xa(e)},Qa=(e,t)=>{e.willTrigger(t)&&e.dispatchEvent(new fe(t)),K.value=``,e.focus?(Ji(e),setTimeout(()=>{K.focus()},300),ua()===void 0&&(e.focusIndex===-1&&(e.focusIndex=1,e.selectIndex=-1),Za(e))):(Yi()===e&&Ji(null),e.focusIndex=-1,e.selectIndex=-1,e.focusVisible=!1,qa(),K.blur()),Z(e)},$a=(e,t,n,r)=>e/r*n+t,eo=(e,t,n,r)=>(e/=r)*e*n+t,to=(e,t,n,r)=>-(e/=r)*(e-2)*n+t,no=(e,t,n,r)=>(e/=r/2)<1?e*e*n/2+t:-(--e*(e-2)-1)*n/2+t,ro=(e,t,n,r)=>(e/=r)*e*e*n+t,io=(e,t,n,r)=>(e/=r,(--e*e*e+1)*n+t),ao=(e,t,n,r)=>(e/=r/2)<1?e*e*e*n/2+t:((e-=2)*e*e+2)*n/2+t,oo=(e,t,n,r)=>(e/=r)*e*e*e*n+t,so=(e,t,n,r)=>(e/=r,(--e*e*e*e-1)*-n+t),co=(e,t,n,r)=>(e/=r/2)<1?e*e*e*e*n/2+t:((e-=2)*e*e*e-2)*-n/2+t,lo=(e,t,n,r)=>(e/=r)*e*e*e*e*n+t,uo=(e,t,n,r)=>(e/=r,(--e*e*e*e*e+1)*n+t),fo=(e,t,n,r)=>(e/=r/2)<1?e*e*e*e*e*n/2+t:((e-=2)*e*e*e*e+2)*n/2+t,po=(e,t,n,r)=>-n*Math.cos(e/r*(Math.PI/2))+n+t,mo=(e,t,n,r)=>n*Math.sin(e/r*(Math.PI/2))+t,ho=(e,t,n,r)=>-n/2*(Math.cos(Math.PI*e/r)-1)+t,go=(e,t,n,r)=>n*2**(10*(e/r-1))+t,_o=(e,t,n,r)=>n*(-(2**(-10*e/r))+1)+t,vo=(e,t,n,r)=>(e/=r/2)<1?n/2*2**(10*(e-1))+t:n/2*(-(2**(-10*(e-1)))+2)+t,yo=(e,t,n,r)=>(1-Math.sqrt(1-(e/=r)*e))*n+t,bo=(e,t,n,r)=>(e/=r,Math.sqrt(1- --e*e)*n+t),xo=(e,t,n,r)=>(e/=r*2)<1?(Math.sqrt(1-e*e)-1)/-2*n+t:(Math.sqrt(1-(e-=2)*e)+1)/2*n+t,So=(e,t,n,r)=>(2.70158*(e/=r)*e*e-1.70158*e*e)*n+t,Co=(e,t,n,r)=>(1+2.70158*((e/=r)-1)**3+1.70158*(e-1)**2)*n+t,wo=(e,t,n,r)=>{let i=1.70158;return(e/=r/2)<1?e*e*(((i*=1.525)+1)*e-i)*n/2+t:((e-=2)*e*(((i*=1.525)+1)*e+i)+2)*n/2+t},To=(e,t,n,r)=>(e/=r)===0?t:e===1?n+t:-(2**((e*=10)-10))*Math.sin((e-10.75)*(2*Math.PI/3))*n+t,Eo=(e,t,n,r)=>(e/=r)===0?t:e===1?n+t:(2**(-10*e)*Math.sin((e*10-.75)*(2*Math.PI/3))+1)*n+t,Do=(e,t,n,r)=>(e/=r)===0?t:e===1?n+t:e<.5?-(2**(20*e-10)*Math.sin((20*e-11.125)*(2*Math.PI/4.5)))/2*n+t:(2**(-20*e+10)*Math.sin((20*e-11.125)*(2*Math.PI/4.5))/2+1)*n+t,Oo=(e,t,n,r)=>(e/=r)<1/2.75?7.5625*e*e*n+t:e<2/2.75?(7.5625*(e-=1.5/2.75)*e+.75)*n+t:e<2.5/2.75?(7.5625*(e-=2.25/2.75)*e+.9375)*n+t:(7.5625*(e-=2.625/2.75)*e+.984375)*n+t,ko=(e,t,n,r)=>n-jo.outBounce(r-e,0,n,r)+t,Ao=(e,t,n,r)=>e{cancelAnimationFrame(e.$timerId),e.hasEventListener(ge.STOP)&&e.dispatchEvent(new ge(ge.STOP)),e.entries=null,e.stopFlag=!0},No=e=>{let t=[];for(let[n,r]of Object.entries(e))t.push({name:n,value:typeof r==`number`?r:No(r)});return t},Po=(e,t,n,r,i)=>{for(let a=0;ae.currentTime?e.ease(e.currentTime,c,r[s]-c,e.duration):r[s]}},Fo=(e,t)=>e.stopFlag||!e.entries?-1:(e.currentTime=(t-e.startTime)/1e3,Po(e,e.target,e.from,e.to,e.entries),e.hasEventListener(ge.UPDATE)&&e.dispatchEvent(new ge(ge.UPDATE)),e.currentTime>=e.duration?(e.hasEventListener(ge.COMPLETE)&&e.dispatchEvent(new ge(ge.COMPLETE)),e.nextJob&&e.nextJob.start(),-1):requestAnimationFrame(t=>{Fo(e,t)})),Io=e=>{e.stopFlag||(e.entries=No(e.from),e.entries&&(e.startTime=performance.now(),e.$timerId=Fo(e,e.startTime)))},Lo=e=>{cancelAnimationFrame(e.$timerId),e.stopFlag=!1,e.delay?setTimeout(()=>{Io(e)},e.delay*1e3):Io(e)},Ro=class extends de{target;entries;startTime;stopFlag;$timerId;delay;duration;ease;from;to;currentTime;nextJob;constructor(e,t,n,r=0,i=1,a=null){super(),this.target=e,this.from=t,this.to=n,this.delay=r,this.duration=i,this.ease=a||jo.linear,this.currentTime=0,this.nextJob=null,this.entries=null,this.startTime=0,this.stopFlag=!1,this.$timerId=-1}chain(e){return this.nextJob=e,e}start(){Lo(this)}stop(){Mo(this)}},zo=class{static add(e,t,n,r=0,i=1,a=null){return new Ro(e,t,n,r,i,a)}},Bo=(e,t)=>{if(!e.scrollEnabled||e.autoSize!==`none`||e.yScrollShape.hasLocalVariable(`job`))return;let n=e.width;if(t=ca(t,0,n,0),e.scrollX!==t){if(e.textWidth>n){Z(e);let r=e.xScrollShape;r.width=n*n/e.textWidth;let i=e.parent;if(i){r.hasLocalVariable(`job`)&&r.getLocalVariable(`job`).stop(),r.alpha=.9,r.x=e.x+1+(n-1-r.width)/(n-1)*(t-1),r.y=e.y+e.height-r.height-.5,i.addChildAt(r,i.getChildIndex(e)+1);let a=zo.add(r,{alpha:.9},{alpha:0},.5,.2,jo.outQuad);a.addEventListener(w.COMPLETE,e=>{let t=e.target.target;t.deleteLocalVariable(`job`),t.parent&&t.parent.removeChild(t)}),a.start(),r.setLocalVariable(`job`,a)}e.$scrollX=t}e.willTrigger(w.SCROLL)&&e.dispatchEvent(new w(w.SCROLL,!0))}},Vo=(e,t)=>{if(!e.scrollEnabled||e.autoSize!==`none`||!e.multiline&&!e.wordWrap||e.xScrollShape.hasLocalVariable(`job`))return;let n=e.height;if(t=ca(t,0,n,0),e.scrollY!==t){if(e.textHeight>n){Z(e);let r=e.yScrollShape;r.height=n*n/e.textHeight;let i=e.parent;if(i){r.hasLocalVariable(`job`)&&r.getLocalVariable(`job`).stop(),r.alpha=.9,r.x=e.x+e.width-r.width-.5,r.y=e.y+.5+(n-1-r.height)/(n-1)*(t-1),i.addChildAt(r,i.getChildIndex(e)+1);let a=zo.add(r,{alpha:.9},{alpha:0},.5,.2,jo.outQuad);a.addEventListener(w.COMPLETE,e=>{let t=e.target.target;t.deleteLocalVariable(`job`),t.parent&&t.parent.removeChild(t)}),a.start(),r.setLocalVariable(`job`,a),e.$scrollY=t}}e.willTrigger(w.SCROLL)&&e.dispatchEvent(new w(w.SCROLL,!0))}},Ho=e=>{let t=``,n=X(e);for(let e=1;e{let n=``,r=X(e);for(let e=1;et)break;i.line===t&&i.mode===`text`&&(n+=i.text)}}return n},Wo=(e,t,n,r)=>{if(0>n||n>r)return;let i=e.text;e.text=(n?i.slice(0,n):``)+t+i.slice(r,i.length)},Go=async e=>{if(e.focusIndex===-1||e.selectIndex===-1)return;let t=``,n=Math.min(e.focusIndex,e.selectIndex),r=Math.max(e.focusIndex,e.selectIndex)+1,i=X(e);for(let e=n;e{let t=await navigator.clipboard.readText();t!==``&&e.focusIndex!==-1&&e.insertText(t)},qo=e=>{if(e.compositionStartIndex>-1)return;let t=0,n=0;if(e.selectIndex>-1)t=Math.min(e.focusIndex,e.selectIndex),n=Math.max(e.focusIndex,e.selectIndex)+1,e.focusIndex=t;else{if(2>e.focusIndex)return;e.focusIndex--}let r=X(e),i=r.textTable[e.focusIndex];i&&i.mode===`wrap`&&e.focusIndex--;let a=[],o=``;for(let i=1;ii))switch(s.mode){case`break`:a.push(new pa(...Object.values(s.textFormat))),o+=` -`;break;case`text`:a.push(new pa(...Object.values(s.textFormat))),o+=s.text;break;default:continue}}if(r.textTable.length===e.focusIndex&&(a.pop(),o=o.slice(0,-1)),e.selectIndex=-1,!o)e.text=``,e.focusIndex=1;else{let t=e.textWidth,n=e.textHeight;if(e.$textFormats=a,e.text=o,e.scrollX>0){let n=e.textWidth,r=e.width;switch(!0){case r>n:e.$scrollX=0;break;case t!==n:e.$scrollX-=(t-n)/(n/r)}}if(e.scrollY>0){let t=e.textHeight,r=e.height;switch(!0){case r>t:e.$scrollY=0;break;case n!==t:e.$scrollY-=(n-t)/(t/r)}}e.$textFormats=null}},Jo=(e,t)=>{if(e.focusIndex===-1||e.compositionStartIndex>-1)return;e.selectIndex>-1&&qo(e);let n=X(e);if(2>n.textTable.length){e.focusIndex=2,e.appendText(t);return}let r=[],i=``;for(let a=1;a{if(e.selectIndex===-1)return;let t=X(e);if(2>t.textTable.length)return;let n=t.textTable[e.selectIndex];if(!n)return;let r=n.mode===`text`?n.line:n.line-1,i=e.height,a=(e.textHeight-i)/i,o=-e.scrollY*a-2,s=0;for(let e=0;ei));++e)s++;o=-e.scrollY*a-2;let c=0;for(let e=0;e0));++e)c++;c>=n.line&&(e.xScrollShape.hasLocalVariable(`job`)&&e.xScrollShape.deleteLocalVariable(`job`),e.scrollY-=t.heightTable[n.line]/a),n.line>=s&&(e.xScrollShape.hasLocalVariable(`job`)&&e.xScrollShape.deleteLocalVariable(`job`),e.scrollY+=t.heightTable[n.line]/a);let l=e.width,u=(e.textWidth-l)/l,d=2,f=e.scrollX*u-2+l;for(let n=1;e.selectIndex>=n;++n){let i=t.textTable[n];if(!i||i.line>r)break;if(i.line===r&&(e.selectIndex!==n&&(d+=i.w),f-=i.w,!(f>0))){e.yScrollShape.hasLocalVariable(`job`)&&e.yScrollShape.deleteLocalVariable(`job`),e.scrollX+=i.w/u;break}}e.scrollX*u-2>d&&(e.yScrollShape.hasLocalVariable(`job`)&&e.yScrollShape.deleteLocalVariable(`job`),e.scrollX=e.width*((d-2)/e.textWidth))},Xo=(e,t,n,r=!1)=>{if(e.type!==`input`)return;let i=X(e);if(2>i.textTable.length){e.focusIndex=1,e.selectIndex=-1,ua()===void 0&&Za(e);return}let a=e.width,o=e.height,s=0;e.scrollX>0&&(s+=e.scrollX*(e.textWidth-a)/a);let c=0;e.scrollY>0&&(c+=e.scrollY*(e.textHeight-o)/o);let l=e.globalToLocal(new P(t,n)),u=l.x+s,d=l.y+c,f=2,p=2,m=p+i.heightTable[0];for(let t=1;tf&&d>p&&m>d&&a>u){let n=t;r?e.selectIndex!==n&&(e.selectIndex=n,e.focusVisible&&(e.focusVisible=!1,qa()),Yo(e),Z(e)):(e.focusIndex!==n||e.selectIndex>-1)&&(e.focusIndex=n,e.selectIndex=-1,Z(e));return}f=2,p+=i.heightTable[n.line-1],m=p+i.heightTable[n.line];break;case`text`:if(u>f&&d>p&&m>d&&f+n.w>u){let a=t;if(r)e.focusIndex>a?e.focusIndex===a+1?f+n.w/2u&&(a=-1):f+n.w/2>u&&--a,e.selectIndex!==a&&(e.selectIndex=a,e.selectIndex>-1&&(e.focusVisible=!1,qa()),Yo(e),Z(e));else{if(f+n.w/2-1)&&(e.focusIndex=a,e.selectIndex=-1,Z(e))}return}if(t===i.textTable.length-1&&u>f&&d>p&&m>d&&a>u){let t=i.textTable.length;r?e.selectIndex!==t&&(e.selectIndex=t,e.focusVisible&&(e.focusVisible=!1,qa()),Z(e)):(e.focusIndex!==t||e.selectIndex>-1)&&(e.focusIndex=t,e.selectIndex=-1,Z(e));return}f+=n.w}if(!r)e.focusIndex=i.textTable.length,e.selectIndex=-1,ua()===void 0?Za(e):Z(e);else{let t=0;for(let e=0;i.heightTable.length>e;++e)t+=i.heightTable[e];(d>t||2>d)&&(e.selectIndex=2>d?1:i.textTable.length,e.focusVisible&&(e.focusVisible=!1,qa()),Z(e))}}}},Zo=(e,t)=>{if(e.focusIndex===-1)return;let n=X(e);if(2>n.textTable.length)return;let r=n.textTable[e.focusIndex];if(!r)return;let i=r.mode===`text`?r.line:r.line-1;if(i===n.lineTable.length-1){t?e.selectIndex===-1?e.selectIndex=e.focusIndex:e.selectIndex===e.focusIndex&&(e.selectIndex=-1):e.selectIndex=-1,e.focusVisible=!1,e.focusIndex=n.textTable.length;let r=e.width,a=(e.textWidth-r)/r,o=0;for(let t=1;e.focusIndex>=t;++t){let e=n.textTable[t];if(!e||e.line>i)break;e.line===i&&(o+=e.w)}e.yScrollShape.hasLocalVariable(`job`)&&e.yScrollShape.deleteLocalVariable(`job`),e.scrollX=(o-r)/a,qa(),Za(e);return}let a=e.height,o=(e.textHeight-a)/a,s=-e.scrollY*o-2,c=0;for(let e=0;ea));++e)c++;let l=2;for(let t=1;ti)break;r.line===i&&r.mode===`text`&&(l+=r.w)}}let u=2,d=i+1;for(let r=1;rd){t?e.selectIndex===-1?e.selectIndex=e.focusIndex:e.selectIndex===e.focusIndex&&(e.selectIndex=-1):e.selectIndex=-1,i.line>=c&&(e.xScrollShape.hasLocalVariable(`job`)&&e.xScrollShape.deleteLocalVariable(`job`),e.scrollY+=n.heightTable[i.line]/o),e.focusVisible=!1,e.focusIndex=i.mode===`text`?r-1:r,e.scrollX&&ul)){if(t?e.selectIndex===-1?e.selectIndex=e.focusIndex:e.selectIndex===r-1&&(e.selectIndex=-1):e.selectIndex=-1,i.line>=c&&(e.xScrollShape.hasLocalVariable(`job`)&&e.xScrollShape.deleteLocalVariable(`job`),e.scrollY+=n.heightTable[i.line]/o),e.scrollX){let t=e.width,n=(e.textWidth-t)/t;e.scrollX*n-2>u&&(e.yScrollShape.hasLocalVariable(`job`)&&e.yScrollShape.deleteLocalVariable(`job`),e.scrollX=e.width*((u-2)/e.textWidth))}e.focusVisible=!1,e.focusIndex=r,qa(),Za(e);return}}}t?e.selectIndex===-1&&(e.selectIndex=e.focusIndex):e.selectIndex=-1,e.focusVisible=!1,e.focusIndex=n.textTable.length,qa(),Za(e)},Qo=(e,t)=>{if(e.focusIndex===-1)return;let n=X(e);if(2>n.textTable.length)return;let r=n.textTable.length===e.focusIndex?e.focusIndex-1:e.focusIndex,i=n.textTable[r];if(!i||!i.line){t?e.selectIndex===-1?e.selectIndex=e.focusIndex:e.selectIndex===e.focusIndex&&(e.selectIndex=-1):e.selectIndex=-1,e.yScrollShape.hasLocalVariable(`job`)&&e.yScrollShape.deleteLocalVariable(`job`),e.focusVisible=!1,e.focusIndex=1,e.scrollX=0,qa(),Za(e);return}let a=i.mode===`text`?i.line:i.line-1,o=e.height,s=(e.textHeight-o)/o,c=0,l=-e.scrollY*s-2;for(let e=0;e0));++e)c++;let u=2;for(let t=1;ta)break;r.line===a&&r.mode===`text`&&(u+=r.w)}}let d=2,f=a-1;for(let r=1;rf){t?e.selectIndex===-1?e.selectIndex=e.focusIndex:e.selectIndex===e.focusIndex&&(e.selectIndex=-1):e.selectIndex=-1,c>=i.line&&(e.xScrollShape.hasLocalVariable(`job`)&&e.xScrollShape.deleteLocalVariable(`job`),e.scrollY-=n.heightTable[i.line]/s),e.scrollX&&=(e.yScrollShape.hasLocalVariable(`job`)&&e.yScrollShape.deleteLocalVariable(`job`),e.width*((d-2)/e.textWidth)),e.focusVisible=!1,e.focusIndex=i.mode===`text`?r-1:r,qa(),Za(e);return}if(i.line===f&&i.mode===`text`&&(d+=i.w,d>u)){t?e.selectIndex===-1?e.selectIndex=e.focusIndex-1:e.selectIndex===r+1&&(e.selectIndex=-1):e.selectIndex=-1,c>i.line&&(e.xScrollShape.hasLocalVariable(`job`)&&e.xScrollShape.deleteLocalVariable(`job`),e.scrollY-=n.heightTable[i.line]/s),e.focusVisible=!1,e.focusIndex=r,qa(),Za(e);return}}}},$o=(e,t)=>{if(!e.focusIndex)return;let n=X(e);if(n.textTable.length&&e.focusIndex<2){e.focusIndex=1;return}e.focusIndex--,t?e.selectIndex===-1?e.selectIndex=e.focusIndex:e.selectIndex===e.focusIndex&&(e.selectIndex=-1):e.selectIndex=-1;let r=n.textTable[e.focusIndex];if(r){let t=r.mode===`text`?r.line:r.line-1,i=e.height,a=(e.textHeight-i)/i,o=-e.scrollY*a-2,s=0;for(let e=0;e0));++e)s++;s>t&&(e.xScrollShape.hasLocalVariable(`job`)&&e.xScrollShape.deleteLocalVariable(`job`),e.scrollY-=n.heightTable[r.line]/a);let c=n.textTable[e.focusIndex+1];if(c){let r=c.mode===`text`?c.line:c.line-1,i=2;for(let r=1;e.focusIndex>r;++r){let e=n.textTable[r];if(!e||e.line>t)break;e.line===t&&(i+=e.w)}let a=e.width,o=(e.textWidth-a)/a,s=e.scrollX*o-2;if(i>a&&c&&ti){e.yScrollShape.hasLocalVariable(`job`)&&e.yScrollShape.deleteLocalVariable(`job`),e.scrollX=e.width*((i-2)/e.textWidth);return}}}e.focusVisible=!1,qa(),Za(e)},es=(e,t)=>{let n=X(e);if(n.textTable.length===e.focusIndex)return;t?e.selectIndex===-1?e.selectIndex=e.focusIndex:e.selectIndex===e.focusIndex&&(e.selectIndex=-1):e.selectIndex=-1,e.focusVisible=!1,e.focusIndex++,qa(),Za(e);let r=n.textTable[e.focusIndex];if(r){let t=r.mode===`text`?r.line:r.line-1,i=e.height,a=(e.textHeight-i)/i,o=-e.scrollY*a-2,s=0;for(let e=0;ei));++e)s++;t>=s&&(e.xScrollShape.hasLocalVariable(`job`)&&e.xScrollShape.deleteLocalVariable(`job`),e.scrollY+=n.heightTable[t]/a);let c=n.textTable[e.focusIndex-1],l=c.mode===`text`?c.line:c.line-1;if(c&&t>l){e.yScrollShape.hasLocalVariable(`job`)&&e.yScrollShape.deleteLocalVariable(`job`),e.scrollX=0;return}let u=e.width,d=(e.textWidth-u)/u,f=e.scrollX*d-2+u;for(let r=1;e.focusIndex>=r;++r){let i=n.textTable[r];if(!i||i.line>t)break;if(i.line===t&&(f-=i.w,!(f>0))){e.yScrollShape.hasLocalVariable(`job`)&&e.yScrollShape.deleteLocalVariable(`job`),e.scrollX+=i.w/d;break}}}},ts=(e,t)=>{if(e.focusIndex!==-1)switch(t.key){case`Backspace`:case`Delete`:e.deleteText();break;case`Enter`:e.insertText(` -`);break;case`ArrowLeft`:$o(e,t.shiftKey);break;case`ArrowRight`:es(e,t.shiftKey);break;case`ArrowUp`:Qo(e,t.shiftKey);break;case`ArrowDown`:Zo(e,t.shiftKey);break;case`a`:(t.metaKey||t.ctrlKey)&&(t.preventDefault(),e.selectAll());break;case`c`:(t.metaKey||t.ctrlKey)&&(t.preventDefault(),e.copy());break;case`v`:(t.metaKey||t.ctrlKey)&&(t.preventDefault(),e.paste())}},ns=e=>{let t=X(e);2>t.textTable.length||(e.selectIndex=1,e.focusIndex=t.textTable.length,Z(e))},rs=(e,t)=>{let n=e.defaultTextFormat;switch(n.font=t.font,n.size=t.size,n.align=t.align,n.color=t.color,n.leading=t.leading,n.letterSpacing=t.letterSpacing,n.leftMargin=t.leftMargin,n.rightMargin=t.rightMargin,t.fontType){case 1:n.bold=!0;break;case 2:n.italic=!0;break;case 3:n.bold=!0,n.italic=!0}switch(e.defaultTextFormat=n,e.type=t.inputType,e.multiline=t.multiline,e.wordWrap=t.wordWrap,e.border=t.border,e.scrollEnabled=t.scroll,e.thickness=t.thickness,e.thicknessColor=t.thicknessColor,t.autoSize){case 1:e.autoSize=t.align;break;case 2:e.autoFontSize=!0}e.xMin=e.bounds.xMin=t.bounds.xMin,e.xMax=e.bounds.xMax=t.bounds.xMax,e.yMin=e.bounds.yMin=t.bounds.yMin,e.yMax=e.bounds.yMax=t.bounds.yMax+4,e.text=t.text},is=class extends Pi{isText;$textData;_$isHTML;xMin;yMin;xMax;yMax;bounds;scrollEnabled;xScrollShape;yScrollShape;focusVisible;focusIndex;selectIndex;maxChars;restrict;type;compositionStartIndex;compositionEndIndex;$textFormats;$scrollX;$scrollY;cacheKey;cacheParams;_$background;_$backgroundColor;_$border;_$borderColor;_$htmlText;_$multiline;_$text;_$wordWrap;_$defaultTextFormat;_$rawHtmlText;_$autoSize;_$autoFontSize;_$focus;_$thickness;_$thicknessColor;_$stopIndex;constructor(){super(),this.isText=!0,this.$textData=null,this._$background=!1,this._$backgroundColor=16777215,this._$border=!1,this._$borderColor=0,this._$htmlText=``,this._$multiline=!1,this._$text=``,this._$wordWrap=!1,this.$scrollX=0,this.$scrollY=0,this.$textFormats=null,this.maxChars=0,this._$stopIndex=-1,this.compositionStartIndex=-1,this.compositionEndIndex=-1;let e=new pa;ma(e),this._$defaultTextFormat=e,this._$rawHtmlText=``,this.xMin=0,this.yMin=0,this.xMax=100,this.yMax=100,this.bounds={xMin:0,xMax:this.xMax,yMin:0,yMax:this.yMax},this.restrict=``,this._$isHTML=!1,this._$autoSize=`none`,this._$autoFontSize=!1,this.focusVisible=!1,this.focusIndex=-1,this.selectIndex=-1,this.scrollEnabled=!0,this.xScrollShape=new Ki,this.xScrollShape.graphics.beginFill(`#000`,.3).drawRoundRect(0,0,3,3,3),this.xScrollShape.scale9Grid=new jt(1.5,1.5,.1,.1),this.yScrollShape=new Ki,this.yScrollShape.graphics.beginFill(`#000`,.3).drawRoundRect(0,0,3,3,3),this.yScrollShape.scale9Grid=new jt(1.5,1.5,.1,.1),this.type=`static`,this._$focus=!1,this._$thickness=0,this._$thicknessColor=0,this.cacheKey=0,this.cacheParams=[0,0,0]}static get namespace(){return`next2d.display.TextField`}get namespace(){return`next2d.display.TextField`}get autoFontSize(){return this._$autoFontSize}set autoFontSize(e){e!==this._$autoFontSize&&(this._$autoFontSize=!!e,Ga(this))}get autoSize(){return this._$autoSize}set autoSize(e){e!==this._$autoSize&&(this._$autoSize=e,Ga(this))}get background(){return this._$background}set background(e){e!==this._$background&&(this._$background=!!e,Z(this))}get backgroundColor(){return this._$backgroundColor}set backgroundColor(e){e=ca(oa(e),0,16777215,16777215),e!==this._$backgroundColor&&(this._$backgroundColor=e,Z(this))}get border(){return this._$border}set border(e){e!==this._$border&&(this._$border=!!e,Z(this))}get borderColor(){return this._$borderColor}set borderColor(e){e=ca(oa(e),0,16777215,0),e!==this._$borderColor&&(this._$borderColor=e,Z(this))}get stopIndex(){return this._$stopIndex}set stopIndex(e){e|=0,this._$stopIndex!==e&&(this._$stopIndex=e,Ka(this,e))}get defaultTextFormat(){return this._$defaultTextFormat.clone()}set defaultTextFormat(e){this._$rawHtmlText=``,this._$isHTML?this._$text=``:this._$htmlText=``,this._$defaultTextFormat=e,Ga(this)}get focus(){return this._$focus}set focus(e){this._$focus!==e&&this.type===`input`&&(this._$focus=!!e,Qa(this,this._$focus?fe.FOCUS_IN:fe.FOCUS_OUT))}get htmlText(){if(this._$htmlText)return this._$htmlText;let e=ha(this.defaultTextFormat);return this._$htmlText=`${this._$text.replace(/\n/g,`
`)}
`,this._$htmlText}set htmlText(e){this._$htmlText!==e&&(this._$htmlText=`${e}`,this._$rawHtmlText=``,this._$text=``,this._$isHTML=!0,Ga(this),this.hasEventListener(w.CHANGE)&&this.dispatchEvent(new w(w.CHANGE)))}get length(){return this.text.length}get multiline(){return this._$multiline}set multiline(e){e!==this._$multiline&&(this._$multiline=!!e,Ga(this))}get numLines(){return X(this).lineTable.length}get scrollX(){return this.$scrollX}set scrollX(e){Bo(this,e)}get scrollY(){return this.$scrollY}set scrollY(e){Vo(this,e)}get text(){return this._$isHTML?(this._$rawHtmlText||=Ho(this),this._$rawHtmlText):this._$text}set text(e){e=`${e}`,e===``&&(this.scrollX&&=0,this.scrollY&&=0),e!==this._$text&&(this._$htmlText=``,this._$rawHtmlText=``,this._$isHTML=!1,this._$text=e,Ga(this),this.hasEventListener(w.CHANGE)&&this.dispatchEvent(new w(w.CHANGE)))}get textHeight(){return X(this).textHeight}get textWidth(){return X(this).textWidth}get thickness(){return this._$thickness}set thickness(e){e|=0,e!==this._$thickness&&(this._$thickness=e,Z(this))}get thicknessColor(){return this._$thicknessColor}set thicknessColor(e){e=ca(oa(e),0,16777215,0),e!==this._$thicknessColor&&(this._$thicknessColor=e,Z(this))}get wordWrap(){return this._$wordWrap}set wordWrap(e){this._$wordWrap!==e&&(this._$wordWrap=!!e,Ga(this))}get width(){return super.width}set width(e){if(e=+e,!isNaN(e)&&0>e)return;let t=e+this.bounds.xMin;t!==this.bounds.xMax&&(this.bounds.xMax=t,Ga(this))}get height(){return super.height}set height(e){if(e=+e,!isNaN(e)&&0>e)return;let t=e+this.bounds.yMin;t!==this.bounds.yMax&&(this.bounds.yMax=t,Ga(this))}appendText(e){let t=this.text;this.text=t+`${e}`}insertText(e){Jo(this,e)}deleteText(){qo(this)}getLineText(e){return this._$text||this._$htmlText?Uo(this,e|0):``}replaceText(e,t,n){Wo(this,e,t|0,n|0)}selectAll(){ns(this)}copy(){Go(this)}paste(){Ko(this)}setFocusIndex(e,t,n=!1){Xo(this,e,t,n)}keyDown(e){ts(this,e)}$sync(e,t=null){t&&super.$syncLoaderInfo(t),rs(this,e)}},as=e=>{e.compositionStartIndex=e.focusIndex},os=()=>{let e=Yi();e&&as(e)},ss=(e,t)=>{if(e.compositionEndIndex>-1){let t=e.compositionStartIndex;e.focusIndex=e.compositionStartIndex,e.selectIndex=e.compositionEndIndex-1,e.compositionStartIndex=-1,qo(e),e.compositionStartIndex=t,e.selectIndex=-1}let n=X(e),r=[],i=t.length,a=``;if(2>n.textTable.length)a=t,e.focusIndex=1,e.compositionStartIndex=1;else{for(let o=1;oe.compositionStartIndex&&o++}}e.compositionEndIndex=e.focusIndex=o},cs=e=>{let t=Yi();t&&ss(t,e.data)},ls=e=>{if(e.compositionEndIndex>-1){let t=X(e);for(let n=e.compositionStartIndex;n{let e=Yi();e&&ls(e)},ds=e=>{if(!e.data)return;let t=Yi();t&&(Jo(t,e.data),t.hasEventListener(w.INPUT)&&t.dispatchEvent(new w(w.INPUT)))};(e=>{e.addEventListener(`compositionstart`,os),e.addEventListener(`compositionupdate`,cs),e.addEventListener(`compositionend`,us),e.addEventListener(`input`,ds)})(K);var fs=[],ps=()=>fs,ms=e=>{fs.push(e)},hs=null,gs=()=>!!hs,_s=()=>{hs||=new AudioContext,hs.resume()},vs=()=>(hs||=new AudioContext,hs),ys=e=>{let t=null;switch(e.method.toUpperCase()){case`GET`:if(e.data){let t=e.url.split(`?`);t[1]=t.length===1?e.data.toString():`${t[1]}&${e.data.toString()}`,e.url=t.join(`?`)}break;case`PUT`:case`POST`:e.data&&(t=e.data.toString())}let n=new XMLHttpRequest;if(n.open(e.method,e.url,!0),n.responseType=e.format,n.withCredentials=e.withCredentials,e.event){let t=Object.keys(e.event);for(let r=0;r{let i=+e;return isNaN(i)&&r!==null?r:Math.min(Math.max(t,isNaN(i)?0:i),n)},xs=1,Ss=()=>xs,Cs=e=>{xs=bs(e,0,1,1)},ws=[],Ts=()=>ws,Es=[],Ds=()=>Es,Os=e=>{Cs(e);let t=Ts();for(let n=0;n{let e=Ts();for(let t=0;t{e.canLoop?e.play():(e.stop(),e.willTrigger(w.COMPLETE)&&e.dispatchEvent(new w(w.COMPLETE)))},Ms=(e,t)=>{e.willTrigger(w.OPEN)&&e.dispatchEvent(new w(w.OPEN)),e.willTrigger(j.PROGRESS)&&e.dispatchEvent(new j(j.PROGRESS,!1,t.loaded,t.total))},Ns=(e,t)=>{e.willTrigger(j.PROGRESS)&&e.dispatchEvent(new j(j.PROGRESS,!1,t.loaded,t.total))},Ps=async e=>{if(e.byteLength)try{return await vs().decodeAudioData(e)}catch{let t=new Uint8Array(e),n=0;for(;n>t.byteLength&&(n=t.indexOf(255,n),n!==-1&&(t[n+1]&224)!=224);)++n;return await Ps(t.subarray(n).buffer)}},Fs=async(e,t)=>{let n=t.target;if(n)if(e.willTrigger(j.PROGRESS)&&e.dispatchEvent(new j(j.PROGRESS,!1,t.loaded,t.total)),199n.status){let t=await Ps(n.response);t&&(e.audioBuffer=t,e.willTrigger(w.COMPLETE)&&e.dispatchEvent(new w(w.COMPLETE)))}else e.willTrigger(me.IO_ERROR)&&e.dispatchEvent(new me(me.IO_ERROR,!1,n.statusText))},Is=async(e,t)=>{await new Promise(n=>{ys({format:`arraybuffer`,url:t.url,method:t.method,data:t.data,headers:t.headers,withCredentials:t.withCredentials,event:{loadstart:t=>{Ms(e,t)},progress:t=>{Ns(e,t)},loadend:async t=>{await Fs(e,t),n()}}})})},Ls=async(e,t)=>{if(!t.audioBuffer){let e=await Ps(new Uint8Array(t.buffer).buffer);if(!e)return;t.audioBuffer=e}e.audioBuffer=t.audioBuffer},Rs=class e extends de{_$source;_$gainNode;_$stopFlag;_$currentCount;_$volume;audioBuffer;loopCount;constructor(){super(),this.loopCount=0,this.audioBuffer=null,this._$volume=1,this._$currentCount=0,this._$stopFlag=!0,this._$source=null,this._$gainNode=null}get volume(){return this._$volume}set volume(e){this._$volume=bs(Math.min(As.volume,e),0,1,1),this._$gainNode&&(this._$gainNode.gain.value=this._$volume)}get canLoop(){return!this._$stopFlag&&this.loopCount>=this._$currentCount}clone(){let t=new e;return t.volume=this._$volume,t.loopCount=this.loopCount,t.audioBuffer=this.audioBuffer,t}async load(e){await Is(this,e)}play(e=0){if(!this._$stopFlag||!this.audioBuffer)return;this.stop();let t=vs();this._$gainNode=t.createGain(),this._$gainNode.connect(t.destination),this._$gainNode.gain.value=Math.min(As.volume,this._$volume),this._$source=t.createBufferSource(),this._$source.addEventListener(`ended`,()=>{js(this)}),this._$source.buffer=this.audioBuffer,this._$source.connect(this._$gainNode),this._$source.start(e),this._$stopFlag=!1,this._$currentCount++,Ts().push(this)}stop(){if(this._$stopFlag)return;this._$stopFlag=!0,this._$currentCount=0,this._$source&&=(this._$source.disconnect(),null),this._$gainNode&&=(this._$gainNode.gain.value=0,this._$gainNode.disconnect(),null);let e=Ts(),t=e.indexOf(this);t>-1&&e.splice(t,1)}async $build(e){await Ls(this,e)}},zs=class{volume;loopCount;constructor(e=1,t=0){this.volume=e,this.loopCount=t}},Bs=()=>{let e=document.createElement(`video`);return e.autoplay=!1,e.crossOrigin=`anonymous`,e.setAttribute(`playsinline`,``),e},Vs=e=>{e.changed=!0;let t=e.parent;t&&!t.changed&&Vs(t)},Hs=async e=>{e.autoPlay&&(gs()||(e.muted=!0,ms(e)),await e.play()),e.loaded=!0,Vs(e),e.willTrigger(w.COMPLETE)&&e.dispatchEvent(new w(w.COMPLETE))},Us=(e,t)=>{t.currentTime=0,t.duration=e.duration,t.videoWidth=e.videoWidth,t.videoHeight=e.videoHeight;let n=new OffscreenCanvas(t.videoWidth,t.videoHeight);t.$context=n.getContext(`2d`),t.$offscreenCanvas=n},Ws=(e,t)=>{e.willTrigger(j.PROGRESS)&&e.dispatchEvent(new j(j.PROGRESS,!1,t.loaded,t.total))},Gs=e=>{if(e.willTrigger(he.ENDED)&&e.dispatchEvent(new he(he.ENDED)),e.loop){e.currentTime=0;return}e.ended=!0,e.changed=!1,e.pause()},Ks=(e,t)=>{e.addEventListener(`loadedmetadata`,()=>{Us(e,t)},{once:!0}),e.addEventListener(`progress`,e=>{Ws(t,e)}),e.addEventListener(`canplaythrough`,async()=>{await Hs(t),e.volume=t.volume},{once:!0}),e.addEventListener(`ended`,()=>{Gs(t)})},qs=e=>{if(e.paused||!e.loaded)return 0;e.willTrigger(he.PLAY)&&e.dispatchEvent(new he(he.PLAY)),Vs(e);let t=Ds();return t.indexOf(e)===-1&&t.push(e),requestAnimationFrame(()=>{qs(e)})},Js=(e,t)=>{t.videoData||(t.videoData=new Uint8Array(t.buffer),t.buffer=null),e.loop=t.loop,e.autoPlay=t.autoPlay,e.videoWidth=t.bounds.xMax,e.videoHeight=t.bounds.yMax,e.volume=t.volume,e.src=URL.createObjectURL(new Blob([t.videoData.buffer],{type:`video/mp4`}))},Ys=class extends hi{duration;smoothing;loop;autoPlay;currentTime;videoWidth;videoHeight;loaded;ended;isVideo;$videoElement;$offscreenCanvas;$context;paused;_$timerId;_$volume;_$src;constructor(e=0,t=0){super(),this.videoWidth=e,this.videoHeight=t,this.isVideo=!0,this.duration=0,this.smoothing=!0,this.loop=!1,this.loaded=!1,this.ended=!1,this.paused=!0,this.autoPlay=!0,this.currentTime=0,this._$src=``,this._$timerId=-1,this._$volume=1,this.$videoElement=null,this.$offscreenCanvas=null,this.$context=null}static get namespace(){return`next2d.media.Video`}get namespace(){return`next2d.media.Video`}get src(){return this._$src}set src(e){this._$src!==e&&(this.loaded=!1,this.currentTime=0,this.$videoElement=null,this.$offscreenCanvas=null,this.$context=null,this.$videoElement=Bs(),Ks(this.$videoElement,this),this._$src=this.$videoElement.src=e,this.$videoElement.load())}get muted(){return this.$videoElement?this.$videoElement.muted:!1}set muted(e){this.$videoElement&&(this.$videoElement.muted=e)}get volume(){return this._$volume}set volume(e){this._$volume=bs(Math.min(As.volume,e),0,1,1),this.$videoElement&&(this.$videoElement.volume=this._$volume)}pause(){if(!this.$videoElement||this.paused)return;this.paused=!0,this.$videoElement.pause(),cancelAnimationFrame(this._$timerId),this.willTrigger(he.PAUSE)&&this.dispatchEvent(new he(he.PAUSE));let e=Ds(),t=e.indexOf(this);t>-1&&e.splice(t,1)}async play(){!this.$videoElement||!this.paused||(this.paused=!1,this.ended=!1,this.$videoElement.volume=this._$volume,await this.$videoElement.play(),this._$timerId=qs(this))}seek(e){this.$videoElement&&(this.currentTime=this.$videoElement.currentTime=Math.min(this.duration,e),this.willTrigger(he.SEEK)&&this.dispatchEvent(new he(he.SEEK)))}$sync(e,t=null){t&&super.$syncLoaderInfo(t),Js(this,e)}},Xs=(e,t,n,r,i=-1)=>{let a=r.loaderInfo;if(!a)throw Error(`the loaderInfo or data is null.`);e.parent=r,tn.set(e,r.root),en.set(e,a),e.dictionaryId=t,e.characterId=n.characterId,e.clipDepth=n.clipDepth,e.startFrame=n.startFrame,e.endFrame=n.endFrame,e.name=n.name||``,e.placeId=i},Zs=(e,t,n,r,i=-1)=>{switch(n.extends){case gc.namespace:{let a=new gc;return Xs(a,e,t,r,i),a.$sync(n),a}case Ki.namespace:{let a=new Ki;return Xs(a,e,t,r,i),a.$sync(n),a}case is.namespace:{let a=new is;return Xs(a,e,t,r,i),a.$sync(n),a}case Ys.namespace:{let a=new Ys;return Xs(a,e,t,r,i),a.$sync(n),a}default:throw Error(`Character extends not found: ${n.extends}`)}},Qs=new Map,$s=(e,t)=>{let n=e.loaderInfo;if(!n||!n.data)return t;let r=n.data.characters[e.characterId];if(!r)return t;let i=e.currentFrame,a=r.controller[i];if(!a)return t;let o=[],s=r.dictionary;if(!t.length){for(let r=0;ri){Qs.set(n.dictionaryId,n);continue}n.uniqueKey&&M.has(n.uniqueKey)&&M.removeTimer(n.uniqueKey);let o=`${n.instanceId}`;M.has(o)?M.removeTimer(o):M.$removeIds.push(n.instanceId),n.willTrigger(w.REMOVED)&&n.dispatchEvent(new w(w.REMOVED,!0)),n.willTrigger(w.REMOVED_FROM_STAGE)&&n.dispatchEvent(new w(w.REMOVED_FROM_STAGE,!0)),n.isVideo&&n.pause(),n.isContainerEnabled&&wi(n)}t.length=0;for(let r=0;r{e.$labels||=new Map,e.$labels.set(t.frame,t)},tc=e=>{if(!e.$labels)return null;let t=e.currentFrame;return e.$labels.has(t)&&e.$labels.get(t)||null},nc=e=>!e.$labels||!e.$labels.size?null:Array.from(e.$labels.values()),rc=(e,t)=>{if(!e.$labels||!e.$labels.size)return 0;for(let[n,r]of e.$labels)if(r.name===t)return n;return 0},ic=(e,t=null)=>{if(!t||!t.size)return;let n=e.currentFrame;if(!t.has(n))return;let r=t.get(n);r.willTrigger(w.FRAME_LABEL)&&r.dispatchEvent(new w(w.FRAME_LABEL))},ac=(e,t=null)=>{if(!t||!t.size)return;let n=e.currentFrame;t.has(n)&&ln.push(e)},oc=e=>{e.$canAction&&(e.$canAction=!1,ic(e,e.$labels),ac(e,e.$actions))},sc=(e,t)=>{if(e.totalFrames===1)return;let n=+t;if(isNaN(n)&&(n=rc(e,`${t}`)),1>n&&(n=1),e.currentFrame!==n){if(n>e.totalFrames){if(e.currentFrame===e.totalFrames)return;e.$wait=!0,e.$canSound=!0,e.$canAction=!0,e.$hasTimelineHeadMoved=!0,e.currentFrame=e.totalFrames,oc(e),I(e);return}e.currentFrame=n,e.$wait=!0,e.$canSound=!0,e.$canAction=!0,e.$hasTimelineHeadMoved=!0,I(e),oc(e)}},cc=(e,t)=>{e.play(),sc(e,t)},lc=(e,t)=>{e.stop(),sc(e,t),e.$wait=!1},uc=e=>{e.totalFrames<=e.currentFrame||(e.stop(),sc(e,e.currentFrame+1))},dc=e=>{2>e.currentFrame||(e.stop(),sc(e,e.currentFrame-1))},fc=(e,t)=>{for(let n=0;n{for(let n=0;n{let r=e.loaderInfo;if(!r)return;let i=r.data;if(!i)return;let a=i.characters;for(let e=0;e{t.actions&&(e.$actions||=new Map,fc(e.$actions,t.actions)),t.sounds&&(e.$sounds||=new Map,mc(e,e.$sounds,t.sounds)),t.labels&&(e.$labels||=new Map,pc(e.$labels,t.labels)),e.totalFrames=t.totalFrame||1},gc=class extends Bi{$labels;$actions;$sounds;$canAction;$wait;totalFrames;currentFrame;_$stopFlag;$canSound;$hasTimelineHeadMoved;isTimelineEnabled;constructor(){super(),this.currentFrame=1,this.totalFrames=1,this.isTimelineEnabled=!0,this.$actions=null,this.$labels=null,this.$sounds=null,this.$canAction=!0,this.$wait=!1,this.$canSound=!0,this.$hasTimelineHeadMoved=!0,this._$stopFlag=!1}static get namespace(){return`next2d.display.MovieClip`}get namespace(){return`next2d.display.MovieClip`}get children(){return!this.$hasTimelineHeadMoved||this.characterId===-1?this._$children:(this.$hasTimelineHeadMoved=!1,$s(this,this._$children))}get currentFrameLabel(){return tc(this)}get currentLabels(){return nc(this)}get isPlaying(){return!this._$stopFlag}gotoAndPlay(e){cc(this,e)}gotoAndStop(e){lc(this,e)}nextFrame(){uc(this)}play(){this._$stopFlag=!1,I(this)}prevFrame(){dc(this)}stop(){this._$stopFlag=!0}addFrameLabel(e){ec(this,e)}$sync(e,t=null){t&&super.$syncLoaderInfo(t),hc(this,e)}},_c=async(e,t)=>{let n=new Map;if(t.symbols.length)for(let e=0;e{(self.URL||self.webkitURL).revokeObjectURL(t)}),n}catch{return new Worker(`data:text/javascript;charset=utf-8,`+encodeURIComponent(vc),{name:e?.name})}}var xc=new bc,Sc=async(e,t)=>{t.type===`zlib`?await new Promise((n,r)=>{xc.onmessage=t=>{if(t.data&&t.data.error){r(Error(t.data.error));return}_c(e,t.data),n()},xc.onerror=e=>{r(Error(e.message))};let i=new Uint8Array(t.buffer);xc.postMessage(i,[i.buffer])}):_c(e,t)},Cc=(e,t)=>{e.willTrigger(w.OPEN)&&e.dispatchEvent(new w(w.OPEN)),e.willTrigger(j.PROGRESS)&&e.dispatchEvent(new j(j.PROGRESS,!1,t.loaded,t.total))},wc=(e,t)=>{e.willTrigger(j.PROGRESS)&&e.dispatchEvent(new j(j.PROGRESS,!1,t.loaded,t.total))},Tc=async(e,t)=>{let n=t.target;if(!n)return;let r=e.contentLoaderInfo;if(r.willTrigger(j.PROGRESS)&&r.dispatchEvent(new j(j.PROGRESS,!1,t.loaded,t.total)),r.willTrigger(pe.HTTP_STATUS)){let e=$t(n.getAllResponseHeaders());r.dispatchEvent(new pe(pe.HTTP_STATUS,!1,n.status,n.responseURL,e))}199n.status?(await Sc(e,n.response),r.willTrigger(w.COMPLETE)&&r.dispatchEvent(new w(w.COMPLETE))):r.willTrigger(me.IO_ERROR)&&r.dispatchEvent(new me(me.IO_ERROR,!1,n.statusText))},Ec=async(e,t)=>{await new Promise(n=>{Qt({format:t.responseDataFormat,url:t.url,method:t.method,data:t.data,headers:t.headers,withCredentials:t.withCredentials,event:{loadstart:t=>{Cc(e.contentLoaderInfo,t)},progress:t=>{wc(e.contentLoaderInfo,t)},loadend:async t=>{await Tc(e,t),n()}}})})},Dc=class{contentLoaderInfo;root;constructor(){this.root=null,this.contentLoaderInfo=new Li}static get namespace(){return`next2d.display.Loader`}get namespace(){return`next2d.display.Loader`}get content(){return this.contentLoaderInfo.content}get loaderInfo(){return this.contentLoaderInfo}async load(e){if(e.responseDataFormat!==`json`)throw Error("The only format that can be loaded by this function is `json` format.");this.contentLoaderInfo.url=e.url,this.contentLoaderInfo.format=e.responseDataFormat,await Ec(this,e)}async loadJSON(e){await Sc(this,e)}},Oc=()=>{for(;ln.length;){let e=ln.pop(),t=e.$actions;if(!t)continue;let n=e.currentFrame;if(!t.has(n))continue;let r=t.get(n);if(r)for(let t=0;t{for(;un.length;){let e=un.pop(),t=e.$sounds;if(!t)continue;let n=e.currentFrame;if(!t.has(n))continue;let r=t.get(n),i=e.soundTransform;for(let e=0;e{if(!t||!t.size)return;let n=e.currentFrame;t.has(n)&&un.push(e)},jc=e=>{e.$canSound&&(e.$canSound=!1,Ac(e,e.$sounds))},Mc=e=>{let t=e.children;for(let e=t.length-1;e>-1;--e){let n=t[e];n&&n.isContainerEnabled&&(Mc(n),n.isTimelineEnabled&&(jc(n),oc(n)))}},Nc=e=>{Mc(e),kc(),Oc()},Pc=e=>{let t=new Uint32Array(e.buffer,e.byteOffset,e.length),n=t.length,r=2166136261,i=0,a=n&-8;for(;i>8&255,16777619),r=Math.imul(r^e>>16&255,16777619),r=Math.imul(r^e>>>24,16777619),e=t[i++],r=Math.imul(r^e&255,16777619),r=Math.imul(r^e>>8&255,16777619),r=Math.imul(r^e>>16&255,16777619),r=Math.imul(r^e>>>24,16777619),e=t[i++],r=Math.imul(r^e&255,16777619),r=Math.imul(r^e>>8&255,16777619),r=Math.imul(r^e>>16&255,16777619),r=Math.imul(r^e>>>24,16777619),e=t[i++],r=Math.imul(r^e&255,16777619),r=Math.imul(r^e>>8&255,16777619),r=Math.imul(r^e>>16&255,16777619),r=Math.imul(r^e>>>24,16777619),e=t[i++],r=Math.imul(r^e&255,16777619),r=Math.imul(r^e>>8&255,16777619),r=Math.imul(r^e>>16&255,16777619),r=Math.imul(r^e>>>24,16777619),e=t[i++],r=Math.imul(r^e&255,16777619),r=Math.imul(r^e>>8&255,16777619),r=Math.imul(r^e>>16&255,16777619),r=Math.imul(r^e>>>24,16777619),e=t[i++],r=Math.imul(r^e&255,16777619),r=Math.imul(r^e>>8&255,16777619),r=Math.imul(r^e>>16&255,16777619),r=Math.imul(r^e>>>24,16777619),e=t[i++],r=Math.imul(r^e&255,16777619),r=Math.imul(r^e>>8&255,16777619),r=Math.imul(r^e>>16&255,16777619),r=Math.imul(r^e>>>24,16777619)}for(;i>8&255,16777619),r=Math.imul(r^e>>16&255,16777619),r=Math.imul(r^e>>>24,16777619)}return r>>>8^r&255},Fc=e=>{switch(e){case`copy`:return 0;case`add`:return 1;case`alpha`:return 2;case`darken`:return 3;case`difference`:return 4;case`erase`:return 5;case`hardlight`:return 6;case`invert`:return 7;case`layer`:return 8;case`lighten`:return 9;case`multiply`:return 10;case`normal`:return 11;case`overlay`:return 12;case`screen`:return 13;case`subtract`:return 14;default:return 11}},Ic=(e,t,n,r,i)=>{if(!e.visible){L.push1(0);return}let a=e.graphics,o=a.isDrawable;if(!o&&!e.isBitmap){L.push1(0);return}let s=gn(e),c=s&&(s[0]!==1||s[1]!==1||s[2]!==1||s[3]!==1||s[4]!==0||s[5]!==0||s[6]!==0||s[7]!==0)?N.multiply(n,s):n;if(!cn(c[3]+c[7]/255,0,1,0)){c!==n&&N.release(c),L.push1(0);return}let l=H(e),u=l&&(l[0]!==1||l[1]!==0||l[2]!==0||l[3]!==1||l[4]!==0||l[5]!==0)?F.multiply(t,l):t,d=W(a.xMin,a.yMin,a.xMax,a.yMax,u),f=d[0],p=d[1],m=d[2],h=d[3];V(d);let g=Math.ceil(Math.abs(m-f)),_=Math.ceil(Math.abs(h-p));switch(!0){case g===0:case _===0:case g===-1/0:case _===-1/0:case g===1/0:case _===1/0:c!==n&&N.release(c),u!==t&&F.release(u),L.push1(0);return}if(0>f+g||0>p+_||f>r||p>i){c!==n&&N.release(c),u!==t&&F.release(u),L.push1(0);return}let v=l&&e.scale9Grid?Math.abs(l[1])<.001&&Math.abs(l[2])<1e-4:!1;if(!e.uniqueKey)if(e.characterId&&e.loaderInfo){let t=z(e.loaderInfo.id,e.characterId);e.uniqueKey=`${Pc(new Float32Array(t))}`,qt(t)}else e.uniqueKey=e.isBitmap?`${Pc(new Float32Array(e.$bitmapBuffer.buffer))}`:`${Pc(a.buffer)}`;let y=e.cacheAsBitmap,b,x,S=1,C=1;if(y){let e=y.rawData;S=Math.sqrt(e[0]*e[0]+e[1]*e[1]),C=Math.sqrt(e[2]*e[2]+e[3]*e[3]);let t=l?Math.sqrt(l[0]*l[0]+l[1]*l[1]):1,n=l?Math.sqrt(l[2]*l[2]+l[3]*l[3]):1;if(b=S*t*Q.rendererScale,x=C*n*Q.rendererScale,S!==1||C!==1){let e=R(u[0]*S,u[1]*S,u[2]*C,u[3]*C,u[4],u[5]),t=W(a.xMin,a.yMin,a.xMax,a.yMax,e);f=t[0],p=t[1],m=t[2],h=t[3],V(t),Ht(e)}}else b=Math.sqrt(u[0]*u[0]+u[1]*u[1]),x=Math.sqrt(u[2]*u[2]+u[3]*u[3]);let w=Math.round(b*100)/100,T=Math.round(x*100)/100;y&&e.cacheKey&&e.cacheParams[0]===w&&e.cacheParams[1]===T||(!e.isBitmap&&!e.cacheKey||e.cacheParams[0]!==w||e.cacheParams[1]!==T||e.cacheParams[2]!==c[7])&&(e.cacheKey=M.generateKeys(w,T,c[7]),e.cacheParams[0]=w,e.cacheParams[1]=T,e.cacheParams[2]=c[7]);let E=e.isBitmap?0:e.cacheKey;if(L.pushShapeBuffer(1,1,u[0]*S,u[1]*S,u[2]*C,u[3]*C,u[4],u[5],c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],f,p,m,h,a.xMin,a.yMin,a.xMax,a.yMax,+v,+o,e.isBitmap?1:y?2:0,+e.uniqueKey,E,b,x,e.instanceId),e.$cache&&!e.$cache.has(e.uniqueKey)&&(e.$cache=null),e.$cache?e.$cache.get(`${E}`):M.get(e.uniqueKey,`${E}`))e.$cache||(e.$cache=M.getById(e.uniqueKey),e.$cache.set(e.uniqueKey,!0)),L.push1(1);else{if(L.push1(0),v){let t=Q.rendererScale,n=R(t,0,0,t,0,0),r=F.multiply(n,l||Ft);Ht(n);let i=e.parent.concatenatedMatrix.rawData,o=R(i[0],i[1],i[2],i[3],i[4]*t-f,i[5]*t-p);F.release(i);let s=F.multiply(o,r),c=s[4]-(u[4]-f),d=s[5]-(u[5]-p);Ht(s);let m=W(a.xMin,a.yMin,a.xMax,a.yMax,r),h=m[0],g=m[1],_=m[2],v=m[3];V(m);let y=Math.ceil(Math.abs(_-h)),b=Math.ceil(Math.abs(v-g)),x=e.scale9Grid,S=Math.abs(a.xMax-a.xMin),C=Math.abs(a.yMax-a.yMin),w=x.width>0?(x.x-a.xMin)/S:1e-5,T=x.height>0?(x.y-a.yMin)/C:1e-5,E=x.width>0?(x.x+x.width-a.xMin)/S:.99999,ee=x.height>0?(x.y+x.height-a.yMin)/C:.99999,te=Math.ceil(S*t),ne=Math.ceil(C*t),re=te*w/y,ie=ne*T/b,D=(y-te*(1-E))/y,ae=(b-ne*(1-ee))/b;if(re>=D){let e=w/(w+(1-E));re=Math.max(e-1e-5,0),D=Math.min(e+1e-5,1)}if(ie>=ae){let e=T/(T+(1-ee));ie=Math.max(e-1e-5,0),ae=Math.min(e+1e-5,1)}L.push24(r[0],r[1],r[2],r[3],r[4],r[5],o[0],o[1],o[2],o[3],o[4]-c,o[5]-d,h,g,y,b,w,T,re,ie,E,ee,D,ae),Ht(o),Ht(r)}if(o||v){let e=a.buffer;L.push1(e.length),L.set(e)}else{let t=e.$bitmapBuffer;L.push1(t.length),L.setUint8(t)}M.set(e.uniqueKey,`${E}`,!0),e.$cache&&=null}L.push1(Fc(e.blendMode));let ee=e.filters;if(ee){let e=B(0,0,0,0),t=Xt(ee,e);t>0?(L.push7(1,+Yt(),e[0],e[1],e[2],e[3],t),Zt(ee)):L.push1(0),V(e)}else L.push1(0);c!==n&&N.release(c),u!==t&&F.release(u)},Lc=(e,t)=>{let n=H(e),r=n?F.multiply(t,n):t;r!==t&&F.release(r);let i=n&&e.scale9Grid?Math.abs(n[1])<.001&&Math.abs(n[2])<1e-4:!1,a=e.graphics.buffer;L.push9(1,r[0],r[1],r[2],r[3],r[4],r[5],+i,a.length),L.set(a)},Rc=new TextEncoder,zc=(e,t,n,r,i)=>{if(!e.visible){L.push1(0);return}let a=gn(e),o=a&&(a[0]!==1||a[1]!==1||a[2]!==1||a[3]!==1||a[4]!==0||a[5]!==0||a[6]!==0||a[7]!==0)?N.multiply(n,a):n;if(!cn(o[3]+o[7]/255,0,1,0)){o!==n&&N.release(o),L.push1(0);return}let s=H(e),c=s&&(s[0]!==1||s[1]!==0||s[2]!==0||s[3]!==1||s[4]!==0||s[5]!==0)?F.multiply(t,s):t,l=W(e.xMin,e.yMin,e.xMax,e.yMax,c),u=l[0],d=l[1],f=l[2],p=l[3];V(l);let m=Math.ceil(Math.abs(f-u)),h=Math.ceil(Math.abs(p-d));switch(!0){case m===0:case h===0:case m===-1/0:case h===-1/0:case m===1/0:case h===1/0:o!==n&&N.release(o),c!==t&&F.release(c),L.push1(0);return}if(0>u+m||0>d+h||u>r||d>i){o!==n&&N.release(o),c!==t&&F.release(c),L.push1(0);return}if(!e.uniqueKey)if(e.characterId&&e.loaderInfo){let t=z(e.loaderInfo.id,e.characterId);e.uniqueKey=`${Pc(new Float32Array(t))}`,qt(t)}else e.uniqueKey=`${e.instanceId}`;let g=e.cacheAsBitmap,_,v,y=1,b=1;if(g){let t=g.rawData;y=Math.sqrt(t[0]*t[0]+t[1]*t[1]),b=Math.sqrt(t[2]*t[2]+t[3]*t[3]);let n=s?Math.sqrt(s[0]*s[0]+s[1]*s[1]):1,r=s?Math.sqrt(s[2]*s[2]+s[3]*s[3]):1;if(_=y*n*Q.rendererScale,v=b*r*Q.rendererScale,y!==1||b!==1){let t=R(c[0]*y,c[1]*y,c[2]*b,c[3]*b,c[4],c[5]),n=W(e.xMin,e.yMin,e.xMax,e.yMax,t);u=n[0],d=n[1],f=n[2],p=n[3],V(n),Ht(t)}}else _=Math.sqrt(c[0]*c[0]+c[1]*c[1]),v=Math.sqrt(c[2]*c[2]+c[3]*c[3]);let x=Math.round(_*100)/100,S=Math.round(v*100)/100;g&&e.cacheKey&&e.cacheParams[0]===x&&e.cacheParams[1]===S||(e.changed&&!e.cacheKey||e.cacheParams[0]!==x||e.cacheParams[1]!==S||e.cacheParams[2]!==o[7])&&(e.cacheKey=M.generateKeys(x,S,o[7]),e.cacheParams[0]=x,e.cacheParams[1]=S,e.cacheParams[2]=o[7]);let C=e.cacheKey;L.pushTextFieldBuffer(1,2,c[0]*y,c[1]*y,c[2]*b,c[3]*b,c[4],c[5],o[0],o[1],o[2],o[3],o[4],o[5],o[6],o[7],u,d,f,p,e.xMin,e.yMin,e.xMax,e.yMax,+e.uniqueKey,C,e.changed|(g?2:0),_,v,e.instanceId),e.$cache&&!e.$cache.has(e.uniqueKey)&&(e.$cache=null);let w=e.$cache?e.$cache.get(`${C}`):M.get(e.uniqueKey,`${C}`);if(!w||e.changed){L.push2(0,+w);let t=Rc.encode(JSON.stringify(e.$textData));switch(L.push1(t.length),L.setUint8(t),e.autoSize){case`center`:L.push1(0);break;case`left`:L.push1(1);break;case`none`:L.push1(2);break;case`right`:L.push1(3)}L.push19(e.stopIndex,e.scrollX,e.scrollY,e.textWidth,e.textHeight,Math.abs(e.xMax-e.xMin),Math.abs(e.yMax-e.yMin),e.focusIndex,e.selectIndex,+e.focusVisible,e.thickness,e.thicknessColor,+e.wordWrap,+e.border,e.borderColor,+e.background,e.backgroundColor,e.defaultTextFormat.color||0,e.defaultTextFormat.size||0),w||M.set(e.uniqueKey,`${C}`,!0),e.$cache&&=null}else e.$cache||(e.$cache=M.getById(e.uniqueKey),e.$cache.set(e.uniqueKey,!0)),L.push1(1);if(L.push1(Fc(e.blendMode)),e.filters?.length){let t=B(0,0,0,0),n=Xt(e.filters,t);n>0?(L.push7(1,+Yt(),t[0],t[1],t[2],t[3],n),Zt(e.filters)):L.push1(0),V(t)}else L.push1(0);o!==n&&N.release(o),c!==t&&F.release(c)},Bc=(e,t,n,r,i,a)=>{if(!e.visible||!e.$videoElement||!e.$offscreenCanvas||!e.loaded){L.push1(0);return}let o=gn(e),s=o&&(o[0]!==1||o[1]!==1||o[2]!==1||o[3]!==1||o[4]!==0||o[5]!==0||o[6]!==0||o[7]!==0)?N.multiply(r,o):r;if(!cn(s[3]+s[7]/255,0,1,0)){s!==r&&N.release(s),L.push1(0);return}let c=H(e),l=c&&(c[0]!==1||c[1]!==0||c[2]!==0||c[3]!==1||c[4]!==0||c[5]!==0)?F.multiply(n,c):n,u=W(0,0,e.videoWidth,e.videoHeight,l),d=u[0],f=u[1],p=u[2],m=u[3];V(u);let h=Math.ceil(Math.abs(p-d)),g=Math.ceil(Math.abs(m-f));switch(!0){case h===0:case g===0:case h===-1/0:case g===-1/0:case h===1/0:case g===1/0:s!==r&&N.release(s),l!==n&&F.release(l),L.push1(0);return}if(0>d+h||0>f+g||d>i||f>a){s!==r&&N.release(s),l!==n&&F.release(l),L.push1(0);return}if(!e.uniqueKey)if(e.characterId&&e.loaderInfo){let t=z(e.loaderInfo.id,e.characterId);e.uniqueKey=`${Pc(new Float32Array(t))}`,qt(t)}else e.uniqueKey=`${e.instanceId}`;L.pushVideoBuffer(1,3,l[0],l[1],l[2],l[3],l[4],l[5],s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],d,f,p,m,0,0,e.videoWidth,e.videoHeight,+e.uniqueKey,+e.changed,e.instanceId),e.$cache&&!e.$cache.has(e.uniqueKey)&&(e.$cache=null);let _=e.$cache?e.$cache.get(`0`):M.get(e.uniqueKey,`0`);if(!_||e.changed){L.push2(0,+_);let n=e.$context;if(n){let r=e.videoWidth/2,i=e.videoHeight/2;n.save(),n.translate(r,i),n.rotate(Math.PI),n.scale(-1,1),n.drawImage(e.$videoElement,-r,-i,e.videoWidth,e.videoHeight),n.restore(),t.push(e.$offscreenCanvas.transferToImageBitmap())}_||M.set(e.uniqueKey,`0`,!0),e.$cache&&=null}else e.$cache||(e.$cache=M.getById(e.uniqueKey),e.$cache.set(e.uniqueKey,!0)),L.push1(1);if(L.push1(Fc(e.blendMode)),e.filters?.length){let t=B(0,0,0,0),n=Xt(e.filters,t);n>0?(L.push7(1,+Yt(),t[0],t[1],t[2],t[3],n),Zt(e.filters)):L.push1(0),V(t)}else L.push1(0);s!==r&&N.release(s),l!==n&&F.release(l)},Vc=(e,t,n,r)=>{let i=null;switch(!0){case e.isContainerEnabled:i=Ir(e,t);break;case e.isShape:i=jr(e,t);break;case e.isText:i=Fr(e,t);break;case e.isVideo:i=Nr(e,t)}if(!i)return null;let a=i[0],o=i[2],s=Math.abs(o-a);if(!s)return null;let c=i[1],l=i[3],u=Math.abs(l-c);return!u||0>a+s||0>c+u||a>n||c>r?null:i},Hc=(e,t)=>{let n=H(e),r=n?F.multiply(t,n):t,i=e.children;L.push2(0,i.length);for(let e=0;e{let n=jr(e,t),r=e.filters;if(r){let e=B(0,0,0,0);for(let t=0;t{let n=Nr(e,t),r=e.filters;if(r){let e=B(0,0,0,0);for(let t=0;t{let n=Fr(e,t),r=e.filters;if(r){let e=B(0,0,0,0);for(let t=0;t{let n=e.children;if(!n.length)return B(0,0,0,0);let r=H(e),i=r?t?F.multiply(t,r):r:t,a=Number.MAX_VALUE,o=a,s=-a,c=a,l=-a;for(let e=0;e{let n=e.children;for(let e=0;et[0]&&(t[0]=r),i>t[1]&&(t[1]=i)}qc(e,t)}}},Jc=new Float32Array(2),Yc=(e,t,n,r,i,a,o=!1)=>{if(!e.visible){L.push1(0);return}let s=gn(e),c=s&&(s[0]!==1||s[1]!==1||s[2]!==1||s[3]!==1||s[4]!==0||s[5]!==0||s[6]!==0||s[7]!==0)?N.multiply(r,s):r;if(!cn(c[3]+c[7]/255,0,1,0)){c!==r&&N.release(c),L.push1(0);return}let l=e.children;if(!l.length){c!==r&&N.release(c),L.push1(0);return}let u=H(e),d=u&&(u[0]!==1||u[1]!==0||u[2]!==0||u[3]!==1||u[4]!==0||u[5]!==0)?F.multiply(n,u):n;if(!d[0]&&!d[1]||!d[2]&&!d[3]){c!==r&&N.release(c),d!==n&&F.release(d),L.push1(0);return}L.push2(1,0);let f=e.blendMode;L.push1(Fc(f));let p=e.cacheAsBitmap;if(p){let t=e.$instanceIdString||=`${e.instanceId}`,i=p.rawData,a=Math.sqrt(i[0]*i[0]+i[1]*i[1]),s=Math.sqrt(i[2]*i[2]+i[3]*i[3]),l=u?Math.sqrt(u[0]*u[0]+u[1]*u[1]):1,f=u?Math.sqrt(u[2]*u[2]+u[3]*u[3]):1,m=Q.rendererScale,h=a*l*m,g=s*f*m,_=Math.round(h*100)/100,v=Math.round(g*100)/100,y=M.generateKeys(_,v,c[7]),b=M.get(t,`bitmapKey`)===y,x=e.filters,S=B(0,0,0,0);if(x)for(let e=0;e0&&x&&Zt(x);let oe;oe=u?F.multiply(w,u):R(w[0],0,0,w[3],0,0);let se=oe[4]-T[0],ce=oe[5]-T[1];d!==n&&F.release(d),d=R(oe[0],oe[1],oe[2],oe[3],se,ce),u?F.release(oe):Ht(oe),F.release(w),c!==r&&N.release(c),c=Ut(1,1,1,1,0,0,0,0),M.set(t,`bLocalBounds`,new Float32Array([T[0],T[1],T[2],T[3]])),V(T),V(S),M.set(t,`bitmapKey`,y)}else{let t=e.filters;if(t){let i=e.$instanceIdString||=`${e.instanceId}`,a=M.generateFilterKeys(d[0],d[1],d[2],d[3]),o=M.get(i,`filterKey`)===a,s=B(0,0,0,0),l=Xt(t,s),u=Yt();if(l>0){u||=e.changed;let f=Kc(e,n),p=e.$layerScaleX,m=e.$layerScaleY;(u||p===-1)&&(Jc[0]=1,Jc[1]=1,qc(e,Jc),p=Jc[0],m=Jc[1],e.$layerScaleX=p,e.$layerScaleY=m);let h=Math.ceil(Math.abs(f[2]-f[0])*p),g=Math.ceil(Math.abs(f[3]-f[1])*m);if(o&&!u){L.push27(1,h,g,1,1,e.instanceId,a,s[0],s[1],s[2],s[3],d[0],d[1],d[2],d[3],f[0],f[1],p,m,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]),V(f),V(s),c!==r&&N.release(c),d!==n&&F.release(d);return}L.push28(1,h,g,1,0,e.instanceId,a,s[0],s[1],s[2],s[3],d[0],d[1],d[2],d[3],f[0],f[1],p,m,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],l),Zt(t);let _=d[0]*p,v=d[1]*p,y=d[2]*m,b=d[3]*m,x=(d[4]-f[0])*p,S=(d[5]-f[1])*m;d!==n&&F.release(d),d=R(_,v,y,b,x,S),c!==r&&N.release(c),c=Ut(1,1,1,1,0,0,0,0),V(f),M.set(i,`filterKey`,a)}else if(f===`normal`)L.push1(0);else{let t=Ir(e,n),i=t[0],a=t[1];L.push18(1,Math.ceil(Math.abs(t[2]-i)),Math.ceil(Math.abs(t[3]-a)),0,d[0],d[1],d[2],d[3],i,a,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]);let o=d[0],s=d[1],l=d[2],u=d[3],f=d[4]-i,p=d[5]-a;d!==n&&F.release(d),d=R(o,s,l,u,f,p),V(t),c!==r&&N.release(c),c=Ut(1,1,1,1,0,0,0,0)}V(s)}else if(f===`normal`)L.push1(0);else{let t=Ir(e,n),i=t[0],a=t[1];L.push18(1,Math.ceil(Math.abs(t[2]-i)),Math.ceil(Math.abs(t[3]-a)),0,d[0],d[1],d[2],d[3],i,a,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]);let o=d[0],s=d[1],l=d[2],u=d[3],f=d[4]-i,p=d[5]-a;d!==n&&F.release(d),d=R(o,s,l,u,f,p),V(t),c!==r&&N.release(c),c=Ut(1,1,1,1,0,0,0,0)}}let m=e.mask;if(m){let e=Vc(m,d,i,a);if(!e)L.push1(0);else switch(L.push5(1,e[0],e[1],e[2],e[3]),!0){case m.isContainerEnabled:Hc(m,d);break;case m.isShape:Lc(m,d)}m.changed=!1}else L.push1(0);L.push1(l.length);let h=0,g=!0;for(let n=0;nh&&(h=0,g=!0),!g){L.push1(0),r.changed=!1;continue}if(r.clipDepth){h=r.clipDepth;let e=Vc(r,d,i,a);if(g=!!e,L.push1(+g),!e){r.changed=!1;continue}switch(L.push4(e[0],e[1],e[2],e[3]),!0){case r.isContainerEnabled:Hc(r,d);break;case r.isShape:Lc(r,d)}r.changed=!1;continue}let s=o||!!(e.filters&&e.filters.length);switch(!0){case r.isContainerEnabled:Yc(r,t,d,c,i,a,s);break;case r.isShape:Ic(r,d,c,i,a);break;case r.isText:zc(r,d,c,i,a);break;case r.isVideo:Bc(r,t,d,c,i,a)}r.changed=!1}c!==r&&N.release(c),d!==n&&F.release(d)},Xc=(e,t,n,r,i,a)=>{switch(L.push1(Q.backgroundColor),!0){case e.isContainerEnabled:Yc(e,t,n,r,i,a);break;case e.isShape:Ic(e,n,r,i,a);break;case e.isText:zc(e,n,r,i,a);break;case e.isVideo:Bc(e,t,n,r,i,a)}e.changed=!1},Zc=e=>{e.totalFrames===1||!e.isPlaying||(e.$wait||(++e.currentFrame,e.currentFrame>e.totalFrames&&(e.currentFrame=1)),e.$wait=!1,e.$canSound=!0,e.$canAction=!0,e.$hasTimelineHeadMoved=!0,e.$container=null,jc(e),oc(e),I(e))},Qc=e=>{let t=e.$container;if(t)for(let e=0;t.length>e;++e){let n=t[e];n.isTimelineEnabled&&Zc(n),Qc(n)}else{let t=[],n=e.children;for(let e=0;n.length>e;++e){let r=n[e];r.isContainerEnabled&&(r.isTimelineEnabled&&Zc(r),Qc(r),t.push(r))}e.$container=t}},$c=()=>{Qc(Q),kc(),Oc()},Q=new class extends Fi{_$ready;stageWidth;stageHeight;frameRate;rendererScale;rendererWidth;rendererHeight;_$backgroundColor;isStage;constructor(){super(),this.stageWidth=0,this.stageHeight=0,this.frameRate=1,this.rendererScale=1,this.rendererWidth=0,this.rendererHeight=0,this._$ready=!1,this._$backgroundColor=-1,this.isStage=!0}static get namespace(){return`next2d.display.Stage`}get namespace(){return`next2d.display.Stage`}get backgroundColor(){return this._$backgroundColor}set backgroundColor(e){this._$backgroundColor=e===`transparent`?-1:parseInt(e.replace(`#`,``),16)}get pointer(){return Pt}set ready(e){!e||this._$ready||(this._$ready=e,Nc(this))}addChild(e){return nn.add(e.instanceId),tn.set(this,e),super.addChild(e),tn.delete(this),tn.set(e,e),e}$ticker(){$c()}$generateRenderQueue(e,t,n,r){Xc(e,t,n,r,this.rendererWidth,this.rendererHeight)}$mouseHit(e,t,n){ui(this,e,t,n,!0)}};nn.add(Q.instanceId);var el={command:`resize`,buffer:null},tl=[],nl=(e=!0)=>{el.buffer=new Float32Array([$.rendererWidth,$.rendererHeight,+!!e]),tl[0]=el.buffer.buffer,x.postMessage(el,tl)},rl=window.devicePixelRatio||1,il=()=>{fa.x=0,fa.y=0;let e=u();if(!e)return;let t=e.children[0];!t||t.localName!==`canvas`||(fa.x=(e.clientWidth-Q.rendererWidth/rl)/2,fa.y=(e.clientHeight-Q.rendererHeight/rl)/2)},al=()=>{let n=u();if(!n)return;let r=n.parentElement;if(!r)return;let i=$.fullScreen||r.tagName===`BODY`?window.innerWidth:r.clientWidth,a=$.fullScreen||r.tagName===`BODY`?window.innerHeight:r.clientHeight,o=n.style;if(o.width=`${i}px`,o.height=`${a}px`,!Q.stageWidth||!Q.stageHeight)return;let s=Math.min(i/Q.stageWidth,a/Q.stageHeight)*t,c=$.fullScreen?window.innerWidth*t:Q.stageWidth*s|0,l=$.fullScreen?window.innerHeight*t:Q.stageHeight*s|0;(c!==$.screenWidth||l!==$.screenHeight)&&($.screenWidth=i,$.screenHeight=a,Q.changed=!0,n.children.length>1&&n.children[1].dispatchEvent(new Event(`${e}_blur`)),il(),(c!==$.rendererWidth||l!==$.rendererHeight)&&(Q.rendererScale=$.rendererScale=s,Q.rendererWidth=$.rendererWidth=c,Q.rendererHeight=$.rendererHeight=l,d[0]=d[3]=s,d[4]=($.rendererWidth-Q.stageWidth*s)/2,d[5]=($.rendererHeight-Q.stageHeight*s)/2,M.reset(),nl(),Q.hasEventListener(w.RESIZE)&&Q.dispatchEvent(new w(w.RESIZE))))},ol=new Float32Array([1,1,1,1,0,0,0,0]),sl=[],cl={command:`render`,buffer:null,length:0,imageBitmaps:null},ll=[];x.addEventListener(`message`,e=>{if(e.data.message!==`render`)return;let t=e.data.buffer;L.buffer.length>t.length||(L.buffer=t)});var ul=()=>{L.offset=0,ll.length=0,sl.length=0,Q.$generateRenderQueue(Q,sl,d,ol),L.offset&&(cl.buffer=L.buffer,cl.length=L.offset,ll.push(L.buffer.buffer),cl.imageBitmaps=null,sl.length&&(cl.imageBitmaps=sl,ll.push(...sl)),x.postMessage(cl,ll))},dl={command:`removeCache`,buffer:null},fl=[],pl=()=>{let e=new Float32Array(M.$removeIds);M.$removeIds.length=0,dl.buffer=e,fl[0]=e.buffer,x.postMessage(dl,fl)},ml=new Map,hl=new Map,gl=.1,_l=(e,t)=>{let n=Q.hasEventListener(O.BUTTON_DOWN),r=Q.hasEventListener(O.BUTTON_UP);if(!(!n&&!r))for(let i=0;i{if(Q.hasEventListener(O.AXES_MOTION))for(let n=0;n{let e=navigator.getGamepads();for(let t=0;t!1)),hl.set(n.index,Array.from({length:n.axes.length},()=>0)));let r=ml.get(n.index),i=hl.get(n.index);_l(n,r),vl(n,i)}},bl=new w(w.ENTER_FRAME),xl=e=>{if($.stopFlag)return;M.$removeIds.length&&pl();let t=e-$.startTime;t>$.fps&&($.startTime=e-t%$.fps,Q.$ticker(),yl(),Q.hasEventListener(w.ENTER_FRAME)&&Q.dispatchEvent(bl),Q.changed&&ul(),M.$removeCache&&(M.removeTimerScheduledCache(),M.$removeIds.length&&pl())),$.timerId=requestAnimationFrame(e=>{xl(e)})},Sl=()=>{$.stopFlag&&($.stopFlag=!1,Q.changed=!0,$.timerId>-1&&cancelAnimationFrame($.timerId),$.fps=1e3/Q.frameRate|0,$.startTime=performance.now(),$.timerId=requestAnimationFrame(e=>{xl(e)}))},Cl=()=>{$.timerId>-1&&cancelAnimationFrame($.timerId),$.stopFlag=!0,$.timerId=-1,As.stopAll()},wl=e=>{let t=Yi();if(t){t.keyDown(e);return}Q.hasEventListener(D.KEY_DOWN)&&(re(e),Q.dispatchEvent(new D(D.KEY_DOWN)))},Tl=e=>{Yi()||Q.hasEventListener(D.KEY_UP)&&(re(e),Q.dispatchEvent(new D(D.KEY_UP)))},El=e=>{let t=e.gamepad;if(!t||(ml.set(t.index,Array.from({length:t.buttons.length},()=>!1)),hl.set(t.index,Array.from({length:t.axes.length},()=>0)),!Q.hasEventListener(O.GAMEPAD_CONNECTED)))return;let n=new O(O.GAMEPAD_CONNECTED);n.gamepadIndex=t.index,Q.dispatchEvent(n)},Dl=e=>{let t=e.gamepad;if(!t||(ml.delete(t.index),hl.delete(t.index),!Q.hasEventListener(O.GAMEPAD_DISCONNECTED)))return;let n=new O(O.GAMEPAD_DISCONNECTED);n.gamepadIndex=t.index,Q.dispatchEvent(n)},Ol=()=>{window.addEventListener(D.KEY_DOWN,wl),window.addEventListener(D.KEY_UP,Tl),window.addEventListener(O.GAMEPAD_CONNECTED,El),window.addEventListener(O.GAMEPAD_DISCONNECTED,Dl)},$=new class{rendererWidth;rendererHeight;screenWidth;screenHeight;rendererScale;fixedWidth;fixedHeight;stopFlag;startTime;fps;tagId;_$fullScreen;timerId;mouseState;constructor(){this.rendererWidth=0,this.rendererHeight=0,this.rendererScale=1,this.screenWidth=0,this.screenHeight=0,this.stopFlag=!0,this.startTime=0,this.fps=16,this.timerId=-1,this.mouseState=`up`,this.fixedWidth=0,this.fixedHeight=0,this.tagId=``,this._$fullScreen=!1,Ol()}get fullScreen(){return this._$fullScreen}set fullScreen(e){this._$fullScreen!==e&&(this._$fullScreen=e,al())}play(){Sl()}stop(){Cl()}cacheClear(){M.reset(),x.postMessage({command:`cacheClear`})}setOptions(e=null){e&&(this.fixedWidth=e.width||this.fixedWidth,this.fixedHeight=e.height||this.fixedHeight,this.tagId=e.tagId||this.tagId,this._$fullScreen=!!e.fullScreen,e.bgColor&&(Q.backgroundColor=e.bgColor),e.cacheStoreLimit&&e.cacheStoreLimit>0&&(M.$maxStoreSize=e.cacheStoreLimit))}},kl=`auto`,Al=()=>{$.stopFlag||(p.x=Q.pointer.x,p.y=Q.pointer.y,p.pointer=`auto`,p.hit=null,i.beginPath(),i.setTransform(1,0,0,1,0,0),Q.$mouseHit(i,f,p),$.mouseState===`up`&&kl!==p.pointer&&(l().style.cursor=kl=p.pointer))},jl=e=>{let n=window.scrollX,r=window.scrollY,i=u();if(i){let e=i.getBoundingClientRect();n+=e.left,r+=e.top}let a=e.target;if(a){let e=a.getBoundingClientRect();n+=e.left,r+=e.top}let o=($.rendererWidth-Q.stageWidth*$.rendererScale)/2,s=($.rendererHeight-Q.stageHeight*$.rendererScale)/2,c=$.rendererScale/t;Q.pointer.x=(e.pageX-n)/c-o/$.rendererScale,Q.pointer.y=(e.pageY-r)/c-s/$.rendererScale},Ml=()=>{let e=p.hit,t=Yi();t&&(!e||t.instanceId!==e.instanceId)&&(t.focus=!1,Ji(null)),e?(e.isText&&(e.focus?setTimeout(()=>{K.focus()},300):(e.focus=!0,Ji(e)),e.setFocusIndex(p.x-f[4],p.y-f[5])),e.willTrigger(A.POINTER_DOWN)&&e.dispatchEvent(new A(A.POINTER_DOWN))):Q.willTrigger(A.POINTER_DOWN)&&Q.dispatchEvent(new A(A.POINTER_DOWN))},Nl=()=>{let e=p.hit;e?e.willTrigger(A.DOUBLE_CLICK)&&e.dispatchEvent(new A(A.DOUBLE_CLICK)):Q.willTrigger(A.DOUBLE_CLICK)&&Q.dispatchEvent(new A(A.DOUBLE_CLICK))},Pl,Fl=!1,Il=e=>{let t=e.target;t&&($.mouseState=`down`,t.setPointerCapture(e.pointerId),re(e),jl(e),Al(),p.hit&&e.preventDefault(),clearTimeout(Pl),Fl?(Fl=!1,Nl()):(Fl=!0,Pl=setTimeout(()=>{Fl=!1},300),Ml()))},Ll=()=>{let e=Q.dropTarget,t=p.hit;t?(t.willTrigger(A.POINTER_UP)&&t.dispatchEvent(new A(A.POINTER_UP)),e&&e.instanceId!==t.instanceId&&e.willTrigger(A.POINTER_UP)&&e.dispatchEvent(new A(A.POINTER_UP))):e&&e.willTrigger(A.POINTER_UP)?e.dispatchEvent(new A(A.POINTER_UP)):Q.willTrigger(A.POINTER_UP)&&Q.dispatchEvent(new A(A.POINTER_UP))},Rl=e=>{let t=e.target;t&&($.mouseState=`up`,t.releasePointerCapture(e.pointerId),re(e),jl(e),Al(),Ll())},zl=()=>{let e=Q.dropTarget;if(e){let t=e.parent?e.parent.globalToLocal(Q.pointer):e.globalToLocal(Q.pointer),r=0,i=0;e.$lockCenter?(r=t.x-e.width/2,i=t.y-e.height/2):(r=t.x+e.$offsetX,i=t.y+e.$offsetY);let a=e.$boundedRect;a&&(r=n(r,a.left,a.right),i=n(i,a.top,a.bottom)),e.x=r,e.y=i}let t=Yi();if(t&&$.mouseState===`down`){t.setFocusIndex(p.x-f[4],p.y-f[5],!0);return}let r=g(),i=p.hit;i?(i.willTrigger(A.POINTER_MOVE)&&i.dispatchEvent(new A(A.POINTER_MOVE)),r?r.instanceId!==i.instanceId&&(r.willTrigger(A.POINTER_OUT)&&r.dispatchEvent(new A(A.POINTER_OUT)),i.willTrigger(A.POINTER_OVER)&&i.dispatchEvent(new A(A.POINTER_OVER))):i.willTrigger(A.POINTER_OVER)&&i.dispatchEvent(new A(A.POINTER_OVER)),h(i)):(r&&(r.willTrigger(A.POINTER_OUT)&&r.dispatchEvent(new A(A.POINTER_OUT)),h(null)),Q.hasEventListener(A.POINTER_MOVE)&&Q.dispatchEvent(new A(A.POINTER_MOVE)))},Bl=e=>{e.target&&(re(e),jl(e),Al(),p.hit&&e.preventDefault(),zl())},Vl=e=>{re(e);let t=g();t&&t.willTrigger(A.POINTER_LEAVE)&&(e.preventDefault(),t.dispatchEvent(new A(A.POINTER_LEAVE)))},Hl=e=>{re(e);let t=p.hit;if(t&&t.isText&&t.scrollEnabled){e.preventDefault(),e.deltaX&&(t.scrollX+=e.deltaX/(t.textWidth/t.width)),e.deltaY&&(t.scrollY+=e.deltaY/(t.textHeight/t.height));return}Q.willTrigger(_e.WHEEL)&&(e.preventDefault(),Q.dispatchEvent(new _e(_e.WHEEL)))},Ul=e=>{let t=()=>{_s();let n=ps();for(let e=0;e{Object.defineProperty(Gl,e,{get(){return t}})});var Kl={Sprite:Bi,MovieClip:gc,BitmapData:Fe,BlendMode:Ie,DisplayObject:hi,DisplayObjectContainer:Fi,FrameLabel:Ii,Graphics:G,InteractiveObject:Pi,Loader:Dc,Shape:Ki,stage:Q};Object.entries(Kl).forEach(([e,t])=>{Object.defineProperty(Kl,e,{get(){return t}})});var ql={BevelFilter:Mn,BlurFilter:Fn,ColorMatrixFilter:Rn,ConvolutionFilter:Hn,DisplacementMapFilter:Kn,DropShadowFilter:Zn,GlowFilter:nr,GradientBevelFilter:sr,GradientGlowFilter:fr};Object.entries(ql).forEach(([e,t])=>{Object.defineProperty(ql,e,{get(){return t}})});var Jl={ColorTransform:N,Matrix:F,Point:P,Rectangle:jt};Object.entries(Jl).forEach(([e,t])=>{Object.defineProperty(Jl,e,{get(){return t}})});var Yl={Sound:Rs,SoundMixer:As,SoundTransform:zs,Video:Ys};Object.entries(Yl).forEach(([e,t])=>{Object.defineProperty(Yl,e,{get(){return t}})});var Xl=class{requestHeaders;url;contentType;data;method;responseDataFormat;withCredentials;constructor(e=``){this.url=`${e}`,this.contentType=`application/json`,this.data=null,this.method=`GET`,this.requestHeaders=[],this.responseDataFormat=`json`,this.withCredentials=!1}get headers(){let e=[];return e.push({name:`Content-Type`,value:this.contentType}),this.requestHeaders.length&&e.push(...this.requestHeaders),e}},Zl={URLRequest:Xl};Object.entries(Zl).forEach(([e,t])=>{Object.defineProperty(Zl,e,{get(){return t}})});var Ql={TextFormat:pa,TextField:is};Object.entries(Ql).forEach(([e,t])=>{Object.defineProperty(Ql,e,{get(){return t}})});var $l={Easing:jo,Tween:zo};Object.entries($l).forEach(([e,t])=>{Object.defineProperty($l,e,{get(){return t}})});var eu=()=>{let e=u();if(e)for(;e.firstChild;)e.removeChild(e.firstChild)},tu=()=>{let e=u();if(!e)return;let t=l();t&&(e.appendChild(t),e.appendChild(K))},nu=()=>{Q.ready=!0,ul(),$.play(),Q.changed=!1},ru=()=>{let t=document.createElement(`div`);if(o(t),t.id=e,t.tabIndex=-1,!$.tagId)document.body.appendChild(t);else{let e=document.getElementById($.tagId);if(!e)return alert(`Element not found with tag ID: ${$.tagId}`),t;e.appendChild(t)}return t},iu=(e,t=0,n=0)=>{let r=``;if(r+=`display:flex;`,r+=`align-items:center;`,r+=`justify-content:center;`,r+=`background-color:transparent;`,r+=`overflow:hidden;`,r+=`padding:0;`,r+=`margin:0;`,r+=`user-select:none;`,r+=`outline:none;`,t&&n)r+=`width:${t}px;`,r+=`height:${n}px;`;else{let t=e.parentElement;if(!t)throw Error(`parent element is null.`);t.tagName===`BODY`?(r+=`width:${window.innerWidth}px;`,r+=`height:${window.innerHeight}px;`):(r+=`width:${t.clientWidth}px;`,r+=`height:${t.clientHeight}px;`)}e.setAttribute(`style`,r)},au=t=>{let n=`${e}_loading`;t.innerHTML=` -
`},ou=-1,su=()=>{window.addEventListener(`resize`,()=>{cancelAnimationFrame(ou),ou=requestAnimationFrame(al)})},cu=(e=null)=>{$.setOptions(e);let t=ru();iu(t,$.fixedWidth,$.fixedHeight),au(t),!$.fixedWidth&&!$.fixedHeight&&su(),al()},lu=async(e,t=null)=>{if(e===`develop`){let t=location.search.slice(1).split(`&`)[0];if(!t)return;e=`${location.origin}/${t}`}if(!e)return;e.charAt(1)===`/`&&(e=e.slice(1)),cu(t);let r=new Dc,i=r.contentLoaderInfo;if(i.addEventListener(me.IO_ERROR,e=>{alert(`Error: `+e.text)}),await r.load(new Xl(e)),!i.data)return;let a=i.data.stage;Q.stageWidth=a.width,Q.stageHeight=a.height,Q.frameRate=n(a.fps,1,60,60),Q.backgroundColor=t&&t.bgColor?t.bgColor:a.bgColor,Q.addChild(i.content),al(),nu(),eu(),tu(),il()},uu=!1,du=(e=240,t=240,r=60,i=null)=>{if(uu)return Q.getChildAt(0);uu=!0,Q.stageWidth=e|0,Q.stageHeight=t|0,Q.frameRate=n(r,1,60,60),cu(i);let a=Q.addChild(new Bi);return nu(),eu(),tu(),il(),a},fu={command:`capture`,buffer:null,bgColor:16777215,bgAlpha:0,width:0,height:0,length:0,imageBitmaps:null},pu=[],mu=[],hu=async(e,t,n,r,i=0,a=0)=>await new Promise(o=>{if(L.offset=0,pu.length=0,mu.length=0,Q.$generateRenderQueue(e,mu,t,n),!L.offset)return o(r);fu.buffer=L.buffer,fu.width=r.width,fu.height=r.height,fu.bgColor=i,fu.bgAlpha=a,fu.length=L.offset,pu.push(L.buffer.buffer),fu.imageBitmaps=null,mu.length&&(fu.imageBitmaps=mu,pu.push(...mu));let s=e=>{if(e.data.message!==`capture`)return;let t=e.data.buffer;return L.buffer.length{switch(!0){case e.isVideo:{let t=e.muted;e.muted=!0,await e.play(),e.pause(),e.muted=t,await new Promise(t=>{let n=async()=>{e.loaded?(e.seek(0),t()):requestAnimationFrame(n)};requestAnimationFrame(n)})}break;case e.isContainerEnabled:{let t=e.children;for(let e=0;e{n&&n.videoSync&&await gu(e);let r=n&&n.colorTransform?n.colorTransform.rawData:vu,i=new Float32Array([1,0,0,1,-e.width/2,-e.height/2]),a=n&&n.matrix?F.multiply(n.matrix.rawData,i):F.multiply(_u,i),o=n&&n.canvas?n.canvas:M.getCanvas(),s=Math.sqrt(a[0]*a[0]+a[1]*a[1]),c=Math.sqrt(a[2]*a[2]+a[3]*a[3]),l=Math.ceil(e.width*s),u=Math.ceil(e.height*c);if(l<=0||u<=0)return o;a[4]+=l/2,a[5]+=u/2,o.width=l,o.height=u;let d=$.stopFlag;d||$.stop();let f=!1,p=$.rendererWidth,m=$.rendererHeight,h=$.rendererScale;return(l>p||u>m)&&(f=!0,Q.rendererScale=$.rendererScale=Math.min(l/Q.stageWidth,u/Q.stageHeight)*t,Q.rendererWidth=$.rendererWidth=l,Q.rendererHeight=$.rendererHeight=u,nl(!1)),await hu(e,a,r,o,n&&n.bgColor?parseInt(n.bgColor.replace(`#`,``),16):0,n&&n.bgAlpha?n.bgAlpha:0),f&&(Q.rendererScale=$.rendererScale=h,Q.rendererWidth=$.rendererWidth=p,Q.rendererHeight=$.rendererHeight=m,nl(!1)),d||$.play(),F.release(a),n&&n.colorTransform&&N.release(r),o},bu=class{display;events;filters;geom;media;net;text;ui;_$promise;constructor(){this.display=Kl,this.events=Gl,this.filters=ql,this.geom=Jl,this.media=Yl,this.net=Zl,this.text=Ql,this.ui=$l,this._$promise=new Promise(e=>{document.readyState===`loading`?window.addEventListener(`DOMContentLoaded`,()=>e(),{once:!0}):e()})}async load(e,t=null){await Promise.all([this._$promise]),await lu(e,t)}async createRootMovieClip(e=240,t=240,n=60,r=null){return await Promise.all([this._$promise]),du(e,t,n,r)}async captureToCanvas(e,t=null){return await yu(e,t)}};`next2d`in window||(console.log(`%c Next2D Player %c 3.10.1 %c https://next2d.app`,`color: #fff; background: #5f5f5f`,`color: #fff; background: #4bc729`,``),window.next2d=new bu); \ No newline at end of file +
`},lu=-1,uu=()=>{window.addEventListener(`resize`,()=>{cancelAnimationFrame(lu),lu=requestAnimationFrame(cl)})},du=(e=null)=>{$.setOptions(e);let t=ou();su(t,$.fixedWidth,$.fixedHeight),cu(t),!$.fixedWidth&&!$.fixedHeight&&uu(),cl()},fu=async(e,t=null)=>{if(e===`develop`){let t=location.search.slice(1).split(`&`)[0];if(!t)return;e=`${location.origin}/${t}`}if(!e)return;e.charAt(1)===`/`&&(e=e.slice(1)),du(t);let r=new Ac,i=r.contentLoaderInfo;if(i.addEventListener(me.IO_ERROR,e=>{alert(`Error: `+e.text)}),await r.load(new $l(e)),!i.data)return;let a=i.data.stage;Q.stageWidth=a.width,Q.stageHeight=a.height,Q.frameRate=n(a.fps,1,60,60),Q.backgroundColor=t&&t.bgColor?t.bgColor:a.bgColor,Q.addChild(i.content),cl(),au(),ru(),iu(),sl()},pu=!1,mu=(e=240,t=240,r=60,i=null)=>{if(pu)return Q.getChildAt(0);pu=!0,Q.stageWidth=e|0,Q.stageHeight=t|0,Q.frameRate=n(r,1,60,60),du(i);let a=Q.addChild(new Bi);return au(),ru(),iu(),sl(),a},hu={command:`capture`,buffer:null,bgColor:16777215,bgAlpha:0,width:0,height:0,length:0,imageBitmaps:null},gu=[],_u=[],vu=async(e,t,n,r,i=0,a=0)=>await new Promise(o=>{if(L.offset=0,gu.length=0,_u.length=0,Q.$generateRenderQueue(e,_u,t,n),!L.offset)return o(r);hu.buffer=L.buffer,hu.width=r.width,hu.height=r.height,hu.bgColor=i,hu.bgAlpha=a,hu.length=L.offset,gu.push(L.buffer.buffer),hu.imageBitmaps=null,_u.length&&(hu.imageBitmaps=_u,gu.push(..._u));let s=e=>{if(e.data.message!==`capture`)return;let t=e.data.buffer;return L.buffer.length{switch(!0){case e.isVideo:{let t=e.muted;e.muted=!0,await e.play(),e.pause(),e.muted=t,await new Promise(t=>{let n=async()=>{e.loaded?(e.seek(0),t()):requestAnimationFrame(n)};requestAnimationFrame(n)})}break;case e.isContainerEnabled:{let t=e.children;for(let e=0;e{n&&n.videoSync&&await yu(e);let r=n&&n.colorTransform?n.colorTransform.rawData:xu,i=new Float32Array([1,0,0,1,-e.width/2,-e.height/2]),a=n&&n.matrix?F.multiply(n.matrix.rawData,i):F.multiply(bu,i),o=n&&n.canvas?n.canvas:M.getCanvas(),s=Math.sqrt(a[0]*a[0]+a[1]*a[1]),c=Math.sqrt(a[2]*a[2]+a[3]*a[3]),l=Math.ceil(e.width*s),u=Math.ceil(e.height*c);if(l<=0||u<=0)return o;a[4]+=l/2,a[5]+=u/2,o.width=l,o.height=u;let d=$.stopFlag;d||$.stop();let f=!1,p=$.rendererWidth,m=$.rendererHeight,h=$.rendererScale;return(l>p||u>m)&&(f=!0,Q.rendererScale=$.rendererScale=Math.min(l/Q.stageWidth,u/Q.stageHeight)*t,Q.rendererWidth=$.rendererWidth=l,Q.rendererHeight=$.rendererHeight=u,al(!1)),await vu(e,a,r,o,n&&n.bgColor?parseInt(n.bgColor.replace(`#`,``),16):0,n&&n.bgAlpha?n.bgAlpha:0),f&&(Q.rendererScale=$.rendererScale=h,Q.rendererWidth=$.rendererWidth=p,Q.rendererHeight=$.rendererHeight=m,al(!1)),d||$.play(),F.release(a),n&&n.colorTransform&&N.release(r),o},Cu=class{display;events;filters;geom;media;net;text;ui;_$promise;constructor(){this.display=Yl,this.events=Jl,this.filters=Xl,this.geom=Zl,this.media=Ql,this.net=eu,this.text=tu,this.ui=nu,this._$promise=new Promise(e=>{document.readyState===`loading`?window.addEventListener(`DOMContentLoaded`,()=>e(),{once:!0}):e()})}async load(e,t=null){await Promise.all([this._$promise]),await fu(e,t)}async createRootMovieClip(e=240,t=240,n=60,r=null){return await Promise.all([this._$promise]),mu(e,t,n,r)}async captureToCanvas(e,t=null){return await Su(e,t)}};`next2d`in window||(console.log(`%c Next2D Player %c 3.11.1 %c https://next2d.app`,`color: #fff; background: #5f5f5f`,`color: #fff; background: #4bc729`,``),window.next2d=new Cu); \ No newline at end of file