ATProto Browser

ATProto Browser

Experimental browser for the Atmosphere

Record data

{
  "uri": "at://did:plc:hwevmowznbiukdf6uk5dwrrq/sh.tangled.repo.pull/3lo7mxv7sut22",
  "cid": "bafyreic3stcn65w3hizj4g4bsdl7tpyo6qcipsya3msuikfujfmkesgnum",
  "value": {
    "$type": "sh.tangled.repo.pull",
    "patch": "From 3867a5acec7e4262bac554c0be29e01fc0ea5550 Mon Sep 17 00:00:00 2001\nFrom: Anirudh Oppiliappan <x@icyphox.sh>\nDate: Fri, 2 May 2025 18:36:15 +0300\nSubject: [PATCH 1/2] camo: cloudflare worker to proxy and cache images\n\nProxies images against a HMAC signature -- this prevents knot URLs from\ndirectly being hit and possibly spammed. Also caches images in\nCloudflare's global CDN.\n---\n camo/.gitignore         |  174 +++\n camo/package-lock.json  | 3024 +++++++++++++++++++++++++++++++++++++++\n camo/package.json       |   16 +\n camo/readme.md          |   17 +\n camo/src/index.js       |  101 ++\n camo/src/mimetypes.json |   45 +\n camo/wrangler.jsonc     |   20 +\n flake.lock              |    8 +-\n 8 files changed, 3401 insertions(+), 4 deletions(-)\n create mode 100644 camo/.gitignore\n create mode 100644 camo/package-lock.json\n create mode 100644 camo/package.json\n create mode 100644 camo/readme.md\n create mode 100644 camo/src/index.js\n create mode 100644 camo/src/mimetypes.json\n create mode 100644 camo/wrangler.jsonc\n\ndiff --git a/camo/.gitignore b/camo/.gitignore\nnew file mode 100644\nindex 0000000..a64beb8\n--- /dev/null\n+++ b/camo/.gitignore\n@@ -0,0 +1,174 @@\n+# Logs\n+\n+./test.sh\n+\n+logs\n+_.log\n+npm-debug.log_\n+yarn-debug.log*\n+yarn-error.log*\n+lerna-debug.log*\n+.pnpm-debug.log*\n+\n+# Diagnostic reports (https://nodejs.org/api/report.html)\n+\n+report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json\n+\n+# Runtime data\n+\n+pids\n+_.pid\n+_.seed\n+\\*.pid.lock\n+\n+# Directory for instrumented libs generated by jscoverage/JSCover\n+\n+lib-cov\n+\n+# Coverage directory used by tools like istanbul\n+\n+coverage\n+\\*.lcov\n+\n+# nyc test coverage\n+\n+.nyc_output\n+\n+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n+\n+.grunt\n+\n+# Bower dependency directory (https://bower.io/)\n+\n+bower_components\n+\n+# node-waf configuration\n+\n+.lock-wscript\n+\n+# Compiled binary addons (https://nodejs.org/api/addons.html)\n+\n+build/Release\n+\n+# Dependency directories\n+\n+node_modules/\n+jspm_packages/\n+\n+# Snowpack dependency directory (https://snowpack.dev/)\n+\n+web_modules/\n+\n+# TypeScript cache\n+\n+\\*.tsbuildinfo\n+\n+# Optional npm cache directory\n+\n+.npm\n+\n+# Optional eslint cache\n+\n+.eslintcache\n+\n+# Optional stylelint cache\n+\n+.stylelintcache\n+\n+# Microbundle cache\n+\n+.rpt2_cache/\n+.rts2_cache_cjs/\n+.rts2_cache_es/\n+.rts2_cache_umd/\n+\n+# Optional REPL history\n+\n+.node_repl_history\n+\n+# Output of 'npm pack'\n+\n+\\*.tgz\n+\n+# Yarn Integrity file\n+\n+.yarn-integrity\n+\n+# dotenv environment variable files\n+\n+.env\n+.env.development.local\n+.env.test.local\n+.env.production.local\n+.env.local\n+\n+# parcel-bundler cache (https://parceljs.org/)\n+\n+.cache\n+.parcel-cache\n+\n+# Next.js build output\n+\n+.next\n+out\n+\n+# Nuxt.js build / generate output\n+\n+.nuxt\n+dist\n+\n+# Gatsby files\n+\n+.cache/\n+\n+# Comment in the public line in if your project uses Gatsby and not Next.js\n+\n+# https://nextjs.org/blog/next-9-1#public-directory-support\n+\n+# public\n+\n+# vuepress build output\n+\n+.vuepress/dist\n+\n+# vuepress v2.x temp and cache directory\n+\n+.temp\n+.cache\n+\n+# Docusaurus cache and generated files\n+\n+.docusaurus\n+\n+# Serverless directories\n+\n+.serverless/\n+\n+# FuseBox cache\n+\n+.fusebox/\n+\n+# DynamoDB Local files\n+\n+.dynamodb/\n+\n+# TernJS port file\n+\n+.tern-port\n+\n+# Stores VSCode versions used for testing VSCode extensions\n+\n+.vscode-test\n+\n+# yarn v2\n+\n+.yarn/cache\n+.yarn/unplugged\n+.yarn/build-state.yml\n+.yarn/install-state.gz\n+.pnp.\\*\n+\n+# wrangler project\n+\n+.dev.vars\n+.wrangler/\ndiff --git a/camo/package-lock.json b/camo/package-lock.json\nnew file mode 100644\nindex 0000000..2713cab\n--- /dev/null\n+++ b/camo/package-lock.json\n@@ -0,0 +1,3024 @@\n+{\n+\t\"name\": \"camo\",\n+\t\"version\": \"0.0.0\",\n+\t\"lockfileVersion\": 3,\n+\t\"requires\": true,\n+\t\"packages\": {\n+\t\t\"\": {\n+\t\t\t\"name\": \"camo\",\n+\t\t\t\"version\": \"0.0.0\",\n+\t\t\t\"devDependencies\": {\n+\t\t\t\t\"@cloudflare/vitest-pool-workers\": \"^0.8.19\",\n+\t\t\t\t\"vitest\": \"~3.0.7\",\n+\t\t\t\t\"wrangler\": \"^4.14.1\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@cloudflare/kv-asset-handler\": {\n+\t\t\t\"version\": \"0.4.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT OR Apache-2.0\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"mime\": \"^3.0.0\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@cloudflare/unenv-preset\": {\n+\t\t\t\"version\": \"2.3.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.3.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT OR Apache-2.0\",\n+\t\t\t\"peerDependencies\": {\n+\t\t\t\t\"unenv\": \"2.0.0-rc.15\",\n+\t\t\t\t\"workerd\": \"^1.20250320.0\"\n+\t\t\t},\n+\t\t\t\"peerDependenciesMeta\": {\n+\t\t\t\t\"workerd\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t}\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@cloudflare/vitest-pool-workers\": {\n+\t\t\t\"version\": \"0.8.24\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.8.24.tgz\",\n+\t\t\t\"integrity\": \"sha512-wT2PABJQ9YLYWrVu4CRZOjvmjHkdbMyLTZPU9n/7JEMM3pgG8dY41F1Rj31UsXRQaXX39A/CTPGlk58dcMUysA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"birpc\": \"0.2.14\",\n+\t\t\t\t\"cjs-module-lexer\": \"^1.2.3\",\n+\t\t\t\t\"devalue\": \"^4.3.0\",\n+\t\t\t\t\"miniflare\": \"4.20250428.1\",\n+\t\t\t\t\"semver\": \"^7.7.1\",\n+\t\t\t\t\"wrangler\": \"4.14.1\",\n+\t\t\t\t\"zod\": \"^3.22.3\"\n+\t\t\t},\n+\t\t\t\"peerDependencies\": {\n+\t\t\t\t\"@vitest/runner\": \"2.0.x - 3.1.x\",\n+\t\t\t\t\"@vitest/snapshot\": \"2.0.x - 3.1.x\",\n+\t\t\t\t\"vitest\": \"2.0.x - 3.1.x\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@cloudflare/workerd-darwin-64\": {\n+\t\t\t\"version\": \"1.20250428.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250428.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-6nVe9oV4Hdec6ctzMtW80TiDvNTd2oFPi3VsKqSDVaJSJbL+4b6seyJ7G/UEPI+si6JhHBSLV2/9lNXNGLjClA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=16\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@cloudflare/workerd-darwin-arm64\": {\n+\t\t\t\"version\": \"1.20250428.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250428.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-/TB7bh7SIJ5f+6r4PHsAz7+9Qal/TK1cJuKFkUno1kqGlZbdrMwH0ATYwlWC/nBFeu2FB3NUolsTntEuy23hnQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=16\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@cloudflare/workerd-linux-64\": {\n+\t\t\t\"version\": \"1.20250428.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250428.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-9eCbj+R3CKqpiXP6DfAA20DxKge+OTj7Hyw3ZewiEhWH9INIHiJwJQYybu4iq9kJEGjnGvxgguLFjSCWm26hgg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=16\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@cloudflare/workerd-linux-arm64\": {\n+\t\t\t\"version\": \"1.20250428.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250428.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-D9NRBnW46nl1EQsP13qfkYb5lbt4C6nxl38SBKY/NOcZAUoHzNB5K0GaK8LxvpkM7X/97ySojlMfR5jh5DNXYQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=16\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@cloudflare/workerd-windows-64\": {\n+\t\t\t\"version\": \"1.20250428.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250428.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-RQCRj28eitjKD0tmei6iFOuWqMuHMHdNGEigRmbkmuTlpbWHNAoHikgCzZQ/dkKDdatA76TmcpbyECNf31oaTA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=16\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@cspotcode/source-map-support\": {\n+\t\t\t\"version\": \"0.8.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@jridgewell/trace-mapping\": \"0.3.9\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=12\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@emnapi/runtime\": {\n+\t\t\t\"version\": \"1.4.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"tslib\": \"^2.4.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/aix-ppc64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ppc64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"aix\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/android-arm\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"android\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/android-arm64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"android\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/android-x64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"android\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/darwin-arm64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/darwin-x64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/freebsd-arm64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"freebsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/freebsd-x64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"freebsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/linux-arm\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/linux-arm64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/linux-ia32\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ia32\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/linux-loong64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"loong64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/linux-mips64el\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"mips64el\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/linux-ppc64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ppc64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/linux-riscv64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"riscv64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/linux-s390x\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"s390x\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/linux-x64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/netbsd-arm64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"netbsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/netbsd-x64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"netbsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/openbsd-arm64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"openbsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/openbsd-x64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"openbsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/sunos-x64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"sunos\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/win32-arm64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/win32-ia32\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ia32\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@esbuild/win32-x64\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@fastify/busboy\": {\n+\t\t\t\"version\": \"2.1.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=14\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-darwin-arm64\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@img/sharp-libvips-darwin-arm64\": \"1.0.4\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-darwin-x64\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@img/sharp-libvips-darwin-x64\": \"1.0.4\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-libvips-darwin-arm64\": {\n+\t\t\t\"version\": \"1.0.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"LGPL-3.0-or-later\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-libvips-darwin-x64\": {\n+\t\t\t\"version\": \"1.0.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"LGPL-3.0-or-later\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-libvips-linux-arm\": {\n+\t\t\t\"version\": \"1.0.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"LGPL-3.0-or-later\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-libvips-linux-arm64\": {\n+\t\t\t\"version\": \"1.0.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"LGPL-3.0-or-later\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-libvips-linux-s390x\": {\n+\t\t\t\"version\": \"1.0.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"s390x\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"LGPL-3.0-or-later\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-libvips-linux-x64\": {\n+\t\t\t\"version\": \"1.0.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"LGPL-3.0-or-later\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-libvips-linuxmusl-arm64\": {\n+\t\t\t\"version\": \"1.0.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"LGPL-3.0-or-later\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-libvips-linuxmusl-x64\": {\n+\t\t\t\"version\": \"1.0.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"LGPL-3.0-or-later\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-linux-arm\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@img/sharp-libvips-linux-arm\": \"1.0.5\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-linux-arm64\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@img/sharp-libvips-linux-arm64\": \"1.0.4\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-linux-s390x\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"s390x\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@img/sharp-libvips-linux-s390x\": \"1.0.4\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-linux-x64\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@img/sharp-libvips-linux-x64\": \"1.0.4\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-linuxmusl-arm64\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@img/sharp-libvips-linuxmusl-arm64\": \"1.0.4\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-linuxmusl-x64\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@img/sharp-libvips-linuxmusl-x64\": \"1.0.4\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-wasm32\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"wasm32\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0 AND LGPL-3.0-or-later AND MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@emnapi/runtime\": \"^1.2.0\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-win32-ia32\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ia32\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0 AND LGPL-3.0-or-later\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@img/sharp-win32-x64\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0 AND LGPL-3.0-or-later\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@jridgewell/resolve-uri\": {\n+\t\t\t\"version\": \"3.1.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=6.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@jridgewell/sourcemap-codec\": {\n+\t\t\t\"version\": \"1.5.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/@jridgewell/trace-mapping\": {\n+\t\t\t\"version\": \"0.3.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@jridgewell/resolve-uri\": \"^3.0.3\",\n+\t\t\t\t\"@jridgewell/sourcemap-codec\": \"^1.4.10\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-android-arm-eabi\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"android\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-android-arm64\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"android\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-darwin-arm64\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-darwin-x64\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-freebsd-arm64\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"freebsd\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-freebsd-x64\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"freebsd\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-arm-gnueabihf\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-arm-musleabihf\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-arm64-gnu\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-arm64-musl\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-loongarch64-gnu\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"loong64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-powerpc64le-gnu\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ppc64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-riscv64-gnu\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"riscv64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-riscv64-musl\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"riscv64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-s390x-gnu\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"s390x\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-x64-gnu\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-linux-x64-musl\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-win32-arm64-msvc\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-win32-ia32-msvc\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ia32\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@rollup/rollup-win32-x64-msvc\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t]\n+\t\t},\n+\t\t\"node_modules/@types/estree\": {\n+\t\t\t\"version\": \"1.0.7\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz\",\n+\t\t\t\"integrity\": \"sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/@vitest/expect\": {\n+\t\t\t\"version\": \"3.0.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@vitest/spy\": \"3.0.9\",\n+\t\t\t\t\"@vitest/utils\": \"3.0.9\",\n+\t\t\t\t\"chai\": \"^5.2.0\",\n+\t\t\t\t\"tinyrainbow\": \"^2.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@vitest/mocker\": {\n+\t\t\t\"version\": \"3.0.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@vitest/spy\": \"3.0.9\",\n+\t\t\t\t\"estree-walker\": \"^3.0.3\",\n+\t\t\t\t\"magic-string\": \"^0.30.17\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t},\n+\t\t\t\"peerDependencies\": {\n+\t\t\t\t\"msw\": \"^2.4.9\",\n+\t\t\t\t\"vite\": \"^5.0.0 || ^6.0.0\"\n+\t\t\t},\n+\t\t\t\"peerDependenciesMeta\": {\n+\t\t\t\t\"msw\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"vite\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t}\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@vitest/pretty-format\": {\n+\t\t\t\"version\": \"3.1.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-R0xAiHuWeDjTSB3kQ3OQpT8Rx3yhdOAIm/JM4axXxnG7Q/fS8XUwggv/A4xzbQA+drYRjzkMnpYnOGAc4oeq8w==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"tinyrainbow\": \"^2.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@vitest/runner\": {\n+\t\t\t\"version\": \"3.0.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@vitest/runner/-/runner-3.0.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@vitest/utils\": \"3.0.9\",\n+\t\t\t\t\"pathe\": \"^2.0.3\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@vitest/snapshot\": {\n+\t\t\t\"version\": \"3.0.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@vitest/pretty-format\": \"3.0.9\",\n+\t\t\t\t\"magic-string\": \"^0.30.17\",\n+\t\t\t\t\"pathe\": \"^2.0.3\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format\": {\n+\t\t\t\"version\": \"3.0.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"tinyrainbow\": \"^2.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@vitest/spy\": {\n+\t\t\t\"version\": \"3.0.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"tinyspy\": \"^3.0.2\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@vitest/utils\": {\n+\t\t\t\"version\": \"3.0.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@vitest/pretty-format\": \"3.0.9\",\n+\t\t\t\t\"loupe\": \"^3.1.3\",\n+\t\t\t\t\"tinyrainbow\": \"^2.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/@vitest/utils/node_modules/@vitest/pretty-format\": {\n+\t\t\t\"version\": \"3.0.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"tinyrainbow\": \"^2.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/acorn\": {\n+\t\t\t\"version\": \"8.14.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"bin\": {\n+\t\t\t\t\"acorn\": \"bin/acorn\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=0.4.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/acorn-walk\": {\n+\t\t\t\"version\": \"8.3.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=0.4.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/as-table\": {\n+\t\t\t\"version\": \"1.0.55\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz\",\n+\t\t\t\"integrity\": \"sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"printable-characters\": \"^1.0.42\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/assertion-error\": {\n+\t\t\t\"version\": \"2.0.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=12\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/birpc\": {\n+\t\t\t\"version\": \"0.2.14\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/birpc/-/birpc-0.2.14.tgz\",\n+\t\t\t\"integrity\": \"sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://github.com/sponsors/antfu\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/blake3-wasm\": {\n+\t\t\t\"version\": \"2.1.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/cac\": {\n+\t\t\t\"version\": \"6.7.14\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/cac/-/cac-6.7.14.tgz\",\n+\t\t\t\"integrity\": \"sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=8\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/chai\": {\n+\t\t\t\"version\": \"5.2.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/chai/-/chai-5.2.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"assertion-error\": \"^2.0.1\",\n+\t\t\t\t\"check-error\": \"^2.1.1\",\n+\t\t\t\t\"deep-eql\": \"^5.0.1\",\n+\t\t\t\t\"loupe\": \"^3.1.0\",\n+\t\t\t\t\"pathval\": \"^2.0.0\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=12\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/check-error\": {\n+\t\t\t\"version\": \"2.1.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">= 16\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/cjs-module-lexer\": {\n+\t\t\t\"version\": \"1.4.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/color\": {\n+\t\t\t\"version\": \"4.2.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/color/-/color-4.2.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"color-convert\": \"^2.0.1\",\n+\t\t\t\t\"color-string\": \"^1.9.0\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=12.5.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/color-convert\": {\n+\t\t\t\"version\": \"2.0.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"color-name\": \"~1.1.4\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=7.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/color-name\": {\n+\t\t\t\"version\": \"1.1.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true\n+\t\t},\n+\t\t\"node_modules/color-string\": {\n+\t\t\t\"version\": \"1.9.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"color-name\": \"^1.0.0\",\n+\t\t\t\t\"simple-swizzle\": \"^0.2.2\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/cookie\": {\n+\t\t\t\"version\": \"0.7.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">= 0.6\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/data-uri-to-buffer\": {\n+\t\t\t\"version\": \"2.0.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/debug\": {\n+\t\t\t\"version\": \"4.4.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"ms\": \"^2.1.3\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=6.0\"\n+\t\t\t},\n+\t\t\t\"peerDependenciesMeta\": {\n+\t\t\t\t\"supports-color\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t}\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/deep-eql\": {\n+\t\t\t\"version\": \"5.0.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=6\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/defu\": {\n+\t\t\t\"version\": \"6.1.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/defu/-/defu-6.1.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/detect-libc\": {\n+\t\t\t\"version\": \"2.0.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=8\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/devalue\": {\n+\t\t\t\"version\": \"4.3.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/devalue/-/devalue-4.3.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/es-module-lexer\": {\n+\t\t\t\"version\": \"1.7.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/esbuild\": {\n+\t\t\t\"version\": \"0.25.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"hasInstallScript\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"bin\": {\n+\t\t\t\t\"esbuild\": \"bin/esbuild\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@esbuild/aix-ppc64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/android-arm\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/android-arm64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/android-x64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/darwin-arm64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/darwin-x64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/freebsd-arm64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/freebsd-x64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/linux-arm\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/linux-arm64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/linux-ia32\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/linux-loong64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/linux-mips64el\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/linux-ppc64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/linux-riscv64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/linux-s390x\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/linux-x64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/netbsd-arm64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/netbsd-x64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/openbsd-arm64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/openbsd-x64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/sunos-x64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/win32-arm64\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/win32-ia32\": \"0.25.3\",\n+\t\t\t\t\"@esbuild/win32-x64\": \"0.25.3\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/estree-walker\": {\n+\t\t\t\"version\": \"3.0.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@types/estree\": \"^1.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/exit-hook\": {\n+\t\t\t\"version\": \"2.2.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=6\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://github.com/sponsors/sindresorhus\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/expect-type\": {\n+\t\t\t\"version\": \"1.2.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=12.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/exsolve\": {\n+\t\t\t\"version\": \"1.0.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/fdir\": {\n+\t\t\t\"version\": \"6.4.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"peerDependencies\": {\n+\t\t\t\t\"picomatch\": \"^3 || ^4\"\n+\t\t\t},\n+\t\t\t\"peerDependenciesMeta\": {\n+\t\t\t\t\"picomatch\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t}\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/fsevents\": {\n+\t\t\t\"version\": \"2.3.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"hasInstallScript\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/get-source\": {\n+\t\t\t\"version\": \"2.0.12\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz\",\n+\t\t\t\"integrity\": \"sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Unlicense\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"data-uri-to-buffer\": \"^2.0.0\",\n+\t\t\t\t\"source-map\": \"^0.6.1\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/glob-to-regexp\": {\n+\t\t\t\"version\": \"0.4.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"BSD-2-Clause\"\n+\t\t},\n+\t\t\"node_modules/is-arrayish\": {\n+\t\t\t\"version\": \"0.3.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true\n+\t\t},\n+\t\t\"node_modules/loupe\": {\n+\t\t\t\"version\": \"3.1.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/magic-string\": {\n+\t\t\t\"version\": \"0.30.17\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz\",\n+\t\t\t\"integrity\": \"sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@jridgewell/sourcemap-codec\": \"^1.5.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/mime\": {\n+\t\t\t\"version\": \"3.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/mime/-/mime-3.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"bin\": {\n+\t\t\t\t\"mime\": \"cli.js\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=10.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/miniflare\": {\n+\t\t\t\"version\": \"4.20250428.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/miniflare/-/miniflare-4.20250428.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-M3qcJXjeAEimHrEeWXEhrJiC3YHB5M3QSqqK67pOTI+lHn0QyVG/2iFUjVJ/nv+i10uxeAEva8GRGeu+tKRCmQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@cspotcode/source-map-support\": \"0.8.1\",\n+\t\t\t\t\"acorn\": \"8.14.0\",\n+\t\t\t\t\"acorn-walk\": \"8.3.2\",\n+\t\t\t\t\"exit-hook\": \"2.2.1\",\n+\t\t\t\t\"glob-to-regexp\": \"0.4.1\",\n+\t\t\t\t\"stoppable\": \"1.1.0\",\n+\t\t\t\t\"undici\": \"^5.28.5\",\n+\t\t\t\t\"workerd\": \"1.20250428.0\",\n+\t\t\t\t\"ws\": \"8.18.0\",\n+\t\t\t\t\"youch\": \"3.3.4\",\n+\t\t\t\t\"zod\": \"3.22.3\"\n+\t\t\t},\n+\t\t\t\"bin\": {\n+\t\t\t\t\"miniflare\": \"bootstrap.js\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/miniflare/node_modules/zod\": {\n+\t\t\t\"version\": \"3.22.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.22.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://github.com/sponsors/colinhacks\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/ms\": {\n+\t\t\t\"version\": \"2.1.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/mustache\": {\n+\t\t\t\"version\": \"4.2.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"bin\": {\n+\t\t\t\t\"mustache\": \"bin/mustache\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/nanoid\": {\n+\t\t\t\"version\": \"3.3.11\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz\",\n+\t\t\t\"integrity\": \"sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"funding\": [\n+\t\t\t\t{\n+\t\t\t\t\t\"type\": \"github\",\n+\t\t\t\t\t\"url\": \"https://github.com/sponsors/ai\"\n+\t\t\t\t}\n+\t\t\t],\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"bin\": {\n+\t\t\t\t\"nanoid\": \"bin/nanoid.cjs\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^10 || ^12 || ^13.7 || ^14 || >=15.0.1\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/ohash\": {\n+\t\t\t\"version\": \"2.0.11\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz\",\n+\t\t\t\"integrity\": \"sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/path-to-regexp\": {\n+\t\t\t\"version\": \"6.3.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/pathe\": {\n+\t\t\t\"version\": \"2.0.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/pathval\": {\n+\t\t\t\"version\": \"2.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">= 14.16\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/picocolors\": {\n+\t\t\t\"version\": \"1.1.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"ISC\"\n+\t\t},\n+\t\t\"node_modules/picomatch\": {\n+\t\t\t\"version\": \"4.0.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=12\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://github.com/sponsors/jonschlinkert\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/postcss\": {\n+\t\t\t\"version\": \"8.5.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"funding\": [\n+\t\t\t\t{\n+\t\t\t\t\t\"type\": \"opencollective\",\n+\t\t\t\t\t\"url\": \"https://opencollective.com/postcss/\"\n+\t\t\t\t},\n+\t\t\t\t{\n+\t\t\t\t\t\"type\": \"tidelift\",\n+\t\t\t\t\t\"url\": \"https://tidelift.com/funding/github/npm/postcss\"\n+\t\t\t\t},\n+\t\t\t\t{\n+\t\t\t\t\t\"type\": \"github\",\n+\t\t\t\t\t\"url\": \"https://github.com/sponsors/ai\"\n+\t\t\t\t}\n+\t\t\t],\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"nanoid\": \"^3.3.8\",\n+\t\t\t\t\"picocolors\": \"^1.1.1\",\n+\t\t\t\t\"source-map-js\": \"^1.2.1\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^10 || ^12 || >=14\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/printable-characters\": {\n+\t\t\t\"version\": \"1.0.42\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz\",\n+\t\t\t\"integrity\": \"sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Unlicense\"\n+\t\t},\n+\t\t\"node_modules/rollup\": {\n+\t\t\t\"version\": \"4.40.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/rollup/-/rollup-4.40.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@types/estree\": \"1.0.7\"\n+\t\t\t},\n+\t\t\t\"bin\": {\n+\t\t\t\t\"rollup\": \"dist/bin/rollup\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18.0.0\",\n+\t\t\t\t\"npm\": \">=8.0.0\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@rollup/rollup-android-arm-eabi\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-android-arm64\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-darwin-arm64\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-darwin-x64\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-freebsd-arm64\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-freebsd-x64\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-arm-gnueabihf\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-arm-musleabihf\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-arm64-gnu\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-arm64-musl\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-loongarch64-gnu\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-powerpc64le-gnu\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-riscv64-gnu\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-riscv64-musl\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-s390x-gnu\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-x64-gnu\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-linux-x64-musl\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-win32-arm64-msvc\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-win32-ia32-msvc\": \"4.40.1\",\n+\t\t\t\t\"@rollup/rollup-win32-x64-msvc\": \"4.40.1\",\n+\t\t\t\t\"fsevents\": \"~2.3.2\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/semver\": {\n+\t\t\t\"version\": \"7.7.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/semver/-/semver-7.7.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"ISC\",\n+\t\t\t\"bin\": {\n+\t\t\t\t\"semver\": \"bin/semver.js\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=10\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/sharp\": {\n+\t\t\t\"version\": \"0.33.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"hasInstallScript\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"color\": \"^4.2.3\",\n+\t\t\t\t\"detect-libc\": \"^2.0.3\",\n+\t\t\t\t\"semver\": \"^7.6.3\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.17.0 || ^20.3.0 || >=21.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/libvips\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@img/sharp-darwin-arm64\": \"0.33.5\",\n+\t\t\t\t\"@img/sharp-darwin-x64\": \"0.33.5\",\n+\t\t\t\t\"@img/sharp-libvips-darwin-arm64\": \"1.0.4\",\n+\t\t\t\t\"@img/sharp-libvips-darwin-x64\": \"1.0.4\",\n+\t\t\t\t\"@img/sharp-libvips-linux-arm\": \"1.0.5\",\n+\t\t\t\t\"@img/sharp-libvips-linux-arm64\": \"1.0.4\",\n+\t\t\t\t\"@img/sharp-libvips-linux-s390x\": \"1.0.4\",\n+\t\t\t\t\"@img/sharp-libvips-linux-x64\": \"1.0.4\",\n+\t\t\t\t\"@img/sharp-libvips-linuxmusl-arm64\": \"1.0.4\",\n+\t\t\t\t\"@img/sharp-libvips-linuxmusl-x64\": \"1.0.4\",\n+\t\t\t\t\"@img/sharp-linux-arm\": \"0.33.5\",\n+\t\t\t\t\"@img/sharp-linux-arm64\": \"0.33.5\",\n+\t\t\t\t\"@img/sharp-linux-s390x\": \"0.33.5\",\n+\t\t\t\t\"@img/sharp-linux-x64\": \"0.33.5\",\n+\t\t\t\t\"@img/sharp-linuxmusl-arm64\": \"0.33.5\",\n+\t\t\t\t\"@img/sharp-linuxmusl-x64\": \"0.33.5\",\n+\t\t\t\t\"@img/sharp-wasm32\": \"0.33.5\",\n+\t\t\t\t\"@img/sharp-win32-ia32\": \"0.33.5\",\n+\t\t\t\t\"@img/sharp-win32-x64\": \"0.33.5\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/siginfo\": {\n+\t\t\t\"version\": \"2.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"ISC\"\n+\t\t},\n+\t\t\"node_modules/simple-swizzle\": {\n+\t\t\t\"version\": \"0.2.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"is-arrayish\": \"^0.3.1\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/source-map\": {\n+\t\t\t\"version\": \"0.6.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"BSD-3-Clause\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=0.10.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/source-map-js\": {\n+\t\t\t\"version\": \"1.2.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"BSD-3-Clause\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=0.10.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/stackback\": {\n+\t\t\t\"version\": \"0.0.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/stacktracey\": {\n+\t\t\t\"version\": \"2.1.8\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz\",\n+\t\t\t\"integrity\": \"sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"Unlicense\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"as-table\": \"^1.0.36\",\n+\t\t\t\t\"get-source\": \"^2.0.12\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/std-env\": {\n+\t\t\t\"version\": \"3.9.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/stoppable\": {\n+\t\t\t\"version\": \"1.1.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=4\",\n+\t\t\t\t\"npm\": \">=6\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/tinybench\": {\n+\t\t\t\"version\": \"2.9.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/tinyexec\": {\n+\t\t\t\"version\": \"0.3.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/tinyglobby\": {\n+\t\t\t\"version\": \"0.2.13\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz\",\n+\t\t\t\"integrity\": \"sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"fdir\": \"^6.4.4\",\n+\t\t\t\t\"picomatch\": \"^4.0.2\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=12.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://github.com/sponsors/SuperchupuDev\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/tinypool\": {\n+\t\t\t\"version\": \"1.0.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.0.0 || >=20.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/tinyrainbow\": {\n+\t\t\t\"version\": \"2.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=14.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/tinyspy\": {\n+\t\t\t\"version\": \"3.0.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=14.0.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/tslib\": {\n+\t\t\t\"version\": \"2.8.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"0BSD\",\n+\t\t\t\"optional\": true\n+\t\t},\n+\t\t\"node_modules/ufo\": {\n+\t\t\t\"version\": \"1.6.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\"\n+\t\t},\n+\t\t\"node_modules/undici\": {\n+\t\t\t\"version\": \"5.29.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/undici/-/undici-5.29.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@fastify/busboy\": \"^2.0.0\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=14.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/unenv\": {\n+\t\t\t\"version\": \"2.0.0-rc.15\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.15.tgz\",\n+\t\t\t\"integrity\": \"sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"defu\": \"^6.1.4\",\n+\t\t\t\t\"exsolve\": \"^1.0.4\",\n+\t\t\t\t\"ohash\": \"^2.0.11\",\n+\t\t\t\t\"pathe\": \"^2.0.3\",\n+\t\t\t\t\"ufo\": \"^1.5.4\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/vite\": {\n+\t\t\t\"version\": \"6.3.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/vite/-/vite-6.3.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"esbuild\": \"^0.25.0\",\n+\t\t\t\t\"fdir\": \"^6.4.4\",\n+\t\t\t\t\"picomatch\": \"^4.0.2\",\n+\t\t\t\t\"postcss\": \"^8.5.3\",\n+\t\t\t\t\"rollup\": \"^4.34.9\",\n+\t\t\t\t\"tinyglobby\": \"^0.2.13\"\n+\t\t\t},\n+\t\t\t\"bin\": {\n+\t\t\t\t\"vite\": \"bin/vite.js\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://github.com/vitejs/vite?sponsor=1\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"fsevents\": \"~2.3.3\"\n+\t\t\t},\n+\t\t\t\"peerDependencies\": {\n+\t\t\t\t\"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n+\t\t\t\t\"jiti\": \">=1.21.0\",\n+\t\t\t\t\"less\": \"*\",\n+\t\t\t\t\"lightningcss\": \"^1.21.0\",\n+\t\t\t\t\"sass\": \"*\",\n+\t\t\t\t\"sass-embedded\": \"*\",\n+\t\t\t\t\"stylus\": \"*\",\n+\t\t\t\t\"sugarss\": \"*\",\n+\t\t\t\t\"terser\": \"^5.16.0\",\n+\t\t\t\t\"tsx\": \"^4.8.1\",\n+\t\t\t\t\"yaml\": \"^2.4.2\"\n+\t\t\t},\n+\t\t\t\"peerDependenciesMeta\": {\n+\t\t\t\t\"@types/node\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"jiti\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"less\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"lightningcss\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"sass\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"sass-embedded\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"stylus\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"sugarss\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"terser\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"tsx\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"yaml\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t}\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/vite-node\": {\n+\t\t\t\"version\": \"3.0.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/vite-node/-/vite-node-3.0.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"cac\": \"^6.7.14\",\n+\t\t\t\t\"debug\": \"^4.4.0\",\n+\t\t\t\t\"es-module-lexer\": \"^1.6.0\",\n+\t\t\t\t\"pathe\": \"^2.0.3\",\n+\t\t\t\t\"vite\": \"^5.0.0 || ^6.0.0\"\n+\t\t\t},\n+\t\t\t\"bin\": {\n+\t\t\t\t\"vite-node\": \"vite-node.mjs\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/vitest\": {\n+\t\t\t\"version\": \"3.0.9\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/vitest/-/vitest-3.0.9.tgz\",\n+\t\t\t\"integrity\": \"sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@vitest/expect\": \"3.0.9\",\n+\t\t\t\t\"@vitest/mocker\": \"3.0.9\",\n+\t\t\t\t\"@vitest/pretty-format\": \"^3.0.9\",\n+\t\t\t\t\"@vitest/runner\": \"3.0.9\",\n+\t\t\t\t\"@vitest/snapshot\": \"3.0.9\",\n+\t\t\t\t\"@vitest/spy\": \"3.0.9\",\n+\t\t\t\t\"@vitest/utils\": \"3.0.9\",\n+\t\t\t\t\"chai\": \"^5.2.0\",\n+\t\t\t\t\"debug\": \"^4.4.0\",\n+\t\t\t\t\"expect-type\": \"^1.1.0\",\n+\t\t\t\t\"magic-string\": \"^0.30.17\",\n+\t\t\t\t\"pathe\": \"^2.0.3\",\n+\t\t\t\t\"std-env\": \"^3.8.0\",\n+\t\t\t\t\"tinybench\": \"^2.9.0\",\n+\t\t\t\t\"tinyexec\": \"^0.3.2\",\n+\t\t\t\t\"tinypool\": \"^1.0.2\",\n+\t\t\t\t\"tinyrainbow\": \"^2.0.0\",\n+\t\t\t\t\"vite\": \"^5.0.0 || ^6.0.0\",\n+\t\t\t\t\"vite-node\": \"3.0.9\",\n+\t\t\t\t\"why-is-node-running\": \"^2.3.0\"\n+\t\t\t},\n+\t\t\t\"bin\": {\n+\t\t\t\t\"vitest\": \"vitest.mjs\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\"\n+\t\t\t},\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://opencollective.com/vitest\"\n+\t\t\t},\n+\t\t\t\"peerDependencies\": {\n+\t\t\t\t\"@edge-runtime/vm\": \"*\",\n+\t\t\t\t\"@types/debug\": \"^4.1.12\",\n+\t\t\t\t\"@types/node\": \"^18.0.0 || ^20.0.0 || >=22.0.0\",\n+\t\t\t\t\"@vitest/browser\": \"3.0.9\",\n+\t\t\t\t\"@vitest/ui\": \"3.0.9\",\n+\t\t\t\t\"happy-dom\": \"*\",\n+\t\t\t\t\"jsdom\": \"*\"\n+\t\t\t},\n+\t\t\t\"peerDependenciesMeta\": {\n+\t\t\t\t\"@edge-runtime/vm\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"@types/debug\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"@types/node\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"@vitest/browser\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"@vitest/ui\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"happy-dom\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"jsdom\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t}\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/why-is-node-running\": {\n+\t\t\t\"version\": \"2.3.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"siginfo\": \"^2.0.0\",\n+\t\t\t\t\"stackback\": \"0.0.2\"\n+\t\t\t},\n+\t\t\t\"bin\": {\n+\t\t\t\t\"why-is-node-running\": \"cli.js\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=8\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/workerd\": {\n+\t\t\t\"version\": \"1.20250428.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/workerd/-/workerd-1.20250428.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-JJNWkHkwPQKQdvtM9UORijgYdcdJsihA4SfYjwh02IUQsdMyZ9jizV1sX9yWi9B9ptlohTW8UNHJEATuphGgdg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"hasInstallScript\": true,\n+\t\t\t\"license\": \"Apache-2.0\",\n+\t\t\t\"bin\": {\n+\t\t\t\t\"workerd\": \"bin/workerd\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=16\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@cloudflare/workerd-darwin-64\": \"1.20250428.0\",\n+\t\t\t\t\"@cloudflare/workerd-darwin-arm64\": \"1.20250428.0\",\n+\t\t\t\t\"@cloudflare/workerd-linux-64\": \"1.20250428.0\",\n+\t\t\t\t\"@cloudflare/workerd-linux-arm64\": \"1.20250428.0\",\n+\t\t\t\t\"@cloudflare/workerd-windows-64\": \"1.20250428.0\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler\": {\n+\t\t\t\"version\": \"4.14.1\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/wrangler/-/wrangler-4.14.1.tgz\",\n+\t\t\t\"integrity\": \"sha512-EU7IThP7i68TBftJJSveogvWZ5k/WRijcJh3UclDWiWWhDZTPbL6LOJEFhHKqFzHOaC4Y2Aewt48rfTz0e7oCw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT OR Apache-2.0\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"@cloudflare/kv-asset-handler\": \"0.4.0\",\n+\t\t\t\t\"@cloudflare/unenv-preset\": \"2.3.1\",\n+\t\t\t\t\"blake3-wasm\": \"2.1.5\",\n+\t\t\t\t\"esbuild\": \"0.25.2\",\n+\t\t\t\t\"miniflare\": \"4.20250428.1\",\n+\t\t\t\t\"path-to-regexp\": \"6.3.0\",\n+\t\t\t\t\"unenv\": \"2.0.0-rc.15\",\n+\t\t\t\t\"workerd\": \"1.20250428.0\"\n+\t\t\t},\n+\t\t\t\"bin\": {\n+\t\t\t\t\"wrangler\": \"bin/wrangler.js\",\n+\t\t\t\t\"wrangler2\": \"bin/wrangler.js\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18.0.0\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"fsevents\": \"~2.3.2\",\n+\t\t\t\t\"sharp\": \"^0.33.5\"\n+\t\t\t},\n+\t\t\t\"peerDependencies\": {\n+\t\t\t\t\"@cloudflare/workers-types\": \"^4.20250428.0\"\n+\t\t\t},\n+\t\t\t\"peerDependenciesMeta\": {\n+\t\t\t\t\"@cloudflare/workers-types\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t}\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/aix-ppc64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ppc64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"aix\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/android-arm\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"android\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/android-arm64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"android\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/android-x64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"android\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/darwin-arm64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/darwin-x64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"darwin\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/freebsd-arm64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"freebsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/freebsd-x64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"freebsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/linux-arm\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/linux-arm64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/linux-ia32\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ia32\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/linux-loong64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"loong64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/linux-mips64el\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"mips64el\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/linux-ppc64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ppc64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/linux-riscv64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"riscv64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/linux-s390x\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"s390x\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/linux-x64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"linux\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/netbsd-arm64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"netbsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/netbsd-x64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"netbsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/openbsd-arm64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"openbsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/openbsd-x64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"openbsd\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/sunos-x64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"sunos\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/win32-arm64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"arm64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/win32-ia32\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"ia32\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/@esbuild/win32-x64\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==\",\n+\t\t\t\"cpu\": [\n+\t\t\t\t\"x64\"\n+\t\t\t],\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"optional\": true,\n+\t\t\t\"os\": [\n+\t\t\t\t\"win32\"\n+\t\t\t],\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/wrangler/node_modules/esbuild\": {\n+\t\t\t\"version\": \"0.25.2\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz\",\n+\t\t\t\"integrity\": \"sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"hasInstallScript\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"bin\": {\n+\t\t\t\t\"esbuild\": \"bin/esbuild\"\n+\t\t\t},\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=18\"\n+\t\t\t},\n+\t\t\t\"optionalDependencies\": {\n+\t\t\t\t\"@esbuild/aix-ppc64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/android-arm\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/android-arm64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/android-x64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/darwin-arm64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/darwin-x64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/freebsd-arm64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/freebsd-x64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/linux-arm\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/linux-arm64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/linux-ia32\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/linux-loong64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/linux-mips64el\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/linux-ppc64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/linux-riscv64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/linux-s390x\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/linux-x64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/netbsd-arm64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/netbsd-x64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/openbsd-arm64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/openbsd-x64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/sunos-x64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/win32-arm64\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/win32-ia32\": \"0.25.2\",\n+\t\t\t\t\"@esbuild/win32-x64\": \"0.25.2\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/ws\": {\n+\t\t\t\"version\": \"8.18.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/ws/-/ws-8.18.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"engines\": {\n+\t\t\t\t\"node\": \">=10.0.0\"\n+\t\t\t},\n+\t\t\t\"peerDependencies\": {\n+\t\t\t\t\"bufferutil\": \"^4.0.1\",\n+\t\t\t\t\"utf-8-validate\": \">=5.0.2\"\n+\t\t\t},\n+\t\t\t\"peerDependenciesMeta\": {\n+\t\t\t\t\"bufferutil\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t},\n+\t\t\t\t\"utf-8-validate\": {\n+\t\t\t\t\t\"optional\": true\n+\t\t\t\t}\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/youch\": {\n+\t\t\t\"version\": \"3.3.4\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/youch/-/youch-3.3.4.tgz\",\n+\t\t\t\"integrity\": \"sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"dependencies\": {\n+\t\t\t\t\"cookie\": \"^0.7.1\",\n+\t\t\t\t\"mustache\": \"^4.2.0\",\n+\t\t\t\t\"stacktracey\": \"^2.1.8\"\n+\t\t\t}\n+\t\t},\n+\t\t\"node_modules/zod\": {\n+\t\t\t\"version\": \"3.24.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.24.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==\",\n+\t\t\t\"dev\": true,\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"funding\": {\n+\t\t\t\t\"url\": \"https://github.com/sponsors/colinhacks\"\n+\t\t\t}\n+\t\t}\n+\t}\n+}\ndiff --git a/camo/package.json b/camo/package.json\nnew file mode 100644\nindex 0000000..e977e42\n--- /dev/null\n+++ b/camo/package.json\n@@ -0,0 +1,16 @@\n+{\n+\t\"name\": \"camo\",\n+\t\"version\": \"0.0.0\",\n+\t\"private\": true,\n+\t\"scripts\": {\n+\t\t\"deploy\": \"wrangler deploy\",\n+\t\t\"dev\": \"wrangler dev\",\n+\t\t\"start\": \"wrangler dev\",\n+\t\t\"test\": \"vitest\"\n+\t},\n+\t\"devDependencies\": {\n+\t\t\"@cloudflare/vitest-pool-workers\": \"^0.8.19\",\n+\t\t\"vitest\": \"~3.0.7\",\n+\t\t\"wrangler\": \"^4.14.1\"\n+\t}\n+}\ndiff --git a/camo/readme.md b/camo/readme.md\nnew file mode 100644\nindex 0000000..d5d93fd\n--- /dev/null\n+++ b/camo/readme.md\n@@ -0,0 +1,17 @@\n+# camo\n+\n+Camo is Tangled's \"camouflage\" service much like that of [GitHub's](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/about-anonymized-urls).\n+\n+Camo uses a shared secret `CAMO_SHARED_SECRET` to verify HMAC signatures. URLs are of the form:\n+\n+```\n+https://camo.tangled.sh/<signature>/<hex-encoded-origin-url>\n+```\n+\n+It's pretty barebones for the moment and doesn't support a whole lot of what the\n+big G's does. Ours is a Cloudflare Worker, deployed using `wrangler` like so:\n+\n+```\n+npx wrangler deploy\n+npx wrangler secrets put CAMO_SHARED_SECRET\n+```\ndiff --git a/camo/src/index.js b/camo/src/index.js\nnew file mode 100644\nindex 0000000..6b0ecdf\n--- /dev/null\n+++ b/camo/src/index.js\n@@ -0,0 +1,101 @@\n+export default {\n+  async fetch(request, env) {\n+    const url = new URL(request.url);\n+\n+    if (url.pathname === \"/\" || url.pathname === \"\") {\n+      return new Response(\n+        \"This is Tangled's Camo service. It proxies images served from knots via Cloudflare.\",\n+      );\n+    }\n+\n+    const cache = caches.default;\n+\n+    const pathParts = url.pathname.slice(1).split(\"/\");\n+    if (pathParts.length < 2) {\n+      return new Response(\"Bad URL\", { status: 400 });\n+    }\n+\n+    const [signatureHex, ...hexUrlParts] = pathParts;\n+    const hexUrl = hexUrlParts.join(\"\");\n+    const urlBytes = Uint8Array.from(\n+      hexUrl.match(/.{2}/g).map((b) => parseInt(b, 16)),\n+    );\n+    const targetUrl = new TextDecoder().decode(urlBytes);\n+\n+    // check if we have an entry in the cache with the target url\n+    let cacheKey = new Request(targetUrl);\n+    let response = await cache.match(cacheKey);\n+    if (response) {\n+      return response;\n+    }\n+\n+    // else compute the signature\n+    const key = await crypto.subtle.importKey(\n+      \"raw\",\n+      new TextEncoder().encode(env.CAMO_SHARED_SECRET),\n+      { name: \"HMAC\", hash: \"SHA-256\" },\n+      false,\n+      [\"sign\", \"verify\"],\n+    );\n+\n+    const computedSigBuffer = await crypto.subtle.sign(\"HMAC\", key, urlBytes);\n+    const computedSig = Array.from(new Uint8Array(computedSigBuffer))\n+      .map((b) => b.toString(16).padStart(2, \"0\"))\n+      .join(\"\");\n+\n+    console.log({\n+      level: \"debug\",\n+      message: \"camo target: \" + targetUrl,\n+      computedSignature: computedSig,\n+      providedSignature: signatureHex,\n+      targetUrl: targetUrl,\n+    });\n+\n+    const sigBytes = Uint8Array.from(\n+      signatureHex.match(/.{2}/g).map((b) => parseInt(b, 16)),\n+    );\n+    const valid = await crypto.subtle.verify(\"HMAC\", key, sigBytes, urlBytes);\n+\n+    if (!valid) {\n+      return new Response(\"Invalid signature\", { status: 403 });\n+    }\n+\n+    let parsedUrl;\n+    try {\n+      parsedUrl = new URL(targetUrl);\n+      if (![\"https:\", \"http:\"].includes(parsedUrl.protocol)) {\n+        return new Response(\"Only HTTP(S) allowed\", { status: 400 });\n+      }\n+    } catch {\n+      return new Response(\"Malformed URL\", { status: 400 });\n+    }\n+\n+    // fetch from the parsed URL\n+    const res = await fetch(parsedUrl.toString(), {\n+      headers: { \"User-Agent\": \"Tangled Camo v0.1.0\" },\n+    });\n+\n+    const allowedMimeTypes = require(\"./mimetypes.json\");\n+\n+    const contentType =\n+      res.headers.get(\"Content-Type\") || \"application/octet-stream\";\n+\n+    if (!allowedMimeTypes.includes(contentType.split(\";\")[0].trim())) {\n+      return new Response(\"Unsupported media type\", { status: 415 });\n+    }\n+\n+    const headers = new Headers();\n+    headers.set(\"Content-Type\", contentType);\n+    headers.set(\"Cache-Control\", \"public, max-age=86400, immutable\");\n+\n+    // serve and cache it with cf\n+    response = new Response(await res.arrayBuffer(), {\n+      status: res.status,\n+      headers,\n+    });\n+\n+    await cache.put(cacheKey, response.clone());\n+\n+    return response;\n+  },\n+};\ndiff --git a/camo/src/mimetypes.json b/camo/src/mimetypes.json\nnew file mode 100644\nindex 0000000..5804151\n--- /dev/null\n+++ b/camo/src/mimetypes.json\n@@ -0,0 +1,45 @@\n+[\n+  \"image/bmp\",\n+  \"image/cgm\",\n+  \"image/g3fax\",\n+  \"image/gif\",\n+  \"image/ief\",\n+  \"image/jp2\",\n+  \"image/jpeg\",\n+  \"image/jpg\",\n+  \"image/pict\",\n+  \"image/png\",\n+  \"image/prs.btif\",\n+  \"image/svg+xml\",\n+  \"image/tiff\",\n+  \"image/vnd.adobe.photoshop\",\n+  \"image/vnd.djvu\",\n+  \"image/vnd.dwg\",\n+  \"image/vnd.dxf\",\n+  \"image/vnd.fastbidsheet\",\n+  \"image/vnd.fpx\",\n+  \"image/vnd.fst\",\n+  \"image/vnd.fujixerox.edmics-mmr\",\n+  \"image/vnd.fujixerox.edmics-rlc\",\n+  \"image/vnd.microsoft.icon\",\n+  \"image/vnd.ms-modi\",\n+  \"image/vnd.net-fpx\",\n+  \"image/vnd.wap.wbmp\",\n+  \"image/vnd.xiff\",\n+  \"image/webp\",\n+  \"image/x-cmu-raster\",\n+  \"image/x-cmx\",\n+  \"image/x-icon\",\n+  \"image/x-macpaint\",\n+  \"image/x-pcx\",\n+  \"image/x-pict\",\n+  \"image/x-portable-anymap\",\n+  \"image/x-portable-bitmap\",\n+  \"image/x-portable-graymap\",\n+  \"image/x-portable-pixmap\",\n+  \"image/x-quicktime\",\n+  \"image/x-rgb\",\n+  \"image/x-xbitmap\",\n+  \"image/x-xpixmap\",\n+  \"image/x-xwindowdump\"\n+]\ndiff --git a/camo/wrangler.jsonc b/camo/wrangler.jsonc\nnew file mode 100644\nindex 0000000..bd7957e\n--- /dev/null\n+++ b/camo/wrangler.jsonc\n@@ -0,0 +1,20 @@\n+/**\n+ * For more details on how to configure Wrangler, refer to:\n+ * https://developers.cloudflare.com/workers/wrangler/configuration/\n+ */\n+{\n+  \"$schema\": \"node_modules/wrangler/config-schema.json\",\n+  \"name\": \"camo\",\n+  \"main\": \"src/index.js\",\n+  \"compatibility_date\": \"2025-04-30\",\n+  \"observability\": {\n+    \"enabled\": true,\n+  },\n+\n+  \"routes\": [\n+    {\n+      \"pattern\": \"camo.tangled.sh\",\n+      \"custom_domain\": true,\n+    },\n+  ],\n+}\ndiff --git a/flake.lock b/flake.lock\nindex e3d8386..c715560 100644\n--- a/flake.lock\n+++ b/flake.lock\n@@ -64,7 +64,7 @@\n     \"inter-fonts-src\": {\n       \"flake\": false,\n       \"locked\": {\n-        \"lastModified\": 1731687360,\n+        \"lastModified\": 1731680160,\n         \"narHash\": \"sha256-5vdKKvHAeZi6igrfpbOdhZlDX2/5+UvzlnCQV6DdqoQ=\",\n         \"type\": \"tarball\",\n         \"url\": \"https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip\"\n@@ -89,11 +89,11 @@\n     },\n     \"nixpkgs\": {\n       \"locked\": {\n-        \"lastModified\": 1743813633,\n-        \"narHash\": \"sha256-BgkBz4NpV6Kg8XF7cmHDHRVGZYnKbvG0Y4p+jElwxaM=\",\n+        \"lastModified\": 1746055187,\n+        \"narHash\": \"sha256-3dqArYSMP9hM7Qpy5YWhnSjiqniSaT2uc5h2Po7tmg0=\",\n         \"owner\": \"nixos\",\n         \"repo\": \"nixpkgs\",\n-        \"rev\": \"7819a0d29d1dd2bc331bec4b327f0776359b1fa6\",\n+        \"rev\": \"3e362ce63e16b9572d8c2297c04f7c19ab6725a5\",\n         \"type\": \"github\"\n       },\n       \"original\": {\n-- \n2.43.0\n\n\nFrom 6b54d85adf144d5b7617e36f992da2e09fc1eb5a Mon Sep 17 00:00:00 2001\nFrom: Anirudh Oppiliappan <x@icyphox.sh>\nDate: Fri, 2 May 2025 22:49:58 +0300\nSubject: [PATCH 2/2] appview: pages/markup: rewrite links links to camo url\n\n---\n appview/config.go                |  2 ++\n appview/pages/funcmap.go         |  2 +-\n appview/pages/markup/camo.go     | 31 +++++++++++++++++++++++++++++++\n appview/pages/markup/markdown.go | 13 ++++++++++++-\n appview/pages/pages.go           | 23 ++++++++++-------------\n appview/state/state.go           |  2 +-\n 6 files changed, 57 insertions(+), 16 deletions(-)\n create mode 100644 appview/pages/markup/camo.go\n\ndiff --git a/appview/config.go b/appview/config.go\nindex be28f2c..3fd3dc8 100644\n--- a/appview/config.go\n+++ b/appview/config.go\n@@ -13,6 +13,8 @@ type Config struct {\n \tDev               bool   `env:\"TANGLED_DEV, default=false\"`\n \tJetstreamEndpoint string `env:\"TANGLED_JETSTREAM_ENDPOINT, default=wss://jetstream1.us-east.bsky.network/subscribe\"`\n \tResendApiKey      string `env:\"TANGLED_RESEND_API_KEY\"`\n+\tCamoHost          string `env:\"TANGLED_CAMO_HOST, default=https://camo.tangled.sh\"`\n+\tCamoSharedSecret  string `env:\"TANGLED_CAMO_SHARED_SECRET\"`\n }\n \n func LoadConfig(ctx context.Context) (*Config, error) {\ndiff --git a/appview/pages/funcmap.go b/appview/pages/funcmap.go\nindex 9024cc7..816b083 100644\n--- a/appview/pages/funcmap.go\n+++ b/appview/pages/funcmap.go\n@@ -143,7 +143,7 @@ func funcMap() template.FuncMap {\n \t\t\treturn v.Slice(start, end).Interface()\n \t\t},\n \t\t\"markdown\": func(text string) template.HTML {\n-\t\t\trctx := &markup.RenderContext{}\n+\t\t\trctx := &markup.RenderContext{RendererType: markup.RendererTypeDefault}\n \t\t\treturn template.HTML(rctx.RenderMarkdown(text))\n \t\t},\n \t\t\"isNil\": func(t any) bool {\ndiff --git a/appview/pages/markup/camo.go b/appview/pages/markup/camo.go\nnew file mode 100644\nindex 0000000..3365d3a\n--- /dev/null\n+++ b/appview/pages/markup/camo.go\n@@ -0,0 +1,31 @@\n+package markup\n+\n+import (\n+\t\"crypto/hmac\"\n+\t\"crypto/sha256\"\n+\t\"encoding/hex\"\n+\t\"fmt\"\n+\n+\t\"github.com/yuin/goldmark/ast\"\n+)\n+\n+func generateCamoURL(baseURL, secret, imageURL string) string {\n+\th := hmac.New(sha256.New, []byte(secret))\n+\th.Write([]byte(imageURL))\n+\tsignature := hex.EncodeToString(h.Sum(nil))\n+\thexURL := hex.EncodeToString([]byte(imageURL))\n+\treturn fmt.Sprintf(\"%s/%s/%s\", baseURL, signature, hexURL)\n+}\n+\n+func (rctx *RenderContext) camoImageLinkTransformer(img *ast.Image) {\n+\t// don't camo on dev\n+\tif rctx.IsDev {\n+\t\treturn\n+\t}\n+\n+\tdst := string(img.Destination)\n+\n+\tif rctx.CamoUrl != \"\" && rctx.CamoSecret != \"\" {\n+\t\timg.Destination = []byte(generateCamoURL(rctx.CamoUrl, rctx.CamoSecret, dst))\n+\t}\n+}\ndiff --git a/appview/pages/markup/markdown.go b/appview/pages/markup/markdown.go\nindex 809d418..f684c0b 100644\n--- a/appview/pages/markup/markdown.go\n+++ b/appview/pages/markup/markdown.go\n@@ -21,11 +21,15 @@ type RendererType int\n const (\n \t// RendererTypeRepoMarkdown is for repository documentation markdown files\n \tRendererTypeRepoMarkdown RendererType = iota\n+\t// RendererTypeDefault is non-repo markdown, like issues/pulls/comments.\n+\tRendererTypeDefault\n )\n \n // RenderContext holds the contextual data for rendering markdown.\n // It can be initialized empty, and that'll skip any transformations.\n type RenderContext struct {\n+\tCamoUrl    string\n+\tCamoSecret string\n \trepoinfo.RepoInfo\n \tIsDev        bool\n \tRendererType RendererType\n@@ -73,8 +77,15 @@ func (a *MarkdownTransformer) Transform(node *ast.Document, reader text.Reader,\n \t\t\t\ta.rctx.relativeLinkTransformer(n.(*ast.Link))\n \t\t\tcase *ast.Image:\n \t\t\t\ta.rctx.imageFromKnotTransformer(n.(*ast.Image))\n+\t\t\t\ta.rctx.camoImageLinkTransformer(n.(*ast.Image))\n+\t\t\t}\n+\n+\t\tcase RendererTypeDefault:\n+\t\t\tswitch n.(type) {\n+\t\t\tcase *ast.Image:\n+\t\t\t\ta.rctx.imageFromKnotTransformer(n.(*ast.Image))\n+\t\t\t\ta.rctx.camoImageLinkTransformer(n.(*ast.Image))\n \t\t\t}\n-\t\t\t// more types here like RendererTypeIssue/Pull etc.\n \t\t}\n \n \t\treturn ast.WalkContinue, nil\ndiff --git a/appview/pages/pages.go b/appview/pages/pages.go\nindex 23fb520..4b55512 100644\n--- a/appview/pages/pages.go\n+++ b/appview/pages/pages.go\n@@ -15,6 +15,7 @@ import (\n \t\"path/filepath\"\n \t\"strings\"\n \n+\t\"tangled.sh/tangled.sh/core/appview\"\n \t\"tangled.sh/tangled.sh/core/appview/auth\"\n \t\"tangled.sh/tangled.sh/core/appview/db\"\n \t\"tangled.sh/tangled.sh/core/appview/pages/markup\"\n@@ -43,15 +44,17 @@ type Pages struct {\n \trctx        *markup.RenderContext\n }\n \n-func NewPages(dev bool) *Pages {\n+func NewPages(config *appview.Config) *Pages {\n \t// initialized with safe defaults, can be overriden per use\n \trctx := &markup.RenderContext{\n-\t\tIsDev: dev,\n+\t\tIsDev:      config.Dev,\n+\t\tCamoUrl:    config.CamoHost,\n+\t\tCamoSecret: config.CamoSharedSecret,\n \t}\n \n \tp := &Pages{\n \t\tt:           make(map[string]*template.Template),\n-\t\tdev:         dev,\n+\t\tdev:         config.Dev,\n \t\tembedFS:     Files,\n \t\trctx:        rctx,\n \t\ttemplateDir: \"appview/pages\",\n@@ -379,11 +382,8 @@ func (p *Pages) RepoIndexPage(w io.Writer, params RepoIndexParams) error {\n \t\treturn p.executeRepo(\"repo/empty\", w, params)\n \t}\n \n-\tp.rctx = &markup.RenderContext{\n-\t\tRepoInfo:     params.RepoInfo,\n-\t\tIsDev:        p.dev,\n-\t\tRendererType: markup.RendererTypeRepoMarkdown,\n-\t}\n+\tp.rctx.RepoInfo = params.RepoInfo\n+\tp.rctx.RendererType = markup.RendererTypeRepoMarkdown\n \n \tif params.ReadmeFileName != \"\" {\n \t\tvar htmlString string\n@@ -508,11 +508,8 @@ func (p *Pages) RepoBlob(w io.Writer, params RepoBlobParams) error {\n \tif params.ShowRendered {\n \t\tswitch markup.GetFormat(params.Path) {\n \t\tcase markup.FormatMarkdown:\n-\t\t\tp.rctx = &markup.RenderContext{\n-\t\t\t\tRepoInfo:     params.RepoInfo,\n-\t\t\t\tIsDev:        p.dev,\n-\t\t\t\tRendererType: markup.RendererTypeRepoMarkdown,\n-\t\t\t}\n+\t\t\tp.rctx.RepoInfo = params.RepoInfo\n+\t\t\tp.rctx.RendererType = markup.RendererTypeRepoMarkdown\n \t\t\tparams.RenderedContents = template.HTML(p.rctx.RenderMarkdown(params.Contents))\n \t\t}\n \t}\ndiff --git a/appview/state/state.go b/appview/state/state.go\nindex 89ba080..a0ca09b 100644\n--- a/appview/state/state.go\n+++ b/appview/state/state.go\n@@ -55,7 +55,7 @@ func Make(config *appview.Config) (*State, error) {\n \n \tclock := syntax.NewTIDClock(0)\n \n-\tpgs := pages.NewPages(config.Dev)\n+\tpgs := pages.NewPages(config)\n \n \tresolver := appview.NewResolver()\n \n-- \n2.43.0\n\n",
    "title": "camo: cloudflare worker to proxy and cache images",
    "pullId": 75,
    "source": {
      "branch": "camo"
    },
    "createdAt": "",
    "targetRepo": "at://did:plc:wshs7t2adsemcrrd4snkeqli/sh.tangled.repo/3liuighjy2h22",
    "targetBranch": "master"
  }
}