From e046b4e3ac5d7b667ffe5a2765f5205238baa327 Mon Sep 17 00:00:00 2001 From: bastienrp Date: Fri, 18 Sep 2026 11:36:55 +0700 Subject: [PATCH 1/2] fix: add Tools and sdk --- bun.lock | 1535 +++++++++++++++++ docs/pages/en/explanation/build-overview.mdx | 2 +- docs/pages/en/explanation/gas-waiver.mdx | 12 + docs/pages/en/explanation/tools-overview.mdx | 39 + docs/pages/en/how-to/integrate-gas-waiver.mdx | 4 +- .../pages/en/how-to/relay-with-gas-waiver.mdx | 1 + .../en/how-to/self-hosted-gas-waiver.mdx | 4 + docs/pages/en/reference/gas-waiver-api.mdx | 9 +- .../en/reference/node-operations-overview.mdx | 6 +- docs/sidebar.json | 124 +- 10 files changed, 1671 insertions(+), 65 deletions(-) create mode 100644 bun.lock create mode 100644 docs/pages/en/explanation/tools-overview.mdx diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..9e733ac --- /dev/null +++ b/bun.lock @@ -0,0 +1,1535 @@ +{ + "lockfileVersion": 1, + "configVersion": 0, + "workspaces": { + "": { + "name": "stable-docs-vocs", + "dependencies": { + "lucide-react": "^0.468.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "vocs": "^1.0.16", + }, + "devDependencies": { + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", + "typescript": "^5.6.0", + }, + }, + }, + "packages": { + "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], + + "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], + + "@babel/compat-data": ["@babel/compat-data@7.29.7", "", {}, "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="], + + "@babel/core": ["@babel/core@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA=="], + + "@babel/generator": ["@babel/generator@7.29.7", "", { "dependencies": { "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ=="], + + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.29.7", "", { "dependencies": { "@babel/compat-data": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g=="], + + "@babel/helper-globals": ["@babel/helper-globals@7.29.7", "", {}, "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA=="], + + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.29.7", "", { "dependencies": { "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g=="], + + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.29.7", "", { "dependencies": { "@babel/helper-module-imports": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", "@babel/traverse": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg=="], + + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.29.7", "", {}, "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw=="], + + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], + + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.29.7", "", {}, "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw=="], + + "@babel/helpers": ["@babel/helpers@7.29.7", "", { "dependencies": { "@babel/template": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg=="], + + "@babel/parser": ["@babel/parser@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" }, "bin": { "parser": "bin/babel-parser.js" } }, "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg=="], + + "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA=="], + + "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw=="], + + "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q=="], + + "@babel/runtime": ["@babel/runtime@7.29.7", "", {}, "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw=="], + + "@babel/template": ["@babel/template@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg=="], + + "@babel/traverse": ["@babel/traverse@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/types": "^7.29.7", "debug": "^4.3.1" } }, "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw=="], + + "@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], + + "@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.2", "", {}, "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA=="], + + "@chevrotain/types": ["@chevrotain/types@11.1.2", "", {}, "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw=="], + + "@clack/core": ["@clack/core@0.3.5", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ=="], + + "@clack/prompts": ["@clack/prompts@0.7.0", "", { "dependencies": { "@clack/core": "^0.3.3", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA=="], + + "@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], + + "@emotion/hash": ["@emotion/hash@0.9.2", "", {}, "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.7", "", { "os": "aix", "cpu": "ppc64" }, "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.27.7", "", { "os": "android", "cpu": "arm" }, "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.7", "", { "os": "android", "cpu": "arm64" }, "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.27.7", "", { "os": "android", "cpu": "x64" }, "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.7", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.7", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.7", "", { "os": "linux", "cpu": "arm" }, "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.7", "", { "os": "linux", "cpu": "ia32" }, "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.7", "", { "os": "linux", "cpu": "ppc64" }, "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.7", "", { "os": "linux", "cpu": "s390x" }, "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.7", "", { "os": "linux", "cpu": "x64" }, "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.7", "", { "os": "none", "cpu": "x64" }, "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.7", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.7", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.7", "", { "os": "sunos", "cpu": "x64" }, "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.7", "", { "os": "win32", "cpu": "ia32" }, "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.7", "", { "os": "win32", "cpu": "x64" }, "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg=="], + + "@floating-ui/core": ["@floating-ui/core@1.7.5", "", { "dependencies": { "@floating-ui/utils": "^0.2.11" } }, "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ=="], + + "@floating-ui/dom": ["@floating-ui/dom@1.7.6", "", { "dependencies": { "@floating-ui/core": "^1.7.5", "@floating-ui/utils": "^0.2.11" } }, "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ=="], + + "@floating-ui/react": ["@floating-ui/react@0.27.19", "", { "dependencies": { "@floating-ui/react-dom": "^2.1.8", "@floating-ui/utils": "^0.2.11", "tabbable": "^6.0.0" }, "peerDependencies": { "react": ">=17.0.0", "react-dom": ">=17.0.0" } }, "sha512-31B8h5mm8YxotlE7/AU/PhNAl8eWxAmjL/v2QOxroDNkTFLk3Uu82u63N3b6TXa4EGJeeZLVcd/9AlNlVqzeog=="], + + "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.8", "", { "dependencies": { "@floating-ui/dom": "^1.7.6" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A=="], + + "@floating-ui/utils": ["@floating-ui/utils@0.2.11", "", {}, "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg=="], + + "@fortawesome/fontawesome-free": ["@fortawesome/fontawesome-free@6.7.2", "", {}, "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA=="], + + "@hono/node-server": ["@hono/node-server@1.19.14", "", { "peerDependencies": { "hono": "^4" } }, "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw=="], + + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + + "@iconify/utils": ["@iconify/utils@3.1.3", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "import-meta-resolve": "^4.2.0" } }, "sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], + + "@mdx-js/react": ["@mdx-js/react@3.1.1", "", { "dependencies": { "@types/mdx": "^2.0.0" }, "peerDependencies": { "@types/react": ">=16", "react": ">=16" } }, "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw=="], + + "@mdx-js/rollup": ["@mdx-js/rollup@3.1.1", "", { "dependencies": { "@mdx-js/mdx": "^3.0.0", "@rollup/pluginutils": "^5.0.0", "source-map": "^0.7.0", "vfile": "^6.0.0" }, "peerDependencies": { "rollup": ">=2" } }, "sha512-v8satFmBB+DqDzYohnm1u2JOvxx6Hl3pUvqzJvfs2Zk/ngZ1aRUhsWpXvwPkNeGN9c2NCm/38H29ZqXQUjf8dw=="], + + "@mermaid-js/parser": ["@mermaid-js/parser@1.1.1", "", { "dependencies": { "@chevrotain/types": "~11.1.1" } }, "sha512-VuHdsYMK1bT6X2JbcAaWAhugTRvRBRyuZgd+c22swUeI9g/ntaxF7CY7dYarhZovofCbUNO0G7JesfmNtjYOCw=="], + + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="], + + "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + + "@oxc-project/types": ["@oxc-project/types@0.133.0", "", {}, "sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA=="], + + "@radix-ui/colors": ["@radix-ui/colors@3.0.0", "", {}, "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg=="], + + "@radix-ui/number": ["@radix-ui/number@1.1.2", "", {}, "sha512-ceTwaxc4I5IOi97DgCotl3pqiyRGvffcc0oOsE2dQYaJOFIDsDt4VWG6xEbg1QePv9QWausCEIppud/tJ1wNig=="], + + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.4", "", {}, "sha512-7AdCK9PQyiljKoBDbN8OuctCbd/esdwZPQ8RtOE3SsyQtUpiPb+ND75q0jEhC1m1ecBI0MFNeLJvwIh9iKHRcQ=="], + + "@radix-ui/react-accessible-icon": ["@radix-ui/react-accessible-icon@1.1.9", "", { "dependencies": { "@radix-ui/react-visually-hidden": "1.2.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-5W9KzJz/3DeYbGJHbZv8Q6AkxMOKUmALfc+PRg9dWwJZMk6zD37Sz8sZrF7UD6CBkiJvn7dNeRzn5G7XiCMyig=="], + + "@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.13", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collapsible": "1.1.13", "@radix-ui/react-collection": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-controllable-state": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-xITxBB2p5m5tAe7M0F95kb4uAh7jSIKGlExMEm93HlW+XxZHV2eXFbPWLktd4JhRiwcnXNbO7iekcrbZy6ZCvA=="], + + "@radix-ui/react-alert-dialog": ["@radix-ui/react-alert-dialog@1.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-dialog": "1.1.16", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-slot": "1.2.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-vPaIgo0mxYlvcFaM9jB2Uot9TjGXMuAPEvrc6BOLeV+I5U8s1dkIoouYaa6lmSfc5SPMo5x5djOTOTvaigdGMQ=="], + + "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-yqHW5WQ/cTpU/un7dqqIKNy2iRU8BC0JB78PEzTfCCYvZu1U6W9KwObAniMk9nhSfyotKPQTYaUD/HB0f5muig=="], + + "@radix-ui/react-aspect-ratio": ["@radix-ui/react-aspect-ratio@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-Xy+Dpxt/5n9rVTdPrNFmf8GwG1NlT1pzCF/z1MgOGZMLZWdWl+km+ZRWGQAPEhbkzSwYEsfYmTca8NhUtVxqnw=="], + + "@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.1.12", "", { "dependencies": { "@radix-ui/react-context": "1.1.4", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-is-hydrated": "0.1.1", "@radix-ui/react-use-layout-effect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-NQCQyWC7QrDPhjMn8hUqFeU0lUrprIgm1AyMgLbzuQJibNnatdc3SSMo3/UGFu/eUkJUU1cEcKCnyhXTQzq6tA=="], + + "@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.3.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-previous": "1.1.2", "@radix-ui/react-use-size": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-m3JmIOAX5ZzZ6VPjxEU2dbTOhoHi0nT5riwcDwe8idocsWf4a5DXJLDtZ6LfJwMBx7W+A2b7kp2TgPEKtaiF6A=="], + + "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.13", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-layout-effect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-F0s8+p2XNpfc3k02zBfB0jPWbkHVG162+p7BdUMyJ2308QMqZ+oaclX+FAzKFovgL5OqRU+Rvy6f/vbdlJVaqA=="], + + "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.9", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-slot": "1.2.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-zuSVi7ziP7uQRqc+yGxsKJfNkdyHv3ZKDaHe0gzg4dRgws96TPKWIiz84tVHP4GEcEl8bC0mdt17NkcxaJHmaQ=="], + + "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-rYOP8OMnuuPMQF1uhPVlGNcCDlkokKqGFE3JcxFViIkAXP7EvFWUliJAstrapypaBLJNHbZL6jGhbVDGTwmVhA=="], + + "@radix-ui/react-context": ["@radix-ui/react-context@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-QwH4PO5urrbO+FaGd5Aglg+YJgWTyyuZ3g/6mKvsqraLkglDdckw9JafgL5McL5VEJ6EPNduPaT3ZE9BttDAqg=="], + + "@radix-ui/react-context-menu": ["@radix-ui/react-context-menu@2.3.0", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-menu": "2.1.17", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-controllable-state": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-d7CouXhAW+CGmFOqmB+IEvd3E9GcaqfgvfjCc3hfulp2pkaUCEVEGa0SN5nNWYA+IvQ6g1Pt+S5dpNn1AoY9hg=="], + + "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.12", "@radix-ui/react-focus-guards": "1.1.4", "@radix-ui/react-focus-scope": "1.1.9", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-portal": "1.1.11", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-slot": "1.2.5", "@radix-ui/react-use-controllable-state": "1.2.3", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-l9ok83YBclEZhbjgzt76Hw733e6cvRKPNgO6GJ/IETlufXG9p+fRu2wlvpImQvR6xdJ8h7J8J2DBvsPEiEsKMw=="], + + "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-C3vFhbyi4SW3PmbAi6Awpu4OzJtd0MxGurvSsYtr7p7nM8RNB3VAF3CUmnp2j50knpkrRcB7+ycVXzgLgF6yNA=="], + + "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-escape-keydown": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-MhoruH6xEzsbvOmo4TNgMfmtvRGyDZw4MDSdf4ybMHfezjqwzv6hyd4lsMzBp8K9Sn6sGzCF62x1I7BYUECXOg=="], + + "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.17", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-menu": "2.1.17", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-controllable-state": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-S6b3Jm57sY5EdDyOMLkacbB0qMnKhy1RCKZCt795ZkmtUOAvojYIZ5p7dXHIh5Cyr3jCLLI5/g64V3FKLudZmw=="], + + "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-cot/aB/mOm0IYVYTTmQcEEK1M48lZWi8FlYe5nDPQQ8NYZUlXEFgncJ9p2Kzer3RKSrY7cTTpEMLZKNo9QoP5Q=="], + + "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.9", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-callback-ref": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-9Se8t+Zry+1rEOL7Y6l/4ANYU/TOtAtf8O2fKdwLltcaMcm6kOqYGbzO4tMFQ0bvzO920pRAoHpFZ4W85S3keQ=="], + + "@radix-ui/react-form": ["@radix-ui/react-form@0.1.9", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-label": "2.1.9", "@radix-ui/react-primitive": "2.1.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-eTPyThIKDacJ3mJDvYwf/PSmsEYlOyA2Qcb+aGyWwYv+P5w57VPUkMVA2XJ9z0Du2KBY1HoHQzhPV9iYL/r4hg=="], + + "@radix-ui/react-hover-card": ["@radix-ui/react-hover-card@1.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.12", "@radix-ui/react-popper": "1.3.0", "@radix-ui/react-portal": "1.1.11", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-controllable-state": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-hAileDBtd6CX7nlZOarOnISQ6PP4q0e16BX51ulzdZ+7IzjL0sDTVpFdmSYrIjw6zVNsfQBao5gG6AWr3qwfvA=="], + + "@radix-ui/react-icons": ["@radix-ui/react-icons@1.3.2", "", { "peerDependencies": { "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="], + + "@radix-ui/react-id": ["@radix-ui/react-id@1.1.2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-orBC88futVpqCmhX1p4cvquNHsELQ+w+vBJnuj3ftETI5bJb0bZn3Tqu3SWN2IOcPycTnMGnhwoermvISt72sA=="], + + "@radix-ui/react-label": ["@radix-ui/react-label@2.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-rDoTeMbCwRVcnmo7NGT9IlPo1yXmEI+xc1URP3oeewwZEV4mdTp1dYUhYbQdo4D1q2SjKVvv4N1gNY77QAQtjA=="], + + "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.17", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collection": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.12", "@radix-ui/react-focus-guards": "1.1.4", "@radix-ui/react-focus-scope": "1.1.9", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-popper": "1.3.0", "@radix-ui/react-portal": "1.1.11", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-roving-focus": "1.1.12", "@radix-ui/react-slot": "1.2.5", "@radix-ui/react-use-callback-ref": "1.1.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-fmbNnFyf+JYCN0DhhWnEdUTDnZD1mXaPQWivdsPIb8oOSbARfD3LIQJbLCG8a8QLCwoMxiJ7GVPIFcC8Dw8v2Q=="], + + "@radix-ui/react-menubar": ["@radix-ui/react-menubar@1.1.17", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collection": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-menu": "2.1.17", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-roving-focus": "1.1.12", "@radix-ui/react-use-controllable-state": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-AKtZ4O782yO7qwIyq73WpulYt1IHhQ0htDb6wNcxzxnSDCcSWMVBiU9ycpcA90XzQO4IVIxIErtak6Kg/Vt0rQ=="], + + "@radix-ui/react-navigation-menu": ["@radix-ui/react-navigation-menu@1.2.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collection": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.12", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-layout-effect": "1.1.2", "@radix-ui/react-use-previous": "1.1.2", "@radix-ui/react-visually-hidden": "1.2.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-/fS8hKCcRt4DwCGa5QIB3juRXmfYSOk4a2AEe/BDIyy7Hm+eje2Y13oUx5zejl+wFt1owrM7E8NWlbaEl5EGpg=="], + + "@radix-ui/react-one-time-password-field": ["@radix-ui/react-one-time-password-field@0.1.9", "", { "dependencies": { "@radix-ui/number": "1.1.2", "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collection": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-roving-focus": "1.1.12", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-effect-event": "0.0.3", "@radix-ui/react-use-is-hydrated": "0.1.1", "@radix-ui/react-use-layout-effect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-fvCzA9hm7yN5xxTPJIi4VhSmH5gv+76ILsxguBK3cm3icD5BR4vW7POQmu8Zio0yh91uuouG/Kang40IbMkaSQ=="], + + "@radix-ui/react-password-toggle-field": ["@radix-ui/react-password-toggle-field@0.1.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-effect-event": "0.0.3", "@radix-ui/react-use-is-hydrated": "0.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-qoDSkObZ9faJlsjlwyBH6ia7kq9vaJ2QwWTowT3nQpzPvUTAKesmWuGJYpd91HIoJqS+5ZPXy5uFPp+HlwdaAg=="], + + "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.12", "@radix-ui/react-focus-guards": "1.1.4", "@radix-ui/react-focus-scope": "1.1.9", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-popper": "1.3.0", "@radix-ui/react-portal": "1.1.11", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-slot": "1.2.5", "@radix-ui/react-use-controllable-state": "1.2.3", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-8brVpAU5Uq7Bh0c8EFc4ZTf2JJTYn0o+1L+CUJB3UYIOkTjKGMgoHvduylrahdmNlr3DfH0rFq2DrbNZXgaspw=="], + + "@radix-ui/react-popper": ["@radix-ui/react-popper@1.3.0", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.2", "@radix-ui/react-use-rect": "1.1.2", "@radix-ui/react-use-size": "1.1.2", "@radix-ui/rect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-9PB589e1aWZbrlFUHdz6WiPCL+xLZHQFX7oibqG/6Q0SwOkxDyQX9W/cyPa+sAPPKuC8cpLCpRczE5a/1DiwVQ=="], + + "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.11", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-layout-effect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-UEytdjgEh2tJGgD/gZK4FUx6t1rNIlM3U0DENhSrG7I75FGm1DnaDuVUWF1pWAWUwGmn1sCJ1VGHn8LhN1aTOw=="], + + "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.6", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-zdTk4PlUO0E18HnZ3wYbW0KkJJxWCdiNYp6g6X1PtONFhxVkg01vliTJAmwIszU6mHiyBOoW9P0rAugl5/hULQ=="], + + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.5", "", { "dependencies": { "@radix-ui/react-slot": "1.2.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-zifXeB8Y88qCYx8PLZ5oQb32KwZub+s925mMoZsBBq9KUQqWKkREubTfs6ASjRPPBe7Jt9O8OHH89+95VG+grA=="], + + "@radix-ui/react-progress": ["@radix-ui/react-progress@1.1.9", "", { "dependencies": { "@radix-ui/react-context": "1.1.4", "@radix-ui/react-primitive": "2.1.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-+EOkvg1Zn1vI1+fRDfRSAiJ7BWfcDAo5ASMmbqrcLZ4s4USk2FGkoHgeb2X+CkUgo2zJMiyObwf1k44CrRWsyw=="], + + "@radix-ui/react-radio-group": ["@radix-ui/react-radio-group@1.4.0", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-roving-focus": "1.1.12", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-previous": "1.1.2", "@radix-ui/react-use-size": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-eHdV5bLx9sH+tBnbDjkIBdvQEH/c6MEtQYhTbxkaDK9qsIFFLtmJYEQFVdwhnruWotLfQmIuWEL/J+L3utE8rQ=="], + + "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collection": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-controllable-state": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-FvgPt1bRmg8Xt2QpF7NUZW3dE0ZQHGm41dAdgT2J2GJPoIXz+9Em3NobAxf4fupcxhgHu03E5CRiU2MWvObXyg=="], + + "@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.2.11", "", { "dependencies": { "@radix-ui/number": "1.1.2", "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-DS39ziOgea75U/TrXKU2/oKp0be2jrDHnzFLvahg/0iNAT1Zq16e4Uw0WXwyXvsK+mG3BRyMb7A3NRZMDuEXtQ=="], + + "@radix-ui/react-select": ["@radix-ui/react-select@2.3.0", "", { "dependencies": { "@radix-ui/number": "1.1.2", "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collection": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.12", "@radix-ui/react-focus-guards": "1.1.4", "@radix-ui/react-focus-scope": "1.1.9", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-popper": "1.3.0", "@radix-ui/react-portal": "1.1.11", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-slot": "1.2.5", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-layout-effect": "1.1.2", "@radix-ui/react-use-previous": "1.1.2", "@radix-ui/react-visually-hidden": "1.2.5", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-mENc7WpJvJcW8hlMpzfFcHcEhTvYS5JMBmi9HVC1Q00uhBwML086MHYUV8QQdQv6lcu0Wg8dzd1RB8AFADcG/g=="], + + "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-gvgW+JV/Mbjj6darztTetnmElpQEzZrXpJvfj+dOxNAxiyHEAyUvEjjl4zxblvmjmKmi3jfPoy7ZdxzCuUBJSA=="], + + "@radix-ui/react-slider": ["@radix-ui/react-slider@1.4.0", "", { "dependencies": { "@radix-ui/number": "1.1.2", "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collection": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-layout-effect": "1.1.2", "@radix-ui/react-use-previous": "1.1.2", "@radix-ui/react-use-size": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-RHcPlLOThRJM51DSIC33ZnpDEBYhyEFroVWkd2P54PGGjkmAt14RboYUU9E1MFst666zFHM0tGtWvMjSOtU1pw=="], + + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-rCMO3QsIVKv5JTY5CVbo2MvO77SpEqqYc8AvRE7OWqRDOIqAKjsp+DrmnY9uc8NPdxB5E2z47HTYGeE2+NTptg=="], + + "@radix-ui/react-switch": ["@radix-ui/react-switch@1.3.0", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-previous": "1.1.2", "@radix-ui/react-use-size": "1.1.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-GP1EZwhoZO/GGnhM1P5/2Vpm8iN8EnngyU0oezn2l78kN8tj25pyrvjIaT7azBhK615KSt+P2w39y57YV5jVkA=="], + + "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-roving-focus": "1.1.12", "@radix-ui/react-use-controllable-state": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-D5jwp9JNuwDeCw3CYD2Fz+sSHo0droQjC8u75dJHe4aWr5q6yBiXZU+hurXnKudRgEpUkD5TsI6bjHPo5ThUxA=="], + + "@radix-ui/react-toast": ["@radix-ui/react-toast@1.2.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-collection": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.12", "@radix-ui/react-portal": "1.1.11", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-layout-effect": "1.1.2", "@radix-ui/react-visually-hidden": "1.2.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-WUymDDiN2DpoGudRN1aW4wF5O3BNQjZZO/5nngPoNiEVqjyOzirvZZNO0R6dC1ifucSINVaSv8JX1aq47VGgiA=="], + + "@radix-ui/react-toggle": ["@radix-ui/react-toggle@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-use-controllable-state": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-FikrKJemoBGZQ6uRID0HJqSPBP6D7OppdD2OhLl0ZYLlAyPXI7MezoYGmumwNkrAoRm35xXkb4C8JPfJZZzcaw=="], + + "@radix-ui/react-toggle-group": ["@radix-ui/react-toggle-group@1.1.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-roving-focus": "1.1.12", "@radix-ui/react-toggle": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-TEgECgJaWGAHJJZGzNNEYTNBdIXqX7LchANycpyP7DkfjmuiSN7ISt1k/ZRGVJgVJonsgP4vwaiKMn5utrcwWQ=="], + + "@radix-ui/react-toolbar": ["@radix-ui/react-toolbar@1.1.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-roving-focus": "1.1.12", "@radix-ui/react-separator": "1.1.9", "@radix-ui/react-toggle-group": "1.1.12" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-4wHtJVdIgqMmEwUvxA0BYg/2JMRbt0L3+8UD8Ml/nhKkfXtiZcM8u/S15gQ5xj9YEd/0qlrm5bE805LsjQ+J8A=="], + + "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.2.9", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.12", "@radix-ui/react-id": "1.1.2", "@radix-ui/react-popper": "1.3.0", "@radix-ui/react-portal": "1.1.11", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-slot": "1.2.5", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-visually-hidden": "1.2.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-u6F9MmTtBSLkiXNVDrtB/yPCZarM9smNswC24YYLV/M+bth6J3Gs3vlJezEoFwKZvPvxhCpUYdUnOsNG/0XOlA=="], + + "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-xCso9j1/u8sEgP1RNHjFrXJLApL8LiqOkI1R4ywuN00rxWdYg4oQXuwKLS3i0j5NWLromUD27/4nlxj2UFVvIw=="], + + "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.3", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.3", "@radix-ui/react-use-layout-effect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-PLzC90MS+ReootmjC597dvopoelpZ8Q61HJkDXZSExitIq7PL55vHNnesAHwguHK0aPfBnpdNzQtv1uliaqQrA=="], + + "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.3", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-6c8ZqvPTWILEKnyVkP53EGRCcpnJiKTC21sS/6R1GF5xKyHJJWQEPfkqlcgUkdRQivd6tb23abUwe4ngWmY0JA=="], + + "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.2", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-2uVLvLjgO7NZCWw01/FdqRwmA42J0BcjPMUCA+koFEOAb+zjqIP7SiFz/7zWPrKnVmSqr76Omq2ALyCuX4dhLw=="], + + "@radix-ui/react-use-is-hydrated": ["@radix-ui/react-use-is-hydrated@0.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-qwOiz4Tjo8CNnrOLAYUMXeZwDzXgXpvK4TKQPmWLECM9XoWvA6+0Z2/7Ag3A4ivjS4ovbLJPbskkxioFyBhr8A=="], + + "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-jrBWOxZITuGcnjRCM2t2U5ZPkCLxD+Ym6DjfssS5haTj2iiak/DOb64JeN6OdLfLgptb6/e2kKR+ZuTrGoZTPA=="], + + "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-IGBQPtRFdhN6MQ8dbegVmBq1LVZluya3F1jWY+puIcQC3MHctRwTDSBWCkL/3ZcnMJLTMJ++Z+ktmvg0F89iCw=="], + + "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.2", "", { "dependencies": { "@radix-ui/rect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-d8a+bBY/FxikNPlgJJoaBHZX+zKVbWHYJGTLnLvveQgFSTntkGdEKv3JDtHrMS0DNYpllz2nRsTLGLKYttbpmw=="], + + "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-giWQp+4mxjBPt4KZ0MmyuykFNWfbDxKt4x+fPkRYmgRFJSbCZFzUglvMb/Kjn38tm10YP4ufiQZDx3zna4LU6w=="], + + "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.5", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-tPcHNI3FajdDBFpl/Ez1m2WL0ufJqBKyHxMDBvKitopamK36WwBGOMicuMEZKkM5Wce41QxUyv6BsiqfrWBiGg=="], + + "@radix-ui/rect": ["@radix-ui/rect@1.1.2", "", {}, "sha512-xnXE7wG13PI+cxieVssYXlQJuYVRhH9NBoxt3KNwzghDIA69GMm7d4wXRouHIYjE+KvS6U/MsMO73NdS2MH9ZA=="], + + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.3", "", { "os": "android", "cpu": "arm64" }, "sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw=="], + + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA=="], + + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg=="], + + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g=="], + + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.3", "", { "os": "linux", "cpu": "arm" }, "sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw=="], + + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw=="], + + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q=="], + + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg=="], + + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg=="], + + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.3", "", { "os": "linux", "cpu": "x64" }, "sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg=="], + + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.3", "", { "os": "linux", "cpu": "x64" }, "sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow=="], + + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.3", "", { "os": "none", "cpu": "arm64" }, "sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg=="], + + "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.3", "", { "dependencies": { "@emnapi/core": "1.10.0", "@emnapi/runtime": "1.10.0", "@napi-rs/wasm-runtime": "^1.1.4" }, "cpu": "none" }, "sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg=="], + + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g=="], + + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.3", "", { "os": "win32", "cpu": "x64" }, "sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.3", "", {}, "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q=="], + + "@rollup/pluginutils": ["@rollup/pluginutils@5.4.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" } }, "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.61.1", "", { "os": "android", "cpu": "arm" }, "sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.61.1", "", { "os": "android", "cpu": "arm64" }, "sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.61.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.61.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.61.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.61.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.61.1", "", { "os": "linux", "cpu": "arm" }, "sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.61.1", "", { "os": "linux", "cpu": "arm" }, "sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.61.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.61.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w=="], + + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.61.1", "", { "os": "linux", "cpu": "none" }, "sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ=="], + + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.61.1", "", { "os": "linux", "cpu": "none" }, "sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.61.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g=="], + + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.61.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.61.1", "", { "os": "linux", "cpu": "none" }, "sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.61.1", "", { "os": "linux", "cpu": "none" }, "sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.61.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.61.1", "", { "os": "linux", "cpu": "x64" }, "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.61.1", "", { "os": "linux", "cpu": "x64" }, "sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw=="], + + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.61.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg=="], + + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.61.1", "", { "os": "none", "cpu": "arm64" }, "sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.61.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.61.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ=="], + + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.61.1", "", { "os": "win32", "cpu": "x64" }, "sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.61.1", "", { "os": "win32", "cpu": "x64" }, "sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw=="], + + "@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], + + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], + + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA=="], + + "@shikijs/langs": ["@shikijs/langs@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ=="], + + "@shikijs/rehype": ["@shikijs/rehype@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@types/hast": "^3.0.4", "hast-util-to-string": "^3.0.1", "shiki": "1.29.2", "unified": "^11.0.5", "unist-util-visit": "^5.0.0" } }, "sha512-sxi53HZe5XDz0s2UqF+BVN/kgHPMS9l6dcacM4Ra3ZDzCJa5rDGJ+Ukpk4LxdD1+MITBM6hoLbPfGv9StV8a5Q=="], + + "@shikijs/themes": ["@shikijs/themes@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g=="], + + "@shikijs/transformers": ["@shikijs/transformers@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/types": "1.29.2" } }, "sha512-NHQuA+gM7zGuxGWP9/Ub4vpbwrYCrho9nQCLcCPfOe3Yc7LOYwmSuhElI688oiqIXk9dlZwDiyAG9vPBTuPJMA=="], + + "@shikijs/twoslash": ["@shikijs/twoslash@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/types": "1.29.2", "twoslash": "^0.2.12" } }, "sha512-2S04ppAEa477tiaLfGEn1QJWbZUmbk8UoPbAEw4PifsrxkBXtAtOflIZJNtuCwz8ptc/TPxy7CO7gW4Uoi6o/g=="], + + "@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], + + "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], + + "@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], + + "@tailwindcss/node": ["@tailwindcss/node@4.1.15", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.0", "lightningcss": "1.30.2", "magic-string": "^0.30.19", "source-map-js": "^1.2.1", "tailwindcss": "4.1.15" } }, "sha512-HF4+7QxATZWY3Jr8OlZrBSXmwT3Watj0OogeDvdUY/ByXJHQ+LBtqA2brDb3sBxYslIFx6UP94BJ4X6a4L9Bmw=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.15", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.15", "@tailwindcss/oxide-darwin-arm64": "4.1.15", "@tailwindcss/oxide-darwin-x64": "4.1.15", "@tailwindcss/oxide-freebsd-x64": "4.1.15", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.15", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.15", "@tailwindcss/oxide-linux-arm64-musl": "4.1.15", "@tailwindcss/oxide-linux-x64-gnu": "4.1.15", "@tailwindcss/oxide-linux-x64-musl": "4.1.15", "@tailwindcss/oxide-wasm32-wasi": "4.1.15", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.15", "@tailwindcss/oxide-win32-x64-msvc": "4.1.15" } }, "sha512-krhX+UOOgnsUuks2SR7hFafXmLQrKxB4YyRTERuCE59JlYL+FawgaAlSkOYmDRJdf1Q+IFNDMl9iRnBW7QBDfQ=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.15", "", { "os": "android", "cpu": "arm64" }, "sha512-TkUkUgAw8At4cBjCeVCRMc/guVLKOU1D+sBPrHt5uVcGhlbVKxrCaCW9OKUIBv1oWkjh4GbunD/u/Mf0ql6kEA=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.15", "", { "os": "darwin", "cpu": "arm64" }, "sha512-xt5XEJpn2piMSfvd1UFN6jrWXyaKCwikP4Pidcf+yfHTSzSpYhG3dcMktjNkQO3JiLCp+0bG0HoWGvz97K162w=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.15", "", { "os": "darwin", "cpu": "x64" }, "sha512-TnWaxP6Bx2CojZEXAV2M01Yl13nYPpp0EtGpUrY+LMciKfIXiLL2r/SiSRpagE5Fp2gX+rflp/Os1VJDAyqymg=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.15", "", { "os": "freebsd", "cpu": "x64" }, "sha512-quISQDWqiB6Cqhjc3iWptXVZHNVENsWoI77L1qgGEHNIdLDLFnw3/AfY7DidAiiCIkGX/MjIdB3bbBZR/G2aJg=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.15", "", { "os": "linux", "cpu": "arm" }, "sha512-ObG76+vPlab65xzVUQbExmDU9FIeYLQ5k2LrQdR2Ud6hboR+ZobXpDoKEYXf/uOezOfIYmy2Ta3w0ejkTg9yxg=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-4WbBacRmk43pkb8/xts3wnOZMDKsPFyEH/oisCm2q3aLZND25ufvJKcDUpAu0cS+CBOL05dYa8D4U5OWECuH/Q=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.15", "", { "os": "linux", "cpu": "arm64" }, "sha512-AbvmEiteEj1nf42nE8skdHv73NoR+EwXVSgPY6l39X12Ex8pzOwwfi3Kc8GAmjsnsaDEbk+aj9NyL3UeyHcTLg=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.15", "", { "os": "linux", "cpu": "x64" }, "sha512-+rzMVlvVgrXtFiS+ES78yWgKqpThgV19ISKD58Ck+YO5pO5KjyxLt7AWKsWMbY0R9yBDC82w6QVGz837AKQcHg=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.15", "", { "os": "linux", "cpu": "x64" }, "sha512-fPdEy7a8eQN9qOIK3Em9D3TO1z41JScJn8yxl/76mp4sAXFDfV4YXxsiptJcOwy6bGR+70ZSwFIZhTXzQeqwQg=="], + + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.15", "", { "cpu": "none" }, "sha512-sJ4yd6iXXdlgIMfIBXuVGp/NvmviEoMVWMOAGxtxhzLPp9LOj5k0pMEMZdjeMCl4C6Up+RM8T3Zgk+BMQ0bGcQ=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.15", "", { "os": "win32", "cpu": "arm64" }, "sha512-sJGE5faXnNQ1iXeqmRin7Ds/ru2fgCiaQZQQz3ZGIDtvbkeV85rAZ0QJFMDg0FrqsffZG96H1U9AQlNBRLsHVg=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.15", "", { "os": "win32", "cpu": "x64" }, "sha512-NLeHE7jUV6HcFKS504bpOohyi01zPXi2PXmjFfkzTph8xRxDdxkRsXm/xDO5uV5K3brrE1cCwbUYmFUSHR3u1w=="], + + "@tailwindcss/vite": ["@tailwindcss/vite@4.1.15", "", { "dependencies": { "@tailwindcss/node": "4.1.15", "@tailwindcss/oxide": "4.1.15", "tailwindcss": "4.1.15" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-B6s60MZRTUil+xKoZoGe6i0Iar5VuW+pmcGlda2FX+guDuQ1G1sjiIy1W0frneVpeL/ZjZ4KEgWZHNrIm++2qA=="], + + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg=="], + + "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], + + "@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="], + + "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], + + "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], + + "@types/d3": ["@types/d3@7.4.3", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="], + + "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], + + "@types/d3-axis": ["@types/d3-axis@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw=="], + + "@types/d3-brush": ["@types/d3-brush@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A=="], + + "@types/d3-chord": ["@types/d3-chord@3.0.6", "", {}, "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg=="], + + "@types/d3-color": ["@types/d3-color@3.1.3", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], + + "@types/d3-contour": ["@types/d3-contour@3.0.6", "", { "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" } }, "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg=="], + + "@types/d3-delaunay": ["@types/d3-delaunay@6.0.4", "", {}, "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw=="], + + "@types/d3-dispatch": ["@types/d3-dispatch@3.0.7", "", {}, "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA=="], + + "@types/d3-drag": ["@types/d3-drag@3.0.7", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ=="], + + "@types/d3-dsv": ["@types/d3-dsv@3.0.7", "", {}, "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g=="], + + "@types/d3-ease": ["@types/d3-ease@3.0.2", "", {}, "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="], + + "@types/d3-fetch": ["@types/d3-fetch@3.0.7", "", { "dependencies": { "@types/d3-dsv": "*" } }, "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA=="], + + "@types/d3-force": ["@types/d3-force@3.0.10", "", {}, "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw=="], + + "@types/d3-format": ["@types/d3-format@3.0.4", "", {}, "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g=="], + + "@types/d3-geo": ["@types/d3-geo@3.1.0", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ=="], + + "@types/d3-hierarchy": ["@types/d3-hierarchy@3.1.7", "", {}, "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg=="], + + "@types/d3-interpolate": ["@types/d3-interpolate@3.0.4", "", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="], + + "@types/d3-path": ["@types/d3-path@3.1.1", "", {}, "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="], + + "@types/d3-polygon": ["@types/d3-polygon@3.0.2", "", {}, "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA=="], + + "@types/d3-quadtree": ["@types/d3-quadtree@3.0.6", "", {}, "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg=="], + + "@types/d3-random": ["@types/d3-random@3.0.3", "", {}, "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ=="], + + "@types/d3-scale": ["@types/d3-scale@4.0.9", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], + + "@types/d3-scale-chromatic": ["@types/d3-scale-chromatic@3.1.0", "", {}, "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ=="], + + "@types/d3-selection": ["@types/d3-selection@3.0.11", "", {}, "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w=="], + + "@types/d3-shape": ["@types/d3-shape@3.1.8", "", { "dependencies": { "@types/d3-path": "*" } }, "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w=="], + + "@types/d3-time": ["@types/d3-time@3.0.4", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], + + "@types/d3-time-format": ["@types/d3-time-format@4.0.3", "", {}, "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg=="], + + "@types/d3-timer": ["@types/d3-timer@3.0.2", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], + + "@types/d3-transition": ["@types/d3-transition@3.0.9", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg=="], + + "@types/d3-zoom": ["@types/d3-zoom@3.0.8", "", { "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw=="], + + "@types/debug": ["@types/debug@4.1.13", "", { "dependencies": { "@types/ms": "*" } }, "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw=="], + + "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], + + "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], + + "@types/geojson": ["@types/geojson@7946.0.16", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="], + + "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], + + "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], + + "@types/mdx": ["@types/mdx@2.0.14", "", {}, "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg=="], + + "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], + + "@types/node": ["@types/node@25.9.2", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw=="], + + "@types/react": ["@types/react@19.2.17", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw=="], + + "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], + + "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], + + "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + + "@typescript/vfs": ["@typescript/vfs@1.6.4", "", { "dependencies": { "debug": "^4.4.3" }, "peerDependencies": { "typescript": "*" } }, "sha512-PJFXFS4ZJKiJ9Qiuix6Dz/OwEIqHD7Dme1UwZhTK11vR+5dqW2ACbdndWQexBzCx+CPuMe5WBYQWCsFyGlQLlQ=="], + + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.1", "", {}, "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ=="], + + "@upsetjs/venn.js": ["@upsetjs/venn.js@2.0.0", "", { "optionalDependencies": { "d3-selection": "^3.0.0", "d3-transition": "^3.0.1" } }, "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw=="], + + "@vanilla-extract/babel-plugin-debug-ids": ["@vanilla-extract/babel-plugin-debug-ids@1.2.2", "", { "dependencies": { "@babel/core": "^7.23.9" } }, "sha512-MeDWGICAF9zA/OZLOKwhoRlsUW+fiMwnfuOAqFVohL31Agj7Q/RBWAYweqjHLgFBCsdnr6XIfwjJnmb2znEWxw=="], + + "@vanilla-extract/compiler": ["@vanilla-extract/compiler@0.7.0", "", { "dependencies": { "@vanilla-extract/css": "^1.20.1", "@vanilla-extract/integration": "^8.0.9", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "vite-node": "^3.2.2 || ^5.0.0 || ^6.0.0" } }, "sha512-rZQ40HVmsxfGLjoflwwsaUBLfpbpKDoZC19oiDA0FHq4LdrYtyVbFkc0MfqkNo/qBCvaZfsRezCqk0QQxCqZ8w=="], + + "@vanilla-extract/css": ["@vanilla-extract/css@1.20.1", "", { "dependencies": { "@emotion/hash": "^0.9.0", "@vanilla-extract/private": "^1.0.9", "css-what": "^6.1.0", "csstype": "^3.2.3", "dedent": "^1.5.3", "deep-object-diff": "^1.1.9", "deepmerge": "^4.2.2", "lru-cache": "^10.4.3", "media-query-parser": "^2.0.2", "modern-ahocorasick": "^1.0.0", "picocolors": "^1.0.0" } }, "sha512-5I9RNo5uZW9tsBnqrWzJqELegOqTHBrZyDFnES0gR9gJJHBB9dom1N0bwITM9tKwBcfKrTX4a6DHVeQdJ2ubQA=="], + + "@vanilla-extract/dynamic": ["@vanilla-extract/dynamic@2.1.5", "", { "dependencies": { "@vanilla-extract/private": "^1.0.9" } }, "sha512-QGIFGb1qyXQkbzx6X6i3+3LMc/iv/ZMBttMBL+Wm/DetQd36KsKsFg5CtH3qy+1hCA/5w93mEIIAiL4fkM8ycw=="], + + "@vanilla-extract/integration": ["@vanilla-extract/integration@8.0.10", "", { "dependencies": { "@babel/core": "^7.23.9", "@babel/plugin-syntax-typescript": "^7.23.3", "@vanilla-extract/babel-plugin-debug-ids": "^1.2.2", "@vanilla-extract/css": "^1.20.1", "dedent": "^1.5.3", "esbuild": "npm:esbuild@>=0.17.6 <0.29.0", "eval": "0.1.8", "find-up": "^5.0.0", "javascript-stringify": "^2.0.1", "mlly": "^1.4.2" } }, "sha512-01IB5gbrgTe8IIrtfRXXTmACl5D8Enzqp2cKbCWaMKXmnoilXXVCPbJoA96q88PXkNDXsXepCxUugMvEmL3c7A=="], + + "@vanilla-extract/private": ["@vanilla-extract/private@1.0.9", "", {}, "sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA=="], + + "@vanilla-extract/vite-plugin": ["@vanilla-extract/vite-plugin@5.2.2", "", { "dependencies": { "@vanilla-extract/compiler": "^0.7.0", "@vanilla-extract/integration": "^8.0.9" }, "peerDependencies": { "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-AUyB4fDR2b/Mo0lcXhhlf6RxnDPYwFMyKKopalJ4BwQNKYzZSoTwHJ1PLPO9SKhpz7lzXc0Z18GHQZOewzl3YA=="], + + "@vitejs/plugin-react": ["@vitejs/plugin-react@5.2.0", "", { "dependencies": { "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-rc.3", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw=="], + + "acorn": ["acorn@8.16.0", "", { "bin": "bin/acorn" }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], + + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], + + "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + + "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], + + "astring": ["astring@1.9.0", "", { "bin": "bin/astring" }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], + + "autoprefixer": ["autoprefixer@10.5.0", "", { "dependencies": { "browserslist": "^4.28.2", "caniuse-lite": "^1.0.30001787", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": "bin/autoprefixer" }, "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong=="], + + "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], + + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.10.35", "", { "bin": "dist/cli.cjs" }, "sha512-honAfLBde0HAFLdNyBEfuuENkF6zR+ozxqxa/2zJKHBe1qzLqyTSeRKpdPEHAP03rlDGyQOPnCSxnVpVqQo9Mg=="], + + "bcp-47-match": ["bcp-47-match@2.0.3", "", {}, "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ=="], + + "bl": ["bl@5.1.0", "", { "dependencies": { "buffer": "^6.0.3", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ=="], + + "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], + + "browserslist": ["browserslist@4.28.2", "", { "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", "electron-to-chromium": "^1.5.328", "node-releases": "^2.0.36", "update-browserslist-db": "^1.2.3" }, "bin": "cli.js" }, "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg=="], + + "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], + + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + + "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001797", "", {}, "sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w=="], + + "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], + + "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + + "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], + + "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], + + "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], + + "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], + + "chroma-js": ["chroma-js@3.2.0", "", {}, "sha512-os/OippSlX1RlWWr+QDPcGUZs0uoqr32urfxESG9U93lhUfbnlyckte84Q8P1UQY/qth983AS1JONKmLS4T0nw=="], + + "cli-cursor": ["cli-cursor@4.0.0", "", { "dependencies": { "restore-cursor": "^4.0.0" } }, "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg=="], + + "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], + + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + + "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], + + "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], + + "commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], + + "compressible": ["compressible@2.0.18", "", { "dependencies": { "mime-db": ">= 1.43.0 < 2" } }, "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="], + + "compression": ["compression@1.8.1", "", { "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" } }, "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w=="], + + "confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], + + "cose-base": ["cose-base@1.0.3", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="], + + "create-vocs": ["create-vocs@1.0.0", "", { "dependencies": { "@clack/prompts": "^0.7.0", "cac": "^6.7.14", "detect-package-manager": "^3.0.2", "fs-extra": "^11.3.0", "picocolors": "^1.1.1" }, "bin": "_lib/bin.js" }, "sha512-Lv1Bd3WZEgwG4nrogkM54m8viW+TWPlGivLyEi7aNb3cuKPsEfMDZ/kTbo87fzOGtsZ2yh7scO54ZmVhhgBgTw=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "css-selector-parser": ["css-selector-parser@3.3.0", "", {}, "sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g=="], + + "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "cytoscape": ["cytoscape@3.34.0", "", {}, "sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg=="], + + "cytoscape-cose-bilkent": ["cytoscape-cose-bilkent@4.1.0", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="], + + "cytoscape-fcose": ["cytoscape-fcose@2.2.0", "", { "dependencies": { "cose-base": "^2.2.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ=="], + + "d3": ["d3@7.9.0", "", { "dependencies": { "d3-array": "3", "d3-axis": "3", "d3-brush": "3", "d3-chord": "3", "d3-color": "3", "d3-contour": "4", "d3-delaunay": "6", "d3-dispatch": "3", "d3-drag": "3", "d3-dsv": "3", "d3-ease": "3", "d3-fetch": "3", "d3-force": "3", "d3-format": "3", "d3-geo": "3", "d3-hierarchy": "3", "d3-interpolate": "3", "d3-path": "3", "d3-polygon": "3", "d3-quadtree": "3", "d3-random": "3", "d3-scale": "4", "d3-scale-chromatic": "3", "d3-selection": "3", "d3-shape": "3", "d3-time": "3", "d3-time-format": "4", "d3-timer": "3", "d3-transition": "3", "d3-zoom": "3" } }, "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA=="], + + "d3-array": ["d3-array@3.2.4", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], + + "d3-axis": ["d3-axis@3.0.0", "", {}, "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="], + + "d3-brush": ["d3-brush@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "3", "d3-transition": "3" } }, "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ=="], + + "d3-chord": ["d3-chord@3.0.1", "", { "dependencies": { "d3-path": "1 - 3" } }, "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g=="], + + "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], + + "d3-contour": ["d3-contour@4.0.2", "", { "dependencies": { "d3-array": "^3.2.0" } }, "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA=="], + + "d3-delaunay": ["d3-delaunay@6.0.4", "", { "dependencies": { "delaunator": "5" } }, "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A=="], + + "d3-dispatch": ["d3-dispatch@3.0.1", "", {}, "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="], + + "d3-drag": ["d3-drag@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" } }, "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="], + + "d3-dsv": ["d3-dsv@3.0.1", "", { "dependencies": { "commander": "7", "iconv-lite": "0.6", "rw": "1" }, "bin": { "csv2json": "bin/dsv2json.js", "csv2tsv": "bin/dsv2dsv.js", "dsv2dsv": "bin/dsv2dsv.js", "dsv2json": "bin/dsv2json.js", "json2csv": "bin/json2dsv.js", "json2dsv": "bin/json2dsv.js", "json2tsv": "bin/json2dsv.js", "tsv2csv": "bin/dsv2dsv.js", "tsv2json": "bin/dsv2json.js" } }, "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="], + + "d3-ease": ["d3-ease@3.0.1", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], + + "d3-fetch": ["d3-fetch@3.0.1", "", { "dependencies": { "d3-dsv": "1 - 3" } }, "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw=="], + + "d3-force": ["d3-force@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", "d3-timer": "1 - 3" } }, "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg=="], + + "d3-format": ["d3-format@3.1.2", "", {}, "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg=="], + + "d3-geo": ["d3-geo@3.1.1", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="], + + "d3-hierarchy": ["d3-hierarchy@3.1.2", "", {}, "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="], + + "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], + + "d3-path": ["d3-path@3.1.0", "", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="], + + "d3-polygon": ["d3-polygon@3.0.1", "", {}, "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="], + + "d3-quadtree": ["d3-quadtree@3.0.1", "", {}, "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="], + + "d3-random": ["d3-random@3.0.1", "", {}, "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="], + + "d3-sankey": ["d3-sankey@0.12.3", "", { "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" } }, "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ=="], + + "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], + + "d3-scale-chromatic": ["d3-scale-chromatic@3.1.0", "", { "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" } }, "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ=="], + + "d3-selection": ["d3-selection@3.0.0", "", {}, "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="], + + "d3-shape": ["d3-shape@3.2.0", "", { "dependencies": { "d3-path": "^3.1.0" } }, "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="], + + "d3-time": ["d3-time@3.1.0", "", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="], + + "d3-time-format": ["d3-time-format@4.1.0", "", { "dependencies": { "d3-time": "1 - 3" } }, "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="], + + "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], + + "d3-transition": ["d3-transition@3.0.1", "", { "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", "d3-ease": "1 - 3", "d3-interpolate": "1 - 3", "d3-timer": "1 - 3" }, "peerDependencies": { "d3-selection": "2 - 3" } }, "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w=="], + + "d3-zoom": ["d3-zoom@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" } }, "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="], + + "dagre-d3-es": ["dagre-d3-es@7.0.14", "", { "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg=="], + + "dayjs": ["dayjs@1.11.21", "", {}, "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA=="], + + "debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "decode-named-character-reference": ["decode-named-character-reference@1.3.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q=="], + + "dedent": ["dedent@1.7.2", "", { "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA=="], + + "deep-object-diff": ["deep-object-diff@1.1.9", "", {}, "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA=="], + + "deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="], + + "delaunator": ["delaunator@5.1.0", "", { "dependencies": { "robust-predicates": "^3.0.2" } }, "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ=="], + + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + + "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], + + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], + + "detect-package-manager": ["detect-package-manager@3.0.2", "", { "dependencies": { "execa": "^5.1.1" } }, "sha512-8JFjJHutStYrfWwzfretQoyNGoZVW1Fsrp4JO9spa7h/fBfwgTMEIy4/LBzRDGsxwVPHU0q+T9YvwLDJoOApLQ=="], + + "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], + + "direction": ["direction@2.0.1", "", { "bin": "cli.js" }, "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA=="], + + "dompurify": ["dompurify@3.4.8", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-yb1cEmaOum7wFvOCSQxyfgVlv5D47Rc30iZWoMpbDIWTnJ6grDDQyu2KFJzB2k7u0pMuJcQ1zphH//fFnw2tjQ=="], + + "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], + + "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.371", "", {}, "sha512-e9htk9mAYL6AzmkEhSvVVw7IWGSBJ/Bqdn2eRyRLrj1g6sncN4WbFt5qnILYoCktktr45pyjIrOiRvBThQ808w=="], + + "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], + + "emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="], + + "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], + + "enhanced-resolve": ["enhanced-resolve@5.23.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-yJN/BOOLxcOW2aQgeif9mSnaUB8KtvmMMp56oA1kx1CRfBKbhZm2pJ+NBY+3eOboHxix8lfjWpHE0Ei5U8RbSA=="], + + "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], + + "es-module-lexer": ["es-module-lexer@2.1.0", "", {}, "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ=="], + + "es-toolkit": ["es-toolkit@1.47.0", "", {}, "sha512-n1GuoD0WEQZMBk5tttoZSqwgyLx01oqa5XsBmCHwPyNe1S9jPBEmtR2pSgp2kJuWE3ciFZ6yRHmY4pM4C3OOkw=="], + + "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], + + "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], + + "esbuild": ["esbuild@0.27.7", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.7", "@esbuild/android-arm": "0.27.7", "@esbuild/android-arm64": "0.27.7", "@esbuild/android-x64": "0.27.7", "@esbuild/darwin-arm64": "0.27.7", "@esbuild/darwin-x64": "0.27.7", "@esbuild/freebsd-arm64": "0.27.7", "@esbuild/freebsd-x64": "0.27.7", "@esbuild/linux-arm": "0.27.7", "@esbuild/linux-arm64": "0.27.7", "@esbuild/linux-ia32": "0.27.7", "@esbuild/linux-loong64": "0.27.7", "@esbuild/linux-mips64el": "0.27.7", "@esbuild/linux-ppc64": "0.27.7", "@esbuild/linux-riscv64": "0.27.7", "@esbuild/linux-s390x": "0.27.7", "@esbuild/linux-x64": "0.27.7", "@esbuild/netbsd-arm64": "0.27.7", "@esbuild/netbsd-x64": "0.27.7", "@esbuild/openbsd-arm64": "0.27.7", "@esbuild/openbsd-x64": "0.27.7", "@esbuild/openharmony-arm64": "0.27.7", "@esbuild/sunos-x64": "0.27.7", "@esbuild/win32-arm64": "0.27.7", "@esbuild/win32-ia32": "0.27.7", "@esbuild/win32-x64": "0.27.7" }, "bin": "bin/esbuild" }, "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + + "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + + "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], + + "estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="], + + "estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="], + + "estree-util-scope": ["estree-util-scope@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ=="], + + "estree-util-to-js": ["estree-util-to-js@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="], + + "estree-util-value-to-estree": ["estree-util-value-to-estree@3.5.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ=="], + + "estree-util-visit": ["estree-util-visit@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], + + "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + + "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], + + "eval": ["eval@0.1.8", "", { "dependencies": { "@types/node": "*", "require-like": ">= 0.1.1" } }, "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw=="], + + "execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], + + "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], + + "fault": ["fault@2.0.1", "", { "dependencies": { "format": "^0.2.0" } }, "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" } }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], + + "format": ["format@0.2.2", "", {}, "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="], + + "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], + + "fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], + + "fs-extra": ["fs-extra@11.3.5", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg=="], + + "fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], + + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + + "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], + + "get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], + + "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "hachure-fill": ["hachure-fill@0.5.2", "", {}, "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="], + + "hast-util-classnames": ["hast-util-classnames@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-tI3JjoGDEBVorMAWK4jNRsfLMYmih1BUOG3VV36pH36njs1IEl7xkNrVTD2mD2yYHmQCa5R/fj61a8IAF4bRaQ=="], + + "hast-util-from-dom": ["hast-util-from-dom@5.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hastscript": "^9.0.0", "web-namespaces": "^2.0.0" } }, "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q=="], + + "hast-util-from-html": ["hast-util-from-html@2.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", "hast-util-from-parse5": "^8.0.0", "parse5": "^7.0.0", "vfile": "^6.0.0", "vfile-message": "^4.0.0" } }, "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw=="], + + "hast-util-from-html-isomorphic": ["hast-util-from-html-isomorphic@2.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-dom": "^5.0.0", "hast-util-from-html": "^2.0.0", "unist-util-remove-position": "^5.0.0" } }, "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw=="], + + "hast-util-from-parse5": ["hast-util-from-parse5@8.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" } }, "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg=="], + + "hast-util-has-property": ["hast-util-has-property@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA=="], + + "hast-util-heading-rank": ["hast-util-heading-rank@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA=="], + + "hast-util-is-element": ["hast-util-is-element@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g=="], + + "hast-util-parse-selector": ["hast-util-parse-selector@4.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A=="], + + "hast-util-select": ["hast-util-select@6.0.4", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "bcp-47-match": "^2.0.0", "comma-separated-tokens": "^2.0.0", "css-selector-parser": "^3.0.0", "devlop": "^1.0.0", "direction": "^2.0.0", "hast-util-has-property": "^3.0.0", "hast-util-to-string": "^3.0.0", "hast-util-whitespace": "^3.0.0", "nth-check": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw=="], + + "hast-util-to-estree": ["hast-util-to-estree@3.1.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w=="], + + "hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="], + + "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.6", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="], + + "hast-util-to-string": ["hast-util-to-string@3.0.1", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A=="], + + "hast-util-to-text": ["hast-util-to-text@4.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "hast-util-is-element": "^3.0.0", "unist-util-find-after": "^5.0.0" } }, "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A=="], + + "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], + + "hastscript": ["hastscript@8.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw=="], + + "hono": ["hono@4.12.25", "", {}, "sha512-2NFaIyNVgJmBs/ecmtGzlmluTFs5cHEWGTdu0t1HBwYzoGXOL5nUQBRMXsXWla5i4KkG//QMzVP88m1+I3fdAQ=="], + + "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], + + "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], + + "human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], + + "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + + "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + + "import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], + + "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], + + "is-alphabetical": ["is-alphabetical@2.0.1", "", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="], + + "is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], + + "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], + + "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], + + "is-interactive": ["is-interactive@2.0.0", "", {}, "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ=="], + + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], + + "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], + + "is-unicode-supported": ["is-unicode-supported@1.3.0", "", {}, "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="], + + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "javascript-stringify": ["javascript-stringify@2.1.0", "", {}, "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg=="], + + "jiti": ["jiti@2.7.0", "", { "bin": "lib/jiti-cli.mjs" }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="], + + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "jsesc": ["jsesc@3.1.0", "", { "bin": "bin/jsesc" }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + + "json5": ["json5@2.2.3", "", { "bin": "lib/cli.js" }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], + + "katex": ["katex@0.16.47", "", { "dependencies": { "commander": "^8.3.0" }, "bin": "cli.js" }, "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg=="], + + "khroma": ["khroma@2.1.0", "", {}, "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="], + + "layout-base": ["layout-base@1.0.2", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="], + + "lightningcss": ["lightningcss@1.30.2", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.30.2", "lightningcss-darwin-arm64": "1.30.2", "lightningcss-darwin-x64": "1.30.2", "lightningcss-freebsd-x64": "1.30.2", "lightningcss-linux-arm-gnueabihf": "1.30.2", "lightningcss-linux-arm64-gnu": "1.30.2", "lightningcss-linux-arm64-musl": "1.30.2", "lightningcss-linux-x64-gnu": "1.30.2", "lightningcss-linux-x64-musl": "1.30.2", "lightningcss-win32-arm64-msvc": "1.30.2", "lightningcss-win32-x64-msvc": "1.30.2" } }, "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.30.2", "", { "os": "android", "cpu": "arm64" }, "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.2", "", { "os": "linux", "cpu": "arm" }, "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.2", "", { "os": "linux", "cpu": "x64" }, "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.2", "", { "os": "linux", "cpu": "x64" }, "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw=="], + + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + + "lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="], + + "log-symbols": ["log-symbols@5.1.0", "", { "dependencies": { "chalk": "^5.0.0", "is-unicode-supported": "^1.1.0" } }, "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA=="], + + "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], + + "lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "lucide-react": ["lucide-react@0.468.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" } }, "sha512-6koYRhnM2N0GGZIdXzSeiNwguv1gt/FAjZOiPl76roBi3xKEXa4WmfpxgQwTTL4KipXjefrnf3oV4IsYhi4JFA=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "mark.js": ["mark.js@8.11.1", "", {}, "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ=="], + + "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], + + "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], + + "marked": ["marked@16.4.2", "", { "bin": "bin/marked.js" }, "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA=="], + + "mdast-util-directive": ["mdast-util-directive@3.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q=="], + + "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], + + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.3", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q=="], + + "mdast-util-frontmatter": ["mdast-util-frontmatter@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "escape-string-regexp": "^5.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0" } }, "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA=="], + + "mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="], + + "mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="], + + "mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="], + + "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], + + "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], + + "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], + + "mdast-util-mdx": ["mdast-util-mdx@3.0.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="], + + "mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="], + + "mdast-util-mdx-jsx": ["mdast-util-mdx-jsx@3.2.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" } }, "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q=="], + + "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], + + "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], + + "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], + + "mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="], + + "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], + + "media-query-parser": ["media-query-parser@2.0.2", "", { "dependencies": { "@babel/runtime": "^7.12.5" } }, "sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w=="], + + "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], + + "mermaid": ["mermaid@11.15.0", "", { "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.2", "@mermaid-js/parser": "^1.1.1", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", "cytoscape": "^3.33.1", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.14", "dayjs": "^1.11.19", "dompurify": "^3.3.1", "es-toolkit": "^1.45.1", "katex": "^0.16.25", "khroma": "^2.1.0", "marked": "^16.3.0", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" } }, "sha512-pTMbcf3rWdtLiYGpmoTjHEpeY8seiy6sR+9nD7LOs8KfUbHE4lOUAprTRqRAcWSQ6MQpdX+YEsxShtGsINtPtw=="], + + "mermaid-isomorphic": ["mermaid-isomorphic@3.1.0", "", { "dependencies": { "@fortawesome/fontawesome-free": "^6.0.0", "katex": "^0.16.0", "mermaid": "^11.0.0" }, "peerDependencies": { "playwright": "1" } }, "sha512-mzrvfEVjnJIkJlEqxp3eMuR1wS0TeLCH1VK5E/T5yzWaBwI3JqjJuw70yUIThSCDJ5bRs6O3rgfp00oBAbvSeQ=="], + + "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], + + "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], + + "micromark-extension-directive": ["micromark-extension-directive@3.0.2", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "parse-entities": "^4.0.0" } }, "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA=="], + + "micromark-extension-frontmatter": ["micromark-extension-frontmatter@2.0.0", "", { "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg=="], + + "micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="], + + "micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="], + + "micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="], + + "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], + + "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="], + + "micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="], + + "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], + + "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="], + + "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.2", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ=="], + + "micromark-extension-mdx-md": ["micromark-extension-mdx-md@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="], + + "micromark-extension-mdxjs": ["micromark-extension-mdxjs@3.0.0", "", { "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", "micromark-extension-mdx-expression": "^3.0.0", "micromark-extension-mdx-jsx": "^3.0.0", "micromark-extension-mdx-md": "^2.0.0", "micromark-extension-mdxjs-esm": "^3.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ=="], + + "micromark-extension-mdxjs-esm": ["micromark-extension-mdxjs-esm@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A=="], + + "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], + + "micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], + + "micromark-factory-mdx-expression": ["micromark-factory-mdx-expression@2.0.3", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-position-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ=="], + + "micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], + + "micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], + + "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], + + "micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], + + "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], + + "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], + + "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], + + "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], + + "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], + + "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], + + "micromark-util-events-to-acorn": ["micromark-util-events-to-acorn@2.0.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg=="], + + "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], + + "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], + + "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], + + "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], + + "micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="], + + "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], + + "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], + + "mime": ["mime@1.6.0", "", { "bin": "cli.js" }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], + + "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], + + "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], + + "mini-svg-data-uri": ["mini-svg-data-uri@1.4.4", "", { "bin": "cli.js" }, "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg=="], + + "minisearch": ["minisearch@7.2.0", "", {}, "sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg=="], + + "mlly": ["mlly@1.8.2", "", { "dependencies": { "acorn": "^8.16.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.3" } }, "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA=="], + + "modern-ahocorasick": ["modern-ahocorasick@1.1.0", "", {}, "sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ=="], + + "ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "nanoid": ["nanoid@3.3.12", "", { "bin": "bin/nanoid.cjs" }, "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ=="], + + "negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="], + + "node-releases": ["node-releases@2.0.47", "", {}, "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og=="], + + "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], + + "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], + + "nuqs": ["nuqs@2.8.9", "", { "dependencies": { "@standard-schema/spec": "1.0.0" }, "peerDependencies": { "@remix-run/react": ">=2", "@tanstack/react-router": "^1", "next": ">=14.2.0", "react": ">=18.2.0 || ^19.0.0-0", "react-router": "^5 || ^6 || ^7", "react-router-dom": "^5 || ^6 || ^7" }, "optionalPeers": ["@remix-run/react", "@tanstack/react-router", "next", "react-router-dom"] }, "sha512-8ou6AEwsxMWSYo2qkfZtYFVzngwbKmg4c00HVxC1fF6CEJv3Fwm6eoZmfVPALB+vw8Udo7KL5uy96PFcYe1BIQ=="], + + "obug": ["obug@2.1.2", "", {}, "sha512-AWGB9WFcRXOQs48Z/udjI5ZcZMHXwX8XPByNpOydgcGsDLIzjGizhoMWJyKAWze7AVW/2W1i+/gPX4YtKe5cyg=="], + + "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], + + "on-headers": ["on-headers@1.1.0", "", {}, "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A=="], + + "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], + + "oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], + + "ora": ["ora@7.0.1", "", { "dependencies": { "chalk": "^5.3.0", "cli-cursor": "^4.0.0", "cli-spinners": "^2.9.0", "is-interactive": "^2.0.0", "is-unicode-supported": "^1.3.0", "log-symbols": "^5.1.0", "stdin-discarder": "^0.1.0", "string-width": "^6.1.0", "strip-ansi": "^7.1.0" } }, "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw=="], + + "p-limit": ["p-limit@5.0.0", "", { "dependencies": { "yocto-queue": "^1.0.0" } }, "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ=="], + + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + + "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], + + "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], + + "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], + + "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], + + "path-data-parser": ["path-data-parser@0.1.0", "", {}, "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w=="], + + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], + + "pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], + + "playwright": ["playwright@1.60.0", "", { "dependencies": { "playwright-core": "1.60.0" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": "cli.js" }, "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA=="], + + "playwright-core": ["playwright-core@1.60.0", "", { "bin": "cli.js" }, "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA=="], + + "points-on-curve": ["points-on-curve@0.2.0", "", {}, "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A=="], + + "points-on-path": ["points-on-path@0.2.1", "", { "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" } }, "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g=="], + + "postcss": ["postcss@8.5.15", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="], + + "radix-ui": ["radix-ui@1.5.0", "", { "dependencies": { "@radix-ui/primitive": "1.1.4", "@radix-ui/react-accessible-icon": "1.1.9", "@radix-ui/react-accordion": "1.2.13", "@radix-ui/react-alert-dialog": "1.1.16", "@radix-ui/react-arrow": "1.1.9", "@radix-ui/react-aspect-ratio": "1.1.9", "@radix-ui/react-avatar": "1.1.12", "@radix-ui/react-checkbox": "1.3.4", "@radix-ui/react-collapsible": "1.1.13", "@radix-ui/react-collection": "1.1.9", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.1.4", "@radix-ui/react-context-menu": "2.3.0", "@radix-ui/react-dialog": "1.1.16", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.12", "@radix-ui/react-dropdown-menu": "2.1.17", "@radix-ui/react-focus-guards": "1.1.4", "@radix-ui/react-focus-scope": "1.1.9", "@radix-ui/react-form": "0.1.9", "@radix-ui/react-hover-card": "1.1.16", "@radix-ui/react-label": "2.1.9", "@radix-ui/react-menu": "2.1.17", "@radix-ui/react-menubar": "1.1.17", "@radix-ui/react-navigation-menu": "1.2.15", "@radix-ui/react-one-time-password-field": "0.1.9", "@radix-ui/react-password-toggle-field": "0.1.4", "@radix-ui/react-popover": "1.1.16", "@radix-ui/react-popper": "1.3.0", "@radix-ui/react-portal": "1.1.11", "@radix-ui/react-presence": "1.1.6", "@radix-ui/react-primitive": "2.1.5", "@radix-ui/react-progress": "1.1.9", "@radix-ui/react-radio-group": "1.4.0", "@radix-ui/react-roving-focus": "1.1.12", "@radix-ui/react-scroll-area": "1.2.11", "@radix-ui/react-select": "2.3.0", "@radix-ui/react-separator": "1.1.9", "@radix-ui/react-slider": "1.4.0", "@radix-ui/react-slot": "1.2.5", "@radix-ui/react-switch": "1.3.0", "@radix-ui/react-tabs": "1.1.14", "@radix-ui/react-toast": "1.2.16", "@radix-ui/react-toggle": "1.1.11", "@radix-ui/react-toggle-group": "1.1.12", "@radix-ui/react-toolbar": "1.1.12", "@radix-ui/react-tooltip": "1.2.9", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-effect-event": "0.0.3", "@radix-ui/react-use-escape-keydown": "1.1.2", "@radix-ui/react-use-is-hydrated": "0.1.1", "@radix-ui/react-use-layout-effect": "1.1.2", "@radix-ui/react-use-size": "1.1.2", "@radix-ui/react-visually-hidden": "1.2.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-Nzh2HNpClgB31FBHRqt2xG8XNUfVfQRpf34hACC5PNrXTd5JdXdqOXwLs3BL+D8CNYiNQiJiT8QGr5Q4vq+00w=="], + + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + + "react": ["react@19.2.7", "", {}, "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ=="], + + "react-dom": ["react-dom@19.2.7", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.7" } }, "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ=="], + + "react-intersection-observer": ["react-intersection-observer@9.16.0", "", { "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-w9nJSEp+DrW9KmQmeWHQyfaP6b03v+TdXynaoA964Wxt7mdR3An11z4NNCQgL4gKSK7y1ver2Fq+JKH6CWEzUA=="], + + "react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], + + "react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="], + + "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], + + "react-router": ["react-router@7.17.0", "", { "dependencies": { "cookie": "^1.0.1", "set-cookie-parser": "^2.6.0" }, "peerDependencies": { "react": ">=18", "react-dom": ">=18" } }, "sha512-FDELK7rTMlCHO5+reyXsPlmfr7N1F91lPHsWYfMEGQm/KQ+F4JFM8jGoeQDmDvdTs93Fw9aSilH+uKRb4/jXvQ=="], + + "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], + + "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + + "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], + + "recma-jsx": ["recma-jsx@1.0.1", "", { "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", "recma-parse": "^1.0.0", "recma-stringify": "^1.0.0", "unified": "^11.0.0" }, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w=="], + + "recma-parse": ["recma-parse@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ=="], + + "recma-stringify": ["recma-stringify@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="], + + "regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], + + "regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], + + "regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="], + + "rehype-autolink-headings": ["rehype-autolink-headings@7.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-heading-rank": "^3.0.0", "hast-util-is-element": "^3.0.0", "unified": "^11.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw=="], + + "rehype-class-names": ["rehype-class-names@2.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-classnames": "^3.0.0", "hast-util-select": "^6.0.0", "unified": "^11.0.4" } }, "sha512-jldCIiAEvXKdq8hqr5f5PzNdIDkvHC6zfKhwta9oRoMu7bn0W7qLES/JrrjBvr9rKz3nJ8x4vY1EWI+dhjHVZQ=="], + + "rehype-mermaid": ["rehype-mermaid@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html-isomorphic": "^2.0.0", "hast-util-to-text": "^4.0.0", "mermaid-isomorphic": "^3.0.0", "mini-svg-data-uri": "^1.0.0", "space-separated-tokens": "^2.0.0", "unified": "^11.0.0", "unist-util-visit-parents": "^6.0.0", "vfile": "^6.0.0" }, "peerDependencies": { "playwright": "1" } }, "sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q=="], + + "rehype-recma": ["rehype-recma@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="], + + "rehype-slug": ["rehype-slug@6.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "github-slugger": "^2.0.0", "hast-util-heading-rank": "^3.0.0", "hast-util-to-string": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A=="], + + "remark-directive": ["remark-directive@3.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-directive": "^3.0.0", "micromark-extension-directive": "^3.0.0", "unified": "^11.0.0" } }, "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A=="], + + "remark-frontmatter": ["remark-frontmatter@5.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-frontmatter": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0", "unified": "^11.0.0" } }, "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ=="], + + "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], + + "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="], + + "remark-mdx-frontmatter": ["remark-mdx-frontmatter@5.2.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "estree-util-value-to-estree": "^3.0.0", "toml": "^3.0.0", "unified": "^11.0.0", "unist-util-mdx-define": "^1.0.0", "yaml": "^2.0.0" } }, "sha512-U/hjUYTkQqNjjMRYyilJgLXSPF65qbLPdoESOkXyrwz2tVyhAnm4GUKhfXqOOS9W34M3545xEMq+aMpHgVjEeQ=="], + + "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], + + "remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], + + "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], + + "require-like": ["require-like@0.1.2", "", {}, "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A=="], + + "restore-cursor": ["restore-cursor@4.0.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg=="], + + "robust-predicates": ["robust-predicates@3.0.3", "", {}, "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA=="], + + "rolldown": ["rolldown@1.0.3", "", { "dependencies": { "@oxc-project/types": "=0.133.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.3", "@rolldown/binding-darwin-arm64": "1.0.3", "@rolldown/binding-darwin-x64": "1.0.3", "@rolldown/binding-freebsd-x64": "1.0.3", "@rolldown/binding-linux-arm-gnueabihf": "1.0.3", "@rolldown/binding-linux-arm64-gnu": "1.0.3", "@rolldown/binding-linux-arm64-musl": "1.0.3", "@rolldown/binding-linux-ppc64-gnu": "1.0.3", "@rolldown/binding-linux-s390x-gnu": "1.0.3", "@rolldown/binding-linux-x64-gnu": "1.0.3", "@rolldown/binding-linux-x64-musl": "1.0.3", "@rolldown/binding-openharmony-arm64": "1.0.3", "@rolldown/binding-wasm32-wasi": "1.0.3", "@rolldown/binding-win32-arm64-msvc": "1.0.3", "@rolldown/binding-win32-x64-msvc": "1.0.3" }, "bin": "bin/cli.mjs" }, "sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g=="], + + "rollup": ["rollup@4.61.1", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.61.1", "@rollup/rollup-android-arm64": "4.61.1", "@rollup/rollup-darwin-arm64": "4.61.1", "@rollup/rollup-darwin-x64": "4.61.1", "@rollup/rollup-freebsd-arm64": "4.61.1", "@rollup/rollup-freebsd-x64": "4.61.1", "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", "@rollup/rollup-linux-arm-musleabihf": "4.61.1", "@rollup/rollup-linux-arm64-gnu": "4.61.1", "@rollup/rollup-linux-arm64-musl": "4.61.1", "@rollup/rollup-linux-loong64-gnu": "4.61.1", "@rollup/rollup-linux-loong64-musl": "4.61.1", "@rollup/rollup-linux-ppc64-gnu": "4.61.1", "@rollup/rollup-linux-ppc64-musl": "4.61.1", "@rollup/rollup-linux-riscv64-gnu": "4.61.1", "@rollup/rollup-linux-riscv64-musl": "4.61.1", "@rollup/rollup-linux-s390x-gnu": "4.61.1", "@rollup/rollup-linux-x64-gnu": "4.61.1", "@rollup/rollup-linux-x64-musl": "4.61.1", "@rollup/rollup-openbsd-x64": "4.61.1", "@rollup/rollup-openharmony-arm64": "4.61.1", "@rollup/rollup-win32-arm64-msvc": "4.61.1", "@rollup/rollup-win32-ia32-msvc": "4.61.1", "@rollup/rollup-win32-x64-gnu": "4.61.1", "@rollup/rollup-win32-x64-msvc": "4.61.1", "fsevents": "~2.3.2" }, "bin": "dist/bin/rollup" }, "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA=="], + + "roughjs": ["roughjs@4.6.6", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="], + + "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], + + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], + + "semver": ["semver@6.3.1", "", { "bin": "bin/semver.js" }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "send": ["send@0.19.2", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "~0.5.2", "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "~2.4.1", "range-parser": "~1.2.1", "statuses": "~2.0.2" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="], + + "serve-static": ["serve-static@1.16.3", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "~0.19.1" } }, "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA=="], + + "set-cookie-parser": ["set-cookie-parser@2.7.2", "", {}, "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="], + + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], + + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "shiki": ["shiki@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/langs": "1.29.2", "@shikijs/themes": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg=="], + + "signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], + + "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], + + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + + "stdin-discarder": ["stdin-discarder@0.1.0", "", { "dependencies": { "bl": "^5.0.0" } }, "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ=="], + + "string-width": ["string-width@6.1.0", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^10.2.1", "strip-ansi": "^7.0.1" } }, "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ=="], + + "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], + + "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], + + "strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], + + "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], + + "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], + + "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], + + "stylis": ["stylis@4.4.0", "", {}, "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA=="], + + "tabbable": ["tabbable@6.4.0", "", {}, "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg=="], + + "tailwindcss": ["tailwindcss@4.1.15", "", {}, "sha512-k2WLnWkYFkdpRv+Oby3EBXIyQC8/s1HOFMBUViwtAh6Z5uAozeUSMQlIsn/c6Q2iJzqG6aJT3wdPaRNj70iYxQ=="], + + "tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="], + + "tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], + + "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], + + "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + + "toml": ["toml@3.0.0", "", {}, "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w=="], + + "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], + + "trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], + + "ts-dedent": ["ts-dedent@2.2.0", "", {}, "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "twoslash": ["twoslash@0.3.8", "", { "dependencies": { "@typescript/vfs": "^1.6.4", "twoslash-protocol": "0.3.8" }, "peerDependencies": { "typescript": "^5.5.0 || ^6.0.0" } }, "sha512-OeDz0kDl8sqPUN3nr7gqcvOs70f5lZsdhKYTX3/SgB9OvdadzzoYJI/4SBXhXV1HG8E9fLc+e17itoRYTxmoig=="], + + "twoslash-protocol": ["twoslash-protocol@0.3.8", "", {}, "sha512-HmvAHoiEviK8LqvAQyc9/irkdvwTUiR1fHmNwH/0gq8EHxyBt4PWVPixjEXg6wJu1u6yBrILEWXGK9Kw58/8yQ=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "ua-parser-js": ["ua-parser-js@1.0.41", "", { "bin": "script/cli.js" }, "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug=="], + + "ufo": ["ufo@1.6.4", "", {}, "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA=="], + + "undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], + + "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], + + "unist-util-find-after": ["unist-util-find-after@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="], + + "unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], + + "unist-util-mdx-define": ["unist-util-mdx-define@1.1.2", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-9ncH7i7TN5Xn7/tzX5bE3rXgz1X/u877gYVAUB3mLeTKYJmQHmqKTDBi6BTGXV7AeolBCI9ErcVsOt2qryoD0g=="], + + "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], + + "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], + + "unist-util-remove-position": ["unist-util-remove-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q=="], + + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], + + "unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], + + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], + + "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], + + "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": "cli.js" }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + + "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], + + "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "uuid": ["uuid@14.0.0", "", { "bin": "dist-node/bin/uuid" }, "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg=="], + + "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + + "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], + + "vfile-location": ["vfile-location@5.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg=="], + + "vfile-matter": ["vfile-matter@5.0.1", "", { "dependencies": { "vfile": "^6.0.0", "yaml": "^2.0.0" } }, "sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw=="], + + "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], + + "vite": ["vite@7.3.5", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx"], "bin": "bin/vite.js" }, "sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww=="], + + "vite-node": ["vite-node@6.0.0", "", { "dependencies": { "cac": "^7.0.0", "es-module-lexer": "^2.0.0", "obug": "^2.1.1", "pathe": "^2.0.3", "vite": "^8.0.0" }, "bin": "dist/cli.mjs" }, "sha512-oj4PVrT+pDh6GYf5wfUXkcZyekYS8kKPfLPXVl8qe324Ec6l4K2DUKNadRbZ3LQl0qGcDz+PyOo7ZAh00Y+JjQ=="], + + "vocs": ["vocs@1.4.1", "", { "dependencies": { "@floating-ui/react": "^0.27.16", "@hono/node-server": "^1.19.5", "@mdx-js/mdx": "^3.1.1", "@mdx-js/react": "^3.1.1", "@mdx-js/rollup": "^3.1.1", "@noble/hashes": "^1.7.1", "@radix-ui/colors": "^3.0.0", "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-label": "^2.1.2", "@radix-ui/react-navigation-menu": "^1.2.5", "@radix-ui/react-popover": "^1.1.6", "@radix-ui/react-tabs": "^1.1.3", "@shikijs/rehype": "^1", "@shikijs/transformers": "^1", "@shikijs/twoslash": "^1", "@tailwindcss/vite": "4.1.15", "@vanilla-extract/css": "^1.17.4", "@vanilla-extract/dynamic": "^2.1.5", "@vanilla-extract/vite-plugin": "^5.1.1", "@vitejs/plugin-react": "^5.0.4", "autoprefixer": "^10.4.21", "cac": "^6.7.14", "chroma-js": "^3.1.2", "clsx": "^2.1.1", "compression": "^1.8.1", "create-vocs": "^1.0.0-alpha.5", "cross-spawn": "^7.0.6", "fs-extra": "^11.3.2", "hastscript": "^8.0.0", "hono": "^4.10.3", "mark.js": "^8.11.1", "mdast-util-directive": "^3.1.0", "mdast-util-from-markdown": "^2.0.2", "mdast-util-frontmatter": "^2.0.1", "mdast-util-gfm": "^3.1.0", "mdast-util-mdx": "^3.0.0", "mdast-util-mdx-jsx": "^3.2.0", "mdast-util-to-hast": "^13.2.0", "mdast-util-to-markdown": "^2.1.2", "minisearch": "^7.2.0", "nuqs": "^2.7.2", "ora": "^7.0.1", "p-limit": "^5.0.0", "picomatch": "^4.0.3", "playwright": "^1.52.0", "postcss": "^8.5.2", "radix-ui": "^1.1.3", "react-intersection-observer": "^9.15.1", "react-router": "^7.9.4", "rehype-autolink-headings": "^7.1.0", "rehype-class-names": "^2.0.0", "rehype-mermaid": "^3.0.0", "rehype-slug": "^6.0.0", "remark-directive": "^3.0.1", "remark-frontmatter": "^5.0.0", "remark-gfm": "^4.0.1", "remark-mdx": "^3.1.1", "remark-mdx-frontmatter": "^5.2.0", "remark-parse": "^11.0.0", "serve-static": "^1.16.2", "shiki": "^1", "toml": "^3.0.0", "twoslash": "~0.3.4", "ua-parser-js": "^1.0.40", "unified": "^11.0.5", "unist-util-visit": "^5.0.0", "vfile-matter": "^5.0.1", "vite": "^7.1.11", "yaml": "^2.8.1" }, "peerDependencies": { "react": "^19", "react-dom": "^19" }, "bin": "_lib/cli/index.js" }, "sha512-PwCODbht+/0f6wtAyz5czqdWaMX80KlxOc6Mkqfd0u6bboTZ+YcyBuZaiQwJ4lkDE6NvSrCosPVD5CxGyvtitg=="], + + "web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="], + + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "yaml": ["yaml@2.9.0", "", { "bin": "bin.mjs" }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], + + "yocto-queue": ["yocto-queue@1.2.2", "", {}, "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ=="], + + "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + + "@babel/core/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "@babel/traverse/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + + "@shikijs/twoslash/twoslash": ["twoslash@0.2.12", "", { "dependencies": { "@typescript/vfs": "^1.6.0", "twoslash-protocol": "0.2.12" }, "peerDependencies": { "typescript": "*" } }, "sha512-tEHPASMqi7kqwfJbkk7hc/4EhlrKCSLcur+TcvYki3vhIfaRMXnXjaYFgXpoZRbT6GdprD4tGuVBEmTpUgLBsw=="], + + "@typescript/vfs/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "@vanilla-extract/integration/esbuild": ["esbuild@0.28.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.0", "@esbuild/android-arm": "0.28.0", "@esbuild/android-arm64": "0.28.0", "@esbuild/android-x64": "0.28.0", "@esbuild/darwin-arm64": "0.28.0", "@esbuild/darwin-x64": "0.28.0", "@esbuild/freebsd-arm64": "0.28.0", "@esbuild/freebsd-x64": "0.28.0", "@esbuild/linux-arm": "0.28.0", "@esbuild/linux-arm64": "0.28.0", "@esbuild/linux-ia32": "0.28.0", "@esbuild/linux-loong64": "0.28.0", "@esbuild/linux-mips64el": "0.28.0", "@esbuild/linux-ppc64": "0.28.0", "@esbuild/linux-riscv64": "0.28.0", "@esbuild/linux-s390x": "0.28.0", "@esbuild/linux-x64": "0.28.0", "@esbuild/netbsd-arm64": "0.28.0", "@esbuild/netbsd-x64": "0.28.0", "@esbuild/openbsd-arm64": "0.28.0", "@esbuild/openbsd-x64": "0.28.0", "@esbuild/openharmony-arm64": "0.28.0", "@esbuild/sunos-x64": "0.28.0", "@esbuild/win32-arm64": "0.28.0", "@esbuild/win32-ia32": "0.28.0", "@esbuild/win32-x64": "0.28.0" }, "bin": "bin/esbuild" }, "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw=="], + + "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], + + "d3-dsv/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], + + "d3-sankey/d3-array": ["d3-array@2.12.1", "", { "dependencies": { "internmap": "^1.0.0" } }, "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ=="], + + "d3-sankey/d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], + + "hast-util-from-dom/hastscript": ["hastscript@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="], + + "hast-util-from-parse5/hastscript": ["hastscript@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="], + + "hast-util-from-parse5/property-information": ["property-information@7.2.0", "", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="], + + "hast-util-select/property-information": ["property-information@7.2.0", "", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="], + + "hast-util-to-estree/property-information": ["property-information@7.2.0", "", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="], + + "hast-util-to-html/property-information": ["property-information@7.2.0", "", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="], + + "hast-util-to-jsx-runtime/property-information": ["property-information@7.2.0", "", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="], + + "micromark/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + + "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], + + "rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], + + "send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "send/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "vite/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "vite-node/cac": ["cac@7.0.0", "", {}, "sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ=="], + + "vite-node/vite": ["vite@8.0.16", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.15", "rolldown": "1.0.3", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.18", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@vitejs/devtools", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx"], "bin": "bin/vite.js" }, "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw=="], + + "@babel/core/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "@babel/traverse/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "@shikijs/twoslash/twoslash/twoslash-protocol": ["twoslash-protocol@0.2.12", "", {}, "sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg=="], + + "@typescript/vfs/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "@vanilla-extract/integration/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA=="], + + "@vanilla-extract/integration/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.0", "", { "os": "android", "cpu": "arm" }, "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ=="], + + "@vanilla-extract/integration/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.0", "", { "os": "android", "cpu": "arm64" }, "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw=="], + + "@vanilla-extract/integration/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.0", "", { "os": "android", "cpu": "x64" }, "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA=="], + + "@vanilla-extract/integration/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q=="], + + "@vanilla-extract/integration/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ=="], + + "@vanilla-extract/integration/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q=="], + + "@vanilla-extract/integration/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw=="], + + "@vanilla-extract/integration/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.0", "", { "os": "linux", "cpu": "arm" }, "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw=="], + + "@vanilla-extract/integration/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A=="], + + "@vanilla-extract/integration/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ=="], + + "@vanilla-extract/integration/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg=="], + + "@vanilla-extract/integration/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w=="], + + "@vanilla-extract/integration/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg=="], + + "@vanilla-extract/integration/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ=="], + + "@vanilla-extract/integration/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q=="], + + "@vanilla-extract/integration/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.0", "", { "os": "linux", "cpu": "x64" }, "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ=="], + + "@vanilla-extract/integration/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw=="], + + "@vanilla-extract/integration/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.0", "", { "os": "none", "cpu": "x64" }, "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw=="], + + "@vanilla-extract/integration/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g=="], + + "@vanilla-extract/integration/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA=="], + + "@vanilla-extract/integration/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w=="], + + "@vanilla-extract/integration/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw=="], + + "@vanilla-extract/integration/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA=="], + + "@vanilla-extract/integration/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA=="], + + "@vanilla-extract/integration/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.0", "", { "os": "win32", "cpu": "x64" }, "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw=="], + + "cytoscape-fcose/cose-base/layout-base": ["layout-base@2.0.1", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="], + + "d3-sankey/d3-array/internmap": ["internmap@1.0.1", "", {}, "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="], + + "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], + + "hast-util-from-dom/hastscript/property-information": ["property-information@7.2.0", "", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="], + + "micromark/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "p-locate/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "vite-node/vite/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "vite-node/vite/lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + + "vite-node/vite/lightningcss/lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + + "vite-node/vite/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + + "vite-node/vite/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + + "vite-node/vite/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + + "vite-node/vite/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + + "vite-node/vite/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + + "vite-node/vite/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + + "vite-node/vite/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + + "vite-node/vite/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "vite-node/vite/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "vite-node/vite/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + } +} diff --git a/docs/pages/en/explanation/build-overview.mdx b/docs/pages/en/explanation/build-overview.mdx index 4b19d1f..31130e6 100755 --- a/docs/pages/en/explanation/build-overview.mdx +++ b/docs/pages/en/explanation/build-overview.mdx @@ -20,4 +20,4 @@ New to Stable? Run the [Quick start](/en/tutorial/quick-start) first. It takes f - [**Quick start**](/en/tutorial/quick-start): Connect to testnet, fund a wallet, and send your first USDT0 transaction. - [**Send your first USDT0**](/en/tutorial/send-usdt0): Native and ERC-20 transfers on the same balance, with TypeScript examples. - [**Deploy a smart contract**](/en/tutorial/smart-contract): Scaffold Foundry, configure Stable, and deploy the Counter contract. -- [**Stable SDK**](/en/explanation/sdk-overview): Use the typed TypeScript client for transfer, bridge, and swap on Stable. +- [**Tools and SDK**](/en/explanation/tools-overview): Reach for the typed TypeScript SDKs, the service APIs, and the MCP servers. diff --git a/docs/pages/en/explanation/gas-waiver.mdx b/docs/pages/en/explanation/gas-waiver.mdx index a03f510..73109dc 100755 --- a/docs/pages/en/explanation/gas-waiver.mdx +++ b/docs/pages/en/explanation/gas-waiver.mdx @@ -52,6 +52,18 @@ Gas Waiver fits any flow where the end user shouldn't have to hold USDT0 for gas For flows where the user does hold USDT0 but wants to bundle multiple calls into one signed transaction, see [EIP-7702 delegation](/en/reference/eip-7702-api) instead. +## Choosing an integration path + +All three paths produce the same on-chain result. They differ in who holds the waiver key and how much you build. + +| Path | Who holds the waiver key | Use when | +| :--- | :--- | :--- | +| [Hosted Waiver Server](/en/how-to/integrate-gas-waiver) | Stable, and you authenticate with an API key | You want the shortest path and can depend on Stable's service for submission. | +| [Enterprise SDK](/en/how-to/relay-with-gas-waiver) | You, registered through governance | You run your own waiver in TypeScript and want one call to build, sign, and broadcast. | +| [Self-hosted wrappers](/en/how-to/self-hosted-gas-waiver) | You, registered through governance | You construct wrapper transactions yourself, in a language the SDK doesn't cover. | + +The hosted server registers and operates the waiver for you, so you never construct a `WrapperTx`. Both self-hosted paths need a governance-registered waiver address, and `@stablechain/enterprise` is the typed client for that model. + ## Next recommended - [**Enable gas-free transactions**](/en/how-to/integrate-gas-waiver): Integrate the hosted Waiver Server API with API-key submission and NDJSON responses. diff --git a/docs/pages/en/explanation/tools-overview.mdx b/docs/pages/en/explanation/tools-overview.mdx new file mode 100644 index 0000000..6eecb79 --- /dev/null +++ b/docs/pages/en/explanation/tools-overview.mdx @@ -0,0 +1,39 @@ +--- +title: "Tools and SDK" +description: "Pick the right Stable tool: the typed TypeScript SDKs, the gas waiver and EIP-7702 service APIs, and the MCP servers for AI clients." +diataxis: "explanation" +--- + +# Tools and SDK + +Everything you call Stable with lives here. Building a product on Stable? Start with the [Stable SDK](/en/explanation/sdk-overview) and drop down to a service API when you need a rail the SDK doesn't wrap. Sponsoring gas or relaying transactions from a backend? Start with the [Enterprise SDK](/en/explanation/enterprise-sdk). Wiring Stable into an AI editor or agent? Go to [Develop with AI](/en/how-to/develop-with-ai). + +## Build with SDKs + +- [**Stable SDK**](/en/explanation/sdk-overview): `@stablechain/sdk`, the typed TypeScript client for transfer, bridge, swap, and vault yield. It wraps viem and handles routing, approvals, decimals, and chain switching. +- [**SDK quickstart**](/en/tutorial/sdk-quickstart): Install the package, send your first USDT0 transfer on testnet, and preview a mainnet bridge quote. +- [**SDK reference**](/en/reference/sdk): `createStable`, `createStableReader`, the transfer, bridge, swap, and earn methods, enums, and error classes. +- [**Enterprise SDK**](/en/explanation/enterprise-sdk): `@stablechain/enterprise`, the server-side client for gas-waived transactions and reserved Enterprise-lane blockspace. +- [**Enterprise SDK reference**](/en/reference/enterprise-sdk): `createStableEnterprise`, both rails, build helpers, and error classes. + +## Use the SDK with your stack + +- [**viem**](/en/how-to/sdk-with-viem): Sign three ways: a private-key Account, a browser Transport, or a pre-built viem WalletClient. +- [**wagmi**](/en/how-to/sdk-with-wagmi): Wire the SDK into a React app with `useWalletClient`, `useAccount`, and `useChainId`. +- [**Earn yield**](/en/how-to/earn-yield): Deposit USDT0 into a Morpho vault, read APY and position, withdraw, and claim Merkl rewards. + +## Service APIs + +- [**Gas waiver protocol**](/en/reference/gas-waiver-api): Transaction formats, marker routing, governance controls, and the Waiver Server API you post signed `InnerTx` payloads to. +- [**EIP-7702**](/en/reference/eip-7702-api): Delegation transaction format and RPC behavior for pointing an EOA's account code at a smart contract. + +## AI and agent tooling + +- [**Develop with AI**](/en/how-to/develop-with-ai): Add the Docs MCP and Runtime MCP servers to any MCP-compatible client, plus plain-text docs for tools without MCP. +- [**Pay with MCP server**](/en/how-to/pay-with-mcp): Expose x402-paid APIs as MCP tools so AI clients call and pay for them through prompts. + +## Where to go next + +- [**Quick start**](/en/tutorial/quick-start): Connect to testnet, fund a wallet, and send your first USDT0 transaction. +- [**JSON-RPC API**](/en/reference/json-rpc-api): Supported methods across the `eth`, `net`, `web3`, and `debug` namespaces. +- [**Build**](/en/explanation/build-overview): Accounts, payments, contracts, and agents, organized by what you're shipping. diff --git a/docs/pages/en/how-to/integrate-gas-waiver.mdx b/docs/pages/en/how-to/integrate-gas-waiver.mdx index eaaf45d..29f1288 100755 --- a/docs/pages/en/how-to/integrate-gas-waiver.mdx +++ b/docs/pages/en/how-to/integrate-gas-waiver.mdx @@ -8,7 +8,7 @@ diataxis: "how-to" Gas Waiver enables gas-free transactions on Stable. With Gas Waiver, applications cover gas fees on behalf of users, so users can interact with contracts without holding USDT0 for gas. -This guide covers integrating via the Waiver Server API. +This guide covers the hosted Waiver Server API, where Stable operates the waiver and you authenticate with an API key. To register your own waiver address through governance instead, see [Choosing an integration path](/en/explanation/gas-waiver#choosing-an-integration-path). :::note **Concept:** For what Gas Waiver is, why it exists, and how governance-authorized waivers work, see [Gas waiver](/en/explanation/gas-waiver). For the full protocol specification (wrapper transaction format, marker address, execution semantics, security model), see [Gas waiver protocol](/en/reference/gas-waiver-api). @@ -204,4 +204,4 @@ WebSocket interface for streaming submissions. Authentication: required (Bearer) - [**Zero gas transactions**](/en/how-to/zero-gas-transactions): See the demo-focused flow and how to verify zero gas on a receipt. - [**Self-hosted Gas Waiver**](/en/how-to/self-hosted-gas-waiver): Run your own waiver without the hosted API. - [**Gas waiver protocol**](/en/reference/gas-waiver-api): Full wrapper transaction spec and governance model. -- [**Stable SDK**](/en/explanation/sdk-overview): Use the typed client to sign user transactions you then submit to the Waiver Server. +- [**Relay with gas waiver**](/en/how-to/relay-with-gas-waiver): Sponsor gas from your own governance-registered waiver with the Enterprise SDK. diff --git a/docs/pages/en/how-to/relay-with-gas-waiver.mdx b/docs/pages/en/how-to/relay-with-gas-waiver.mdx index a41b82d..9bf9671 100644 --- a/docs/pages/en/how-to/relay-with-gas-waiver.mdx +++ b/docs/pages/en/how-to/relay-with-gas-waiver.mdx @@ -153,3 +153,4 @@ See the full [`ErrorCode`](/en/reference/enterprise-sdk#errorcode) table for eve - [**Send guaranteed transactions**](/en/how-to/send-guaranteed-transactions): Land transactions in reserved Enterprise-lane blockspace, and combine it with gas waiver. - [**Enterprise SDK reference**](/en/reference/enterprise-sdk#relay-with-gas-waiver): Every method, config option, and error class in full. - [**Gas waiver**](/en/explanation/gas-waiver): How zero-gas transactions work at the protocol level. +- [**Enable gas-free transactions**](/en/how-to/integrate-gas-waiver): Use Stable's hosted Waiver Server instead of registering your own waiver. diff --git a/docs/pages/en/how-to/self-hosted-gas-waiver.mdx b/docs/pages/en/how-to/self-hosted-gas-waiver.mdx index c054baf..9954e27 100755 --- a/docs/pages/en/how-to/self-hosted-gas-waiver.mdx +++ b/docs/pages/en/how-to/self-hosted-gas-waiver.mdx @@ -16,6 +16,10 @@ This guide covers registering a waiver address, collecting signed user transacti For the hosted Waiver Server API integration path, see [Enable gas-free transactions](/en/how-to/integrate-gas-waiver). +:::tip +`@stablechain/enterprise` does everything below in one call against the same governance-registered waiver. If you're writing TypeScript, use [Relay with gas waiver](/en/how-to/relay-with-gas-waiver) instead of building wrapper transactions by hand. +::: + ## Prerequisites - A waiver address registered on-chain via validator governance. diff --git a/docs/pages/en/reference/gas-waiver-api.mdx b/docs/pages/en/reference/gas-waiver-api.mdx index 73af0a8..341f351 100755 --- a/docs/pages/en/reference/gas-waiver-api.mdx +++ b/docs/pages/en/reference/gas-waiver-api.mdx @@ -137,11 +137,15 @@ Gas Waiver introduces a service dependency if partners route submissions through ## Integration -You integrate by: +Three paths produce the same on-chain result, differing in who holds the waiver key. See [Choosing an integration path](/en/explanation/gas-waiver#choosing-an-integration-path). + +Against the hosted Waiver Server: 1. Collect a signed `InnerTx` from the user (`gasPrice = 0`). 2. Submit the signed inner transaction to the Waiver Server API. -3. Handle streamed results and surfacing transaction hashes to end users. +3. Handle the streamed results and surface transaction hashes to end users. + +From a waiver address you registered yourself, `@stablechain/enterprise` builds, signs, and broadcasts the `WrapperTx` in one call. See [Relay with gas waiver](/en/how-to/relay-with-gas-waiver), or [Self-hosted gas waiver](/en/how-to/self-hosted-gas-waiver) to construct wrappers directly. ## Waiver server @@ -274,4 +278,5 @@ async function createInnerTx(userWallet, contractAddress, callData, nonce) { - [**Zero gas transactions**](/en/how-to/zero-gas-transactions): Demo-focused walkthrough with a receipt showing zero gas fee. - [**Enable gas-free transactions**](/en/how-to/integrate-gas-waiver): Full hosted-API integration guide with batch submissions and error handling. - [**Self-hosted Gas Waiver**](/en/how-to/self-hosted-gas-waiver): Run your own waiver infrastructure without the hosted API. +- [**Relay with gas waiver**](/en/how-to/relay-with-gas-waiver): Sponsor gas from your own waiver with the typed Enterprise SDK client. diff --git a/docs/pages/en/reference/node-operations-overview.mdx b/docs/pages/en/reference/node-operations-overview.mdx index 292d911..834cf7c 100755 --- a/docs/pages/en/reference/node-operations-overview.mdx +++ b/docs/pages/en/reference/node-operations-overview.mdx @@ -1,12 +1,12 @@ --- -title: "Operate" +title: "Run a Stable node" description: "Run a Stable node. Install, configure, monitor, and upgrade." diataxis: "reference" --- -# Operate +# Run a Stable node -Operate covers running a Stable node: full or archive, testnet or mainnet, from install through monitoring. For the chain-level behavior your node enforces (fee model, finality, USDT0 as gas), see [Gas pricing](/en/explanation/gas-pricing), [Finality](/en/explanation/finality), and the [Architecture overview](/en/explanation/core-optimization-overview). +This section covers running a Stable node: full or archive, testnet or mainnet, from install through monitoring. For the chain-level behavior your node enforces (fee model, finality, USDT0 as gas), see [Gas pricing](/en/explanation/gas-pricing), [Finality](/en/explanation/finality), and the [Architecture overview](/en/explanation/core-optimization-overview). ## Quick links diff --git a/docs/sidebar.json b/docs/sidebar.json index 6423545..76942b2 100644 --- a/docs/sidebar.json +++ b/docs/sidebar.json @@ -178,62 +178,6 @@ "text": "Quick Start", "link": "/en/tutorial/quick-start" }, - { - "text": "Stable SDK", - "collapsed": true, - "items": [ - { - "text": "Overview", - "link": "/en/explanation/sdk-overview" - }, - { - "text": "Quickstart", - "link": "/en/tutorial/sdk-quickstart" - }, - { - "text": "Reference", - "link": "/en/reference/sdk" - }, - { - "text": "Earn Yield", - "link": "/en/how-to/earn-yield" - }, - { - "text": "Viem Integration", - "link": "/en/how-to/sdk-with-viem" - }, - { - "text": "Wagmi Integration", - "link": "/en/how-to/sdk-with-wagmi" - } - ] - }, - { - "text": "Enterprise SDK", - "collapsed": true, - "items": [ - { - "text": "Overview", - "link": "/en/explanation/enterprise-sdk" - }, - { - "text": "Relay Transactions", - "link": "/en/how-to/relay-with-gas-waiver" - }, - { - "text": "Guaranteed Blockspace", - "link": "/en/how-to/send-guaranteed-transactions" - }, - { - "text": "Guaranteed Relayed Transactions", - "link": "/en/how-to/guaranteed-relayed-transactions" - }, - { - "text": "Reference", - "link": "/en/reference/enterprise-sdk" - } - ] - }, { "text": "Onboard users", "collapsed": true, @@ -583,7 +527,73 @@ ] }, { - "text": "Operate", + "text": "Tools and SDK", + "collapsed": true, + "items": [ + { + "text": "Tools and SDK overview", + "link": "/en/explanation/tools-overview" + }, + { + "text": "Stable SDK", + "collapsed": true, + "items": [ + { + "text": "Overview", + "link": "/en/explanation/sdk-overview" + }, + { + "text": "Quickstart", + "link": "/en/tutorial/sdk-quickstart" + }, + { + "text": "Reference", + "link": "/en/reference/sdk" + }, + { + "text": "Earn Yield", + "link": "/en/how-to/earn-yield" + }, + { + "text": "Viem Integration", + "link": "/en/how-to/sdk-with-viem" + }, + { + "text": "Wagmi Integration", + "link": "/en/how-to/sdk-with-wagmi" + } + ] + }, + { + "text": "Enterprise SDK", + "collapsed": true, + "items": [ + { + "text": "Overview", + "link": "/en/explanation/enterprise-sdk" + }, + { + "text": "Relay Transactions", + "link": "/en/how-to/relay-with-gas-waiver" + }, + { + "text": "Guaranteed Blockspace", + "link": "/en/how-to/send-guaranteed-transactions" + }, + { + "text": "Guaranteed Relayed Transactions", + "link": "/en/how-to/guaranteed-relayed-transactions" + }, + { + "text": "Reference", + "link": "/en/reference/enterprise-sdk" + } + ] + } + ] + }, + { + "text": "Run a Stable node", "collapsed": true, "items": [ { From 5c30223d191eca57a8d0e871a5834665c4f99c81 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 18 Sep 2026 04:39:55 +0000 Subject: [PATCH 2/2] i18n: auto-translate cn/ko for changed en content --- docs/pages/cn/explanation/build-overview.mdx | 16 +- docs/pages/cn/explanation/gas-waiver.mdx | 72 ++-- docs/pages/cn/explanation/tools-overview.mdx | 41 ++ docs/pages/cn/how-to/integrate-gas-waiver.mdx | 60 +-- .../pages/cn/how-to/relay-with-gas-waiver.mdx | 61 +-- .../cn/how-to/self-hosted-gas-waiver.mdx | 51 +-- docs/pages/cn/reference/gas-waiver-api.mdx | 131 ++++--- .../cn/reference/node-operations-overview.mdx | 72 ++-- docs/pages/ko/explanation/build-overview.mdx | 24 +- docs/pages/ko/explanation/gas-waiver.mdx | 58 +-- docs/pages/ko/explanation/tools-overview.mdx | 41 ++ docs/pages/ko/how-to/integrate-gas-waiver.mdx | 64 +-- .../pages/ko/how-to/relay-with-gas-waiver.mdx | 63 +-- .../ko/how-to/self-hosted-gas-waiver.mdx | 36 +- docs/pages/ko/reference/gas-waiver-api.mdx | 131 ++++--- .../ko/reference/node-operations-overview.mdx | 62 +-- docs/sidebar.json | 368 +++++++++--------- 17 files changed, 749 insertions(+), 602 deletions(-) create mode 100644 docs/pages/cn/explanation/tools-overview.mdx create mode 100644 docs/pages/ko/explanation/tools-overview.mdx diff --git a/docs/pages/cn/explanation/build-overview.mdx b/docs/pages/cn/explanation/build-overview.mdx index f8e2648..29f200f 100644 --- a/docs/pages/cn/explanation/build-overview.mdx +++ b/docs/pages/cn/explanation/build-overview.mdx @@ -1,25 +1,25 @@ --- source_path: explanation/build-overview.mdx -source_sha: 4b19d1f913597181cd62426d9b82ef8e91c4fae3 +source_sha: 31130e61141a3d529f2c5ec7281240aa4a155e00 title: "概览" -description: "在 Stable 上推出产品:钱包和账户、支付、智能合约和 AI 代理。从快速入门开始,或者直接跳转到您需要的功能。" +description: "在 Stable 上发货:钱包和账户、支付、智能合约和 AI 代理。从快速入门开始,或者直接跳到你所需的功能。" diataxis: "explanation" --- # 概览 -Stable 新手?请先运行[快速入门](/cn/tutorial/quick-start)。它只需五分钟,并会发送一笔测试网交易,以便标签页的其余部分可以连接到它。 +Stable 新手?请先运行[快速入门](/cn/tutorial/quick-start)。它只需五分钟,并发送一个测试网交易,以便其余的选项卡可以插入。 ## 探索 -- [**账户**](/cn/explanation/accounts-overview):创建钱包,使用 EIP-7702 授权 EOA,并为用户和代理限定会话密钥。 +- [**账户**](/cn/explanation/accounts-overview):创建钱包,使用 EIP-7702 委托 EOA,并为用户和代理限定会话密钥。 - [**支付**](/cn/explanation/payments-overview):发送 USDT0,构建 P2P 和订阅流程,使用 ERC-3009 结算发票,并使用 x402 为 API 定价。 -- [**合约**](/cn/explanation/contracts-overview):部署、验证和索引 Solidity 合约,并调用 Bank / Distribution / Staking 预编译。 +- [**合约**](/cn/explanation/contracts-overview):部署、验证和索引 Solidity 合约,并调用银行/分发/质押预编译。 - [**AI 和代理**](/cn/explanation/agent-settlement):将 MCP 服务器连接到 AI 客户端,并公开代理可以通过提示调用的 x402 付费工具。 ## 从这里开始 -- [**快速入门**](/cn/tutorial/quick-start):连接到测试网,为钱包注资,并发送您的第一笔 USDT0 交易。 -- [**发送您的第一笔 USDT0**](/cn/tutorial/send-usdt0):相同余额上的原生和 ERC-20 传输,附带 TypeScript 示例。 +- [**快速入门**](/cn/tutorial/quick-start):连接到测试网,资助钱包,并发送您的第一个 USDT0 交易。 +- [**发送您的第一个 USDT0**](/cn/tutorial/send-usdt0):相同余额上的原生和 ERC-20 传输,带有 TypeScript 示例。 - [**部署智能合约**](/cn/tutorial/smart-contract):搭建 Foundry,配置 Stable,并部署 Counter 合约。 -- [**Stable SDK**](/cn/explanation/sdk-overview):使用类型化的 TypeScript 客户端在 Stable 上进行转账、桥接和兑换。 +- [**工具和 SDK**](/cn/explanation/tools-overview):使用类型化的 TypeScript SDK、服务 API 和 MCP 服务器。 diff --git a/docs/pages/cn/explanation/gas-waiver.mdx b/docs/pages/cn/explanation/gas-waiver.mdx index 4cfa789..d8c1521 100755 --- a/docs/pages/cn/explanation/gas-waiver.mdx +++ b/docs/pages/cn/explanation/gas-waiver.mdx @@ -1,61 +1,73 @@ --- source_path: explanation/gas-waiver.mdx -source_sha: a03f510da6c1fe5ab2d31b55c8827b59792af6e0 -title: "免除Gas费" -description: "Gas费免除机制允许应用程序为用户支付Gas费。经治理批准的豁免提交封装交易,以零Gas费运行已签名负载。" +source_sha: 73109dcf0f466171e6c0807bb89627d896c640e0 +title: "Gas 费用减免" +description: "Gas 费用减免允许应用程序为用户支付 Gas 费。经治理批准的减免会提交封装交易,以零 Gas 价格运行签名负载。" diataxis: "explanation" --- -# 免除Gas费 +# Gas 费用减免 -经治理批准的地址(称为**豁免者**)提交一个封装交易,其中包含用户签名的负载,并以 `gasPrice = 0` 执行。用户不持有任何 USDT0 且不支付任何 Gas 费。Stable 运营着一个这样的豁免服务;合作伙伴也可以通过验证者治理注册他们自己的豁免地址。 +经治理批准的地址(称为**减免者**)提交一个封装交易,该交易携带着用户签名的负载,并以 `gasPrice = 0` 执行它。用户无需持有 USDT0,也无需支付 Gas 费。Stable 提供一个这样的减免服务作为托管服务;合作伙伴也可以通过验证者治理注册自己的减免地址。 ## 工作原理 -Gas费免除机制采用封装交易模式: +Gas 费用减免使用封装交易模式: -1. **用户签署一个 `InnerTx`**,其中 `gasPrice = 0`。用户的签名端到端保留;豁免者不能在不使其失效的情况下修改负载。 -2. **豁免者将 `InnerTx` 封装到 `WrapperTx` 中**,发送到协议标记地址 (`0x000000000000000000000000000000000000f333`),其中 `value = 0`、`gasPrice = 0`,并将已签名的 `InnerTx` 作为其数据负载。 -3. **验证者检测到标记**,检查豁免者的授权和策略约束,并以用户的身份(`from`、`nonce`、调用语义)执行内部交易。 +1. **用户签署一个 `InnerTx`**,`gasPrice = 0`。用户的签名在端到端过程中保持不变;减免者无法修改负载而不使其失效。 +2. **减免者将 `InnerTx` 封装到 `WrapperTx` 中**,发送到协议标记地址 (`0x000000000000000000000000000000000000f333`),`value = 0`,`gasPrice = 0`,并将已签名的 `InnerTx` 作为其数据负载。 +3. **验证者检测到标记**,检查减免者的授权和策略约束,并在用户身份(`from`、`nonce`、调用语义)下执行内部交易。 -Gas 费用核算在豁免机制内部处理。用户不支付任何费用;封装者不支付任何费用;验证者根据每个豁免者的策略承担成本。 +Gas 核算在减免机制内部处理。用户无需支付任何费用;封装者无需支付任何费用;验证者根据每个减免策略承担成本。 ## 授权和策略 -豁免者由验证者治理控制,而不是应用程序逻辑。治理提供: +减免由验证者治理控制,而非应用程序逻辑。治理提供: -- **可审查的注册**:每个豁免地址都在链上注册并且在状态中可见。 -- **撤销**:验证者可以随时移除行为不当的豁免者。 -- **通过 `AllowedTarget` 进行范围访问**:每个豁免者都绑定到一组特定的目标合约和方法选择器。如果内部 `to` 地址和方法选择器超出该范围,协议将拒绝任何封装。 +- **可审查的注册**:每个减免地址都在链上注册,并在状态中可见。 +- **撤销**:验证者可以随时移除行为不当的减免者。 +- **通过 `AllowedTarget` 进行范围访问**:每个减免都绑定到一组特定的目标合约和方法选择器。如果内部 `to` 地址和方法选择器超出该范围,协议将拒绝任何封装。 -有效的封装交易满足以下所有条件: +有效的封装交易必须满足以下所有条件: - `WrapperTx.to == 0x000000000000000000000000000000000000f333`(标记地址)。 -- `WrapperTx.from` 是通过治理在链上注册的豁免者。 -- `WrapperTx.gasPrice == 0` 且 `InnerTx.gasPrice == 0`。 +- `WrapperTx.from` 是通过治理在链上注册的减免者。 +- `WrapperTx.gasPrice == 0` 和 `InnerTx.gasPrice == 0`。 - `WrapperTx.value == 0`。 -- `InnerTx.to` 和提取的方法选择器由豁免者的 `AllowedTarget` 策略允许。 +- `InnerTx.to` 和提取的方法选择器被减免者的 `AllowedTarget` 策略允许。 -如果任何条件失败,验证者将拒绝封装而不执行内部交易。 +如果任何条件失败,验证者将拒绝封装,而不执行内部交易。 ## 安全模型 -- **用户签名完整性**:用户签署 `InnerTx`。豁免者不能在不使签名失效的情况下修改负载。合作伙伴仍有责任确保用户只签署预期的负载。 -- **链上授权**:授权存在于链上。只有治理注册的豁免地址才能提交有效的封装,无论请求源自何处。 -- **服务可用性边界**:当合作伙伴通过 Stable 托管的豁免服务器路由时,提交的可用性取决于服务。协议级别的授权保证不受影响。 +- **用户签名完整性**:用户签署 `InnerTx`。减免者不能修改负载而不使其签名失效。合作伙伴仍有责任确保用户只签署预期的负载。 +- **链上授权**:授权存在于链上。只有治理注册的减免地址才能生成有效的封装提交,无论请求源自何处。 +- **服务可用性边界**:当合作伙伴通过 Stable 的托管减免服务器进行路由时,提交的可用性取决于服务。协议级别的授权保证不受影响。 -## 何时使用Gas费免除机制 +## 何时使用 Gas 费用减免 -Gas费免除机制适用于任何用户不需要持有 USDT0 支付 Gas 费的场景: +Gas 费用减免适用于最终用户无需持有 USDT0 以支付 Gas 的任何流程: -- 消费者应用程序引导新用户,这些用户尚未持有稳定币余额。 -- 代理驱动的流程,其中代理的钱包支付 Gas 费。 +- 消费者应用程序为尚未拥有稳定币余额的用户提供入职服务。 +- 代理驱动的流程,其中代理的钱包提供 Gas 费。 - 企业支付轨道,其中运营商承担网络成本。 -对于用户持有 USDT0 但希望将多个调用捆绑到一个签名交易的流程,请参阅[EIP-7702 委托](/cn/reference/eip-7702-api)代替。 +对于用户持有 USDT0 但希望将多个调用捆绑到一个签名交易中的流程,请参阅 [EIP-7702 委托](/cn/reference/eip-7702-api)。 + +## 选择集成路径 + +所有三种路径都会产生相同的链上结果。它们在谁持有减免密钥以及你需要构建多少方面有所不同。 + +| 路径 | 谁持有减免密钥 | 使用场景 | +| :--- | :--- | :--- | +| [托管减免服务器](/cn/how-to/integrate-gas-waiver) | Stable,你使用 API 密钥进行身份验证 | 你想要最短的路径,并且可以依赖 Stable 的服务进行提交。 | +| [企业 SDK](/cn/how-to/relay-with-gas-waiver) | 你,通过治理注册 | 你用 TypeScript 运行自己的减免服务,并希望一次调用即可构建、签名和广播。 | +| [自托管封装器](/cn/how-to/self-hosted-gas-waiver) | 你,通过治理注册 | 你自己构建封装交易,使用 SDK 不涵盖的语言。 | + +托管服务器为你注册并操作减免,因此你无需构建 `WrapperTx`。自托管路径都需要一个经过治理注册的减免地址,而 `@stablechain/enterprise` 是该模型的类型化客户端。 ## 下一步建议 -- [**启用免 Gas 费交易**](/cn/how-to/integrate-gas-waiver):通过 API 密钥提交和 NDJSON 响应集成托管的豁免服务器 API。 -- [**Gas 费免除协议**](/cn/reference/gas-waiver-api):阅读完整的协议规范:标记路由、封装格式、治理控制。 -- [**USDT0 作为 Gas**](/cn/explanation/usdt-as-gas-token):了解豁免涵盖的 Gas 令牌。 +- [**启用无 Gas 交易**](/cn/how-to/integrate-gas-waiver):将托管减免服务器 API 与 API 密钥提交和 NDJSON 响应集成。 +- [**Gas 费用减免协议**](/cn/reference/gas-waiver-api):阅读完整的协议规范:标记路由、封装格式、治理控制。 +- [**USDT0 作为 Gas**](/cn/explanation/usdt-as-gas-token):了解减免所涵盖的 Gas 代币。 diff --git a/docs/pages/cn/explanation/tools-overview.mdx b/docs/pages/cn/explanation/tools-overview.mdx new file mode 100644 index 0000000..6776054 --- /dev/null +++ b/docs/pages/cn/explanation/tools-overview.mdx @@ -0,0 +1,41 @@ +--- +source_path: explanation/tools-overview.mdx +source_sha: 6eecb794f859527309d0c200ea29e33c6223cb74 +title: "工具和SDK" +description: "选择合适的Stable工具:类型化的TypeScript SDK、Gas豁免和EIP-7702服务API,以及面向AI客户端的MCP服务器。" +diataxis: "explanation" +--- + +# 工具和SDK + +您通过Stable调用的所有内容都在这里。要在Stable上构建产品?从 [Stable SDK](/cn/explanation/sdk-overview) 开始,当您需要SDK未封装的轨道时,可以使用服务API。赞助Gas或从后端中继交易?从 [Enterprise SDK](/cn/explanation/enterprise-sdk) 开始。将Stable连接到AI编辑器或代理?请访问 [使用AI开发](/cn/how-to/develop-with-ai)。 + +## 使用SDK进行构建 + +- [**Stable SDK**](/cn/explanation/sdk-overview):`@stablechain/sdk`,用于转账、跨链桥、交换和金库收益的类型化TypeScript客户端。它封装了viem,并处理路由、批准、小数和链切换。 +- [**SDK快速入门**](/cn/tutorial/sdk-quickstart):安装软件包,在测试网上发送您的第一笔USDT0转账,并预览主网跨链桥报价。 +- [**SDK参考**](/cn/reference/sdk):`createStable`、`createStableReader`、转账、跨链桥、交换和赚取方法、枚举和错误类。 +- [**Enterprise SDK**](/cn/explanation/enterprise-sdk):`@stablechain/enterprise`,用于免Gas交易和预留企业专用区块空间的服务器端客户端。 +- [**Enterprise SDK参考**](/cn/reference/enterprise-sdk):`createStableEnterprise`,包括两个轨道、构建辅助函数和错误类。 + +## 将SDK与您的技术栈一起使用 + +- [**viem**](/cn/how-to/sdk-with-viem):三种签名方式:私钥账户、浏览器传输或预构建的viem WalletClient。 +- [**wagmi**](/cn/how-to/sdk-with-wagmi):使用`useWalletClient`、`useAccount`和`useChainId`将SDK连接到React应用程序。 +- [**赚取收益**](/cn/how-to/earn-yield):将USDT0存入Morpho金库,读取APY和仓位,提款并领取Merkl奖励。 + +## 服务API + +- [**Gas豁免协议**](/cn/reference/gas-waiver-api):交易格式、标记路由、治理控制以及您发布已签名`InnerTx`有效载荷的Waiver Server API。 +- [**EIP-7702**](/cn/reference/eip-7702-api):委托交易格式和RPC行为,用于将EOA的账户代码指向智能合约。 + +## AI和代理工具 + +- [**使用AI开发**](/cn/how-to/develop-with-ai):将Docs MCP和Runtime MCP服务器添加到任何兼容MCP的客户端,以及适用于不带MCP的工具的纯文本文档。 +- [**使用MCP服务器支付**](/cn/how-to/pay-with-mcp):将x402付费API公开为MCP工具,以便AI客户端通过提示调用和支付它们。 + +## 接下来去哪里 + +- [**快速入门**](/cn/tutorial/quick-start):连接到测试网,为钱包充值,并发送您的第一笔USDT0交易。 +- [**JSON-RPC API**](/cn/reference/json-rpc-api):`eth`、`net`、`web3`和`debug`命名空间支持的方法。 +- [**构建**](/cn/explanation/build-overview):账户、支付、合约和代理,按您正在发布的内容进行组织。 diff --git a/docs/pages/cn/how-to/integrate-gas-waiver.mdx b/docs/pages/cn/how-to/integrate-gas-waiver.mdx index d0921df..ce4bdef 100644 --- a/docs/pages/cn/how-to/integrate-gas-waiver.mdx +++ b/docs/pages/cn/how-to/integrate-gas-waiver.mdx @@ -1,25 +1,25 @@ --- source_path: how-to/integrate-gas-waiver.mdx -source_sha: eaaf45d02173e1ce6279849d803d73014dbb7696 +source_sha: 29f1288293527b18488a9e502ed114dca6f9c690 title: "启用免Gas交易" -description: "通过向豁免服务器 API 提交已签名的 InnerTx 有效负载来集成 Stable Gas Waiver,以启用免 Gas 交易。" +description: "通过向Waiver Server API提交已签名的InnerTx负载,集成Stable Gas Waiver以启用免Gas交易。" diataxis: "how-to" --- # 启用免Gas交易 -Gas Waiver 可以在 Stable 上启用免 Gas 交易。通过 Gas Waiver,应用程序可以代表用户支付 Gas 费用,因此用户无需持有 USDT0 即可与合约进行交互。 +Gas Waiver 在 Stable 上实现了免Gas交易。通过 Gas Waiver,应用程序可以为用户支付 Gas 费,因此用户无需持有 USDT0 即可与合约进行交互。 -本指南涵盖了通过豁免服务器 API 进行的集成。 +本指南涵盖了托管的 Waiver Server API,其中 Stable 运行 Waiver 并且您使用 API 密钥进行身份验证。要通过治理注册您自己的 Waiver 地址,请参阅[选择集成路径](/cn/explanation/gas-waiver#choosing-an-integration-path)。 :::note -**概念:** 有关 Gas Waiver 是什么、它为何存在以及治理授权豁免如何运作的信息,请参阅[Gas waiver](/cn/explanation/gas-waiver)。有关完整的协议规范(包装器交易格式、标记地址、执行语义、安全模型),请参阅[Gas waiver protocol](/cn/reference/gas-waiver-api)。 +**概念:** 有关 Gas Waiver 是什么、为什么存在以及治理授权的 Waiver 如何工作的信息,请参阅[Gas Waiver](/cn/explanation/gas-waiver)。有关完整的协议规范(包装器交易格式、标记地址、执行语义、安全模型),请参阅[Gas Waiver 协议](/cn/reference/gas-waiver-api)。 ::: -## 前提条件 +## 先决条件 -- 由 Stable 团队颁发的 Waiver Server API 密钥 -- 目标合约地址必须在豁免的 `AllowedTarget` 策略中注册 +- Stable 团队颁发的 Waiver Server API 密钥 +- 目标合约地址必须在 Waiver 的 `AllowedTarget` 策略中注册 ## Waiver Server @@ -28,19 +28,19 @@ Gas Waiver 可以在 Stable 上启用免 Gas 交易。通过 Gas Waiver,应用 - 主网:待定 - 测试网:`https://waiver.testnet.stable.xyz` -**授权:** `Bearer ` +**授权:** `Bearer <您的API密钥>` ## 概述 -集成流程分为三个步骤: +集成流程分三步: 1. **构建 InnerTx**:用户使用 `gasPrice = 0` 签署交易。 -2. **提交到 Waiver Server**:将已签名的交易提交到 Waiver Server API。 -3. **处理响应**:豁免服务器封装并广播交易。处理流式结果并将交易哈希显示给用户。 +2. **提交到 Waiver Server**:将签名的交易提交到 Waiver Server API。 +3. **处理响应**:Waiver Server 包装并广播交易。处理流式结果并将交易哈希显示给用户。 ## 步骤 1:创建用户的 InnerTx -用户使用 `gasPrice = 0` 签署标准交易。`to` 地址和方法选择器必须得到豁免的 `AllowedTarget` 策略的允许。 +用户签署一个 `gasPrice = 0` 的标准交易。`to` 地址和方法选择器必须由 Waiver 的 `AllowedTarget` 策略允许。 ```typescript // config.ts @@ -88,7 +88,7 @@ const signedInnerTx = await userWallet.signTransaction(innerTx); ``` :::warning -`gasPrice` 必须为 `0`。如果它不为零,豁免服务器将拒绝该交易。 +`gasPrice` 必须为 `0`。如果非零,Waiver Server 会拒绝该交易。 ::: ## 步骤 2:提交到 Waiver Server @@ -112,7 +112,7 @@ const response = await fetch(`${CONFIG.WAIVER_SERVER}/v1/submit`, { ### 批量提交 -您可以在单个请求中提交多个已签名的交易: +您可以在一个请求中提交多个已签名的交易: ```typescript body: JSON.stringify({ @@ -162,16 +162,16 @@ while (true) { | **代码** | **描述** | | :--- | :--- | -| `PARSE_ERROR` | 无法解析交易 | -| `INVALID_REQUEST` | 请求正文格式错误 | +| `PARSE_ERROR` | 解析交易失败 | +| `INVALID_REQUEST` | 请求体格式错误 | | `BATCH_SIZE_EXCEEDED` | 批量大小超出允许的最大值 | -| `VALIDATION_FAILED` | 交易验证失败(例如,签名无效,不允许的目标) | -| `BROADCAST_FAILED` | 无法广播到链上 | -| `RATE_LIMITED` | 超出速率限制 | +| `VALIDATION_FAILED` | 交易验证失败(例如,签名无效、不允许的目标) | +| `BROADCAST_FAILED` | 广播到链失败 | +| `RATE_LIMITED` | 超过速率限制 | | `QUEUE_FULL` | 服务器队列已满 | | `TIMEOUT` | 请求超时 | -## API参考 +## API 参考 ### GET `/v1/health` @@ -179,9 +179,9 @@ while (true) { ### POST `/v1/submit` -提交一批已签名的内部交易。认证:必需(Bearer)。 +提交一批已签名的内部交易。认证:必需 (Bearer)。 -**请求正文:** +**请求体:** ```json { @@ -189,21 +189,21 @@ while (true) { } ``` -响应以 NDJSON 形式流式传输。每行对应一个已提交的交易索引。 +响应以 NDJSON 格式流式传输。每行对应一个已提交的交易索引。 ### GET `/v1/submit` -用于流式提交的 WebSocket 接口。认证:必需(Bearer)。 +用于流式提交的 WebSocket 接口。认证:必需 (Bearer)。 -## 主要收获 +## 关键要点 - Gas Waiver 是一种服务器端集成:您的后端将已签名的用户交易提交到 Waiver Server。用户从不直接与 Waiver Server 交互。 -- 用户始终签署 InnerTx,以保持签名的完整性。豁免无法修改用户的交易。 -- 目标合约必须在豁免的 `AllowedTarget` 列表中。 +- 用户始终签署 InnerTx,从而保持签名的完整性。Waiver 无法修改用户的交易。 +- 目标合约必须在 Waiver 的 `AllowedTarget` 列表中。 ## 下一步建议 - [**零 Gas 交易**](/cn/how-to/zero-gas-transactions):查看以演示为中心的流程以及如何验证收据上的零 Gas。 -- [**自托管 Gas Waiver**](/cn/how-to/self-hosted-gas-waiver):运行您自己的豁免,无需托管 API。 +- [**自托管 Gas Waiver**](/cn/how-to/self-hosted-gas-waiver):无需托管 API 即可运行自己的 Waiver。 - [**Gas Waiver 协议**](/cn/reference/gas-waiver-api):完整的包装器交易规范和治理模型。 -- [**Stable SDK**](/cn/explanation/sdk-overview):使用类型化客户端签署用户交易,然后将其提交到 Waiver Server。 +- [**使用 Gas Waiver 进行中继**](/cn/how-to/relay-with-gas-waiver):使用企业 SDK 从您自己已通过治理注册的 Waiver 中资助 Gas。 diff --git a/docs/pages/cn/how-to/relay-with-gas-waiver.mdx b/docs/pages/cn/how-to/relay-with-gas-waiver.mdx index c88b5db..da2f1ce 100644 --- a/docs/pages/cn/how-to/relay-with-gas-waiver.mdx +++ b/docs/pages/cn/how-to/relay-with-gas-waiver.mdx @@ -1,29 +1,29 @@ --- source_path: how-to/relay-with-gas-waiver.mdx -source_sha: a41b82da40c922244690f2e8e05d8f9ad1f34a99 -title: "使用 Gas 代付中继" -description: "通过 Enterprise SDK 赞助用户的 gas:中继零 gas 交易、批量中继、强制执行策略限制以及中继预签名交易。" +source_sha: 9bf96718a01faa7e956c91ad7f931816b6bc544e +title: "使用 Gas 代付中继交易" +description: "使用 Enterprise SDK 赞助用户的 gas:中继零 gas 交易、批量中继、执行策略限制以及中继预签名交易。" diataxis: "how-to" --- -# 使用 Gas 代付中继 +# 使用 Gas 代付中继交易 -使用 `@stablechain/enterprise` 赞助您用户的 gas。白名单中的代付账户会包装用户的零 gas 交易(内部交易),并将其广播,这样用户就可以在不持有任何 USDT0 的情况下进行交易。`gasWaiver` 模块在一个调用中构建、签名和中继,因此您每个操作只需调用一个方法。 +使用 `@stablechain/enterprise` 赞助用户的 gas。列入白名单的代付账户会封装用户的零 gas 交易(内部交易),并进行广播,因此用户无需持有任何 USDT0 即可进行交易。`gasWaiver` 模块在一个调用中构建、签名和中继交易,因此您每个操作只需调用一个方法。 -每个方法都返回 `H_inner`,即用户交易的哈希,而不是携带它的包装器。 +每个方法都返回 `H_inner`,即用户交易的哈希,而不是承载它的封装器。 ## 先决条件 -- Node.js 20 或更高版本,并安装了 `@stablechain/enterprise` 和 `viem`。请参阅 [Enterprise SDK 参考](/cn/reference/enterprise-sdk#install)。 -- 治理注册的代付密钥。Enterprise SDK 在 Stable 主网和 Stable 测试网上运行,访问受限:[联系 Stable](https://discord.gg/stablexyz) 获取白名单代付密钥。 +- Node.js 20 或更高版本,并安装 `@stablechain/enterprise` 和 `viem`。请参阅 [Enterprise SDK 参考](/cn/reference/enterprise-sdk#install)。 +- 治理注册的代付密钥。Enterprise SDK 在 Stable 主网和 Stable 测试网上运行,访问受限:[联系 Stable](https://discord.gg/stablexyz) 获取列入白名单的代付密钥。 :::warning -这是一个使用私钥进行签名的服务器端库。切勿在浏览器中运行它。请将代付密钥保存在您的后端。 +这是一个使用私钥进行签名的服务器端库。切勿在浏览器中运行它。将代付密钥保存在您的后端。 ::: -## 1. 使用 Gas 代付模块创建客户端 +## 1. 使用 gas 代付模块创建客户端 -将 `gasWaiver: { account }` 传递给 `createStableEnterprise`,其中 `account` 是您的白名单代付密钥。只有在配置后,模块才会在客户端上出现。 +将 `gasWaiver: { account }` 传递给 `createStableEnterprise`,其中 `account` 是您列入白名单的代付密钥。只有在配置模块后,客户端上才会有该模块。 ```ts import { createStableEnterprise, stable } from "@stablechain/enterprise"; @@ -41,15 +41,15 @@ const gw = enterprise.gasWaiver; StableEnterpriseClient { gasWaiver, guaranteedBlock: undefined, guaranteedWaiver: undefined } ``` -`rpcEndpoints` 选项是可选的。如果不设置,客户端将使用链的内置 RPC。 +`rpcEndpoints` 选项是可选的。如果未设置,客户端将使用链的内置 RPC。 :::tip -要将代付密钥保存在托管后端中,请传递 `signer` 而不是 `account`。来自 `@stablechain/enterprise/aws-kms` 的 `awsKmsSigner` 支持 AWS KMS。请参阅[签名密钥和托管](/cn/reference/enterprise-sdk#signing-keys-and-custody)。 +要将代付密钥保留在托管后端中,请传递 `signer` 而不是 `account`。来自 `@stablechain/enterprise/aws-kms` 的 `awsKmsSigner` 会将其备份到 AWS KMS。请参阅[签名密钥和托管](/cn/reference/enterprise-sdk#signing-keys-and-custody)。 ::: ## 2. 中继单个交易 -使用用户账户和变化的字段调用 `send`。`gasPrice: 0`、遗留类型、`chainId` 和待处理 nonce 都已为您处理,因此您只需传递 `to`,以及可选的 `data`、`value` 和 `gas`。 +使用用户的账户和不同的字段调用 `send`。`gasPrice: 0`、旧版类型、`chainId` 和待处理 nonce 都会自动处理,因此您只需传递 `to`,以及可选的 `data`、`value` 和 `gas`。 ```ts const user = privateKeyToAccount(process.env.USER_PRIVATE_KEY as `0x${string}`); @@ -62,11 +62,11 @@ console.log("H_inner:", txHash); H_inner: 0x8f3a...2d41 ``` -用户不需要 USDT0:代付账户赞助 gas。`gas` 默认为 `150_000n` (`DEFAULT_INNER_GAS`),足以覆盖代币转账或批准。对于更繁重的调用,请传递明确的 `gas`。 +用户不需要 USDT0:代付账户会赞助 gas。`gas` 默认为 `150_000n` (`DEFAULT_INNER_GAS`),足以支付代币转账或批准。对于更繁重的调用,请传递显式的 `gas`。 -## 3. 中继批处理 +## 3. 批量中继 -调用 `sendBatch` 中继来自一个账户的多个交易。Nonce 会从账户的待处理 nonce 自动排序,并且您会按照输入顺序获得每个输入的单个结果。 +调用 `sendBatch` 中继来自一个账户的多个交易。Nonce 会从账户的待处理 nonce 自动排序,并且您会按输入顺序获得每个输入的结果。 ```ts const results = await gw.sendBatch(user, [ @@ -84,11 +84,11 @@ for (const r of results) { [1] ✔ 0x2b7c...9e04 ``` -批处理会根据 `result.error` 报告每个项目的失败,而不是抛出异常,因此一个糟糕的交易不会导致其余交易失败。 +批量报告失败会通过 `result.error` 按项目报告,而不是抛出异常,因此一个不良交易不会导致其余交易失败。 -## 4. 执行每个合作伙伴的策略限制 +## 4. 执行按合作伙伴的策略限制 -通过在配置中添加策略限制来限制代付密钥可以赞助的内容。违反限制的内部交易会在广播前被拒绝。 +通过向配置添加策略限制来限制代付密钥可以赞助的内容。违反限制的内部交易会在广播前被拒绝。 ```ts const enterprise = createStableEnterprise({ @@ -98,22 +98,22 @@ const enterprise = createStableEnterprise({ maxGasLimit: 500_000n, maxDataLength: 4_096, allowedTargets: [ - { address: token, selectors: ["0xa9059cbb"] }, // 仅限 ERC-20 传输 + { address: token, selectors: ["0xa9059cbb"] }, // 仅限 ERC-20 转账 ], }, }); ``` -目标合约不在 `allowedTargets` 中的交易将因 `TARGET_NOT_ALLOWED` 而失败;超过 `maxGasLimit` 的交易将因 `GAS_LIMIT_EXCEEDED` 而失败。使用 `"*"` 作为 `address` 允许任何合约,省略 `selectors` 允许任何方法。 +目标合约不在 `allowedTargets` 中的交易将因 `TARGET_NOT_ALLOWED` 而失败;超过 `maxGasLimit` 的交易将因 `GAS_LIMIT_EXCEEDED` 而失败。使用 `"*"` 作为 `address` 允许任何合约,并省略 `selectors` 允许任何方法。 ## 5. 中继预签名交易 -对于非托管流程,用户在其自己的环境中签署内部交易,并只将签名的十六进制字符串交给您,因此您永远不会看到他们的密钥。使用 `buildWaiverInnerTx` 构建它,然后使用 `relay` 中继它。 +对于非托管流程,用户在其自己的环境中签署内部交易,并仅向您提供签名的十六进制,因此您永远不会看到他们的密钥。使用 `buildWaiverInnerTx` 构建它,然后使用 `relay` 中继它。 ```ts import { buildWaiverInnerTx, toSigner } from "@stablechain/enterprise"; -// 在用户端 — buildWaiverInnerTx 通过 Signer 签名;toSigner 适配 viem 账户 +// 在用户端 – buildWaiverInnerTx 通过 Signer 签名;toSigner 适配 viem 账户 const signed = await buildWaiverInnerTx(toSigner(user), stable.id, { to: token, data, gas: 150_000n, nonce }); // 在您的后端 @@ -129,7 +129,7 @@ H_inner: 0x8f3a...2d41 ## 处理拒绝 -`send` 和 `relay` 在拒绝时会抛出 `StableEnterpriseRelayError`,其中包含一个您可以进行分支判断的 `code`。 +`send` 和 `relay` 在拒绝时会抛出 `StableEnterpriseRelayError`,其中包含一个您可以根据其进行分支的 `code`。 ```ts import { StableEnterpriseRelayError } from "@stablechain/enterprise"; @@ -148,10 +148,11 @@ try { StableEnterpriseRelayError: relay failed [TARGET_NOT_ALLOWED]: target 0x... not allowed ``` -有关所有拒绝原因的完整信息,请参阅完整的 [`ErrorCode`](/cn/reference/enterprise-sdk#errorcode) 表。 +请参阅完整的 [`ErrorCode`](/cn/reference/enterprise-sdk#errorcode) 表以了解所有拒绝原因。 -## 后续步骤 +## 下一步去哪里 -- [**发送保证交易**](/cn/how-to/send-guaranteed-transactions):在保留的 Enterprise 通道区块空间中发送交易,并结合 Gas 代付。 -- [**Enterprise SDK 参考**](/cn/reference/enterprise-sdk#relay-with-gas-waiver):所有方法、配置选项和错误类的完整信息。 -- [**Gas 代付**](/cn/explanation/gas-waiver):零 gas 交易在协议层如何工作。 +- [**发送担保交易**](/cn/how-to/send-guaranteed-transactions):将交易提交到预留的企业级区块空间,并将其与 gas 代付结合使用。 +- [**Enterprise SDK 参考**](/cn/reference/enterprise-sdk#relay-with-gas-waiver):所有方法、配置选项和错误类的完整说明。 +- [**Gas 代付**](/cn/explanation/gas-waiver):零 gas 交易如何在协议层面工作。 +- [**启用免 gas 交易**](/cn/how-to/integrate-gas-waiver):使用 Stable 托管的代付服务器,而不是注册您自己的代付。 diff --git a/docs/pages/cn/how-to/self-hosted-gas-waiver.mdx b/docs/pages/cn/how-to/self-hosted-gas-waiver.mdx index c427ede..025f36d 100644 --- a/docs/pages/cn/how-to/self-hosted-gas-waiver.mdx +++ b/docs/pages/cn/how-to/self-hosted-gas-waiver.mdx @@ -1,38 +1,43 @@ --- source_path: how-to/self-hosted-gas-waiver.mdx -source_sha: c054baff79a39314af7a4aaa087bd4525dfc7f12 -title: "自托管燃气费代付" -description: "在 Stable 上运行您自己的燃气费代付服务。通过治理注册代付地址,构建封装器交易,然后无需托管服务器即可广播它们。" +source_sha: 9954e27c1926c87e7fdb45e5c7543e56f6594250 +title: "自托管免 Gas 费服务" +description: "在 Stable 上运行您自己的免 Gas 费服务。通过治理注册豁免地址,构建封装交易,并在没有托管服务器的情况下广播它们。" diataxis: "how-to" --- -# 自托管燃气费代付 -自托管燃气费代付让您可以操作自己的代付基础设施,而不是使用托管的Waiver Server API。您通过链上治理注册一个代付地址,然后直接向网络广播封装器交易。 +# 自托管免 Gas 费服务 -本指南涵盖注册代付地址、收集已签名的用户交易、构建封装器交易以及广播它们。 +自托管免 Gas 费服务允许您运营自己的免 Gas 费基础设施,而不是使用托管的免 Gas 费服务器 API。您通过链上治理注册一个豁免地址,然后直接向网络广播封装交易。 + +本指南涵盖注册豁免地址、收集已签名的用户交易、构建封装交易以及广播它们。 :::note -**概念:** 关于燃气费代付是什么以及它为什么存在,请参阅[燃气费代付](/cn/explanation/gas-waiver)。有关完整的协议规范(封装器交易机制、授权、策略检查、执行语义、安全模型),请参阅[燃气费代付协议](/cn/reference/gas-waiver-api)。 +**概念:** 有关免 Gas 费服务是什么以及它为什么存在,请参阅[免 Gas 费服务](/cn/explanation/gas-waiver)。有关完整的协议规范(封装交易机制、授权、策略检查、执行语义、安全模型),请参阅[免 Gas 费服务协议](/cn/reference/gas-waiver-api)。 ::: -有关托管Waiver Server API集成路径,请参阅[启用免燃气费交易](/cn/how-to/integrate-gas-waiver)。 +有关托管免 Gas 费服务器 API 集成路径,请参阅[启用免 Gas 费交易](/cn/how-to/integrate-gas-waiver)。 + +:::tip +`@stablechain/enterprise` 通过对同一个治理注册的豁免服务的一次调用即可完成以下所有操作。如果您正在编写 TypeScript,请使用[使用免 Gas 费服务进行中继](/cn/how-to/relay-with-gas-waiver),而不是手动构建封装交易。 +::: ## 先决条件 -- 一个通过验证者治理在链上注册的代付地址。 -- 为您的目标合约配置了`AllowedTarget`策略。 +- 通过验证者治理在链上注册的豁免地址。 +- 为您的目标合约配置 `AllowedTarget` 策略。 ## 概览 自托管流程: -1. **收集已签名的 InnerTx**,其中用户的`gasPrice = 0`。 -2. **构建 WrapperTx**:RLP 编码 InnerTx 并将其封装在发送到标记地址的交易中。 -3. **通过 `eth_sendRawTransaction` 广播** WrapperTx。 +1. **收集已签名的 InnerTx**(内部交易)从用户处,其 `gasPrice = 0`。 +2. **构建 WrapperTx**(封装交易):RLP 编码 InnerTx 并将其封装在发送到标记地址的交易中。 +3. **广播** WrapperTx 通过 `eth_sendRawTransaction`。 ## 步骤 1:收集用户的 InnerTx -用户签署一个`gasPrice = 0`的交易。`to`地址和方法选择器必须与您的代付的`AllowedTarget`策略匹配。 +用户签署一个 `gasPrice = 0` 的交易。`to` 地址和方法选择器必须与您的豁免服务的 `AllowedTarget` 策略匹配。 ```typescript // config.ts @@ -83,7 +88,7 @@ const signedInnerTx = await userWallet.signTransaction(innerTx); ## 步骤 2:构建 WrapperTx -RLP 编码已签名的 InnerTx 并将其封装在发送到标记地址的交易中。`gasLimit`必须覆盖内部执行和封装开销。 +RLP 编码已签名的 InnerTx,并将其封装在一个发送到标记地址的交易中。`gasLimit` 必须覆盖内部执行和封装开销。 ```typescript // constructWrapper.ts @@ -109,7 +114,7 @@ const signedWrapperTx = await waiverWallet.signTransaction(wrapperTx); ``` :::warning -`InnerTx.gasPrice`和`WrapperTx.gasPrice`都必须为`0`。`WrapperTx.value`也必须为`0`。如果这些条件中的任何一个不满足,验证者将拒绝该交易。 +`InnerTx.gasPrice` 和 `WrapperTx.gasPrice` 都必须为 `0`。`WrapperTx.value` 也必须为 `0`。如果这些条件中的任何一个不满足,验证者将拒绝该交易。 ::: ## 步骤 3:广播 @@ -132,12 +137,12 @@ Confirmed: true ## 主要收获 -- 自托管代付需要通过链上验证者治理注册一个代付地址。 -- WrapperTx 会发送到标记地址 (`0x...f333`),数据为 RLP 编码的 InnerTx。 -- InnerTx 和 WrapperTx 的 `gasPrice` 都必须为 `0`,且 `value` 也必须为 `0`。 +- 自托管豁免服务需要通过链上验证者治理注册豁免地址。 +- WrapperTx 发送到标记地址 (`0x...f333`),并以 RLP 编码的 InnerTx 作为数据。 +- InnerTx 和 WrapperTx 的 `gasPrice` 都必须为 `0`,且 `value` 必须为 `0`。 -## 下一步建议 +## 接下来推荐 -- [**燃气费代付概念**](/cn/explanation/gas-waiver):在您自行运行之前,了解其机制。 -- [**燃气费代付协议**](/cn/reference/gas-waiver-api):参考完整的协议规范,了解标记路由、授权和执行语义。 -- [**启用免燃气费交易**](/cn/how-to/integrate-gas-waiver):使用托管的 Waiver Server API,而不是自行托管。 +- [**免 Gas 费服务概念**](/cn/explanation/gas-waiver):在您运行自己的服务之前,请先了解其机制。 +- [**免 Gas 费服务协议**](/cn/reference/gas-waiver-api):参考完整的协议规范,了解标记路由、授权和执行语义。 +- [**启用免 Gas 费交易**](/cn/how-to/integrate-gas-waiver):使用托管的免 Gas 费服务器 API,而不是自托管。 diff --git a/docs/pages/cn/reference/gas-waiver-api.mdx b/docs/pages/cn/reference/gas-waiver-api.mdx index 2e2d757..d806152 100644 --- a/docs/pages/cn/reference/gas-waiver-api.mdx +++ b/docs/pages/cn/reference/gas-waiver-api.mdx @@ -1,89 +1,89 @@ --- source_path: reference/gas-waiver-api.mdx -source_sha: 73af0a88040bca94925046ff388ccc018e9be11b -title: "燃气费减免协议" -description: "燃气费减免的协议级规范:交易格式、标记路由、治理控制和减免服务器 API。" +source_sha: 341f351cae76b4a715d9d44be9ac3552dd059dd5 +title: "燃气费豁免协议" +description: "燃气费豁免的协议级规范:交易格式、标记路由、治理控制和豁免服务器 API。" diataxis: "reference" --- -# 燃气费减免协议 +# 燃气费豁免协议 -本文档详细说明了燃气费减免机制:交易格式、标记路由、治理控制和减免服务器 API。 +本文档详细说明了燃气费豁免机制:交易格式、标记路由、治理控制以及豁免服务器 API。 :::note -**概念:** 有关燃气费减免是什么以及它存在的原因,请参阅[燃气费减免](/cn/explanation/gas-waiver)。有关与托管的减免服务器集成的操作指南,请参阅[启用免燃气费交易](/cn/how-to/integrate-gas-waiver)。 +**概念:** 有关燃气费豁免是什么以及为何存在,请参阅[燃气费豁免](/cn/explanation/gas-waiver)。有关针对托管豁免服务器的集成操作指南,请参阅[启用免燃气费交易](/cn/how-to/integrate-gas-waiver)。 ::: ## 摘要 -燃气费减免通过允许一小部分经治理批准的地址(“减免方”)提交 `gasPrice = 0` 的交易,从而在 Stable 上实现无燃气费的最终用户交易。Stable 目前运营着一个减免服务(“减免服务器”),您可以与之集成以提供无燃气费的用户体验,而无需实现协议特定的包装器逻辑。 +燃气费豁免通过允许一小部分经治理批准的地址(“豁免者”)提交`gasPrice = 0`的交易,从而在 Stable 上实现无燃气费的最终用户交易。Stable 目前运营着一项豁免服务(“豁免服务器”),您可以与之集成,以提供无燃气费用户体验,而无需实现协议特定的封装逻辑。 ## 范围 本规范涵盖: -- 免燃气费交易的协议级规则 -- 包装器交易机制和标记地址 +- 无燃气费交易的协议级规则 +- 封装交易机制和标记地址 - 治理控制的授权和允许的目标 -- 用于提交签名用户交易的减免服务器接口 +- 用于提交签名用户交易的豁免服务器接口 ## 定义 -- **减免方(Waiver)**:通过验证者治理在链上注册的以太坊地址,被授权提交免燃气费交易。 -- **InnerTx**:最终用户签名的交易,`gasPrice = 0`。 -- **WrapperTx**:由减免方签名的一笔交易,将用户的 `InnerTx` 传输到链上并授权执行。 -- **标记地址(Marker address)**:用于识别减免包装器交易的哨兵地址:`0x000000000000000000000000000000000000f333`。 -- **允许目标(AllowedTarget)**:限制减免方到特定合约地址和方法选择器的策略。 +- **豁免者**:通过验证者治理在链上注册的以太坊地址,被授权提交燃气费豁免交易。 +- **InnerTx**:最终用户签名的`gasPrice = 0`的交易。 +- **WrapperTx**:由豁免者签名,将用户的`InnerTx`传输到链并授权执行的交易。 +- **标记地址**:用于识别豁免者封装交易的哨兵地址:`0x000000000000000000000000000000000000f333`。 +- **AllowedTarget**:将豁免者限制为特定合约地址和方法选择器的策略。 ## 概述 -燃气费减免使用包装器交易模式: +燃气费豁免使用封装交易模式: -1. 用户用 `gasPrice = 0` 签署一个 `InnerTx`。 -2. 减免方将 `InnerTx` 包装到 `WrapperTx` 中并广播。 -3. 验证者检测标记交易,验证减免方的授权和策略约束,然后执行嵌入的 `InnerTx`。 +1. 用户签署一个`InnerTx`,其中`gasPrice = 0`。 +2. 豁免者将`InnerTx`封装到`WrapperTx`中并进行广播。 +3. 验证者检测标记交易,验证豁免者授权和策略约束,然后执行嵌入的`InnerTx`。 -Stable 运营着一个减免服务(减免服务器),该服务在链上注册为授权减免方。您可以通过减免服务器 API 提交已签名的 `InnerTx` 有效负载。 +Stable 运营着一项豁免服务(豁免服务器),该服务在链上注册为授权豁免者。您与豁免服务器 API 集成,以提交已签名的`InnerTx`负载。 ## 协议规范 ### 标记地址路由 -当且仅当发生以下情况时,交易才被视为减免包装器交易: +当且仅当满足以下条件时,交易才被视为豁免者封装交易: - `to == 0x000000000000000000000000000000000000f333`。 -协议将交易的 `data` 字段解释为编码的内部交易有效负载,并使用下面的减免验证规则进行处理。 +协议将交易 `data` 字段解释为编码的内部交易负载,并使用下面的豁免者验证规则进行处理。 ### 授权和策略检查 -对于每个候选包装器交易,验证者必须强制执行: +对于每个候选封装交易,验证者必须强制执行: -1. **减免方授权** - - `WrapperTx.from` 必须是通过治理在链上注册的减免地址。 -2. **燃气费减免** - - `WrapperTx.gasPrice` 必须等于 `0`。 - - `InnerTx.gasPrice` 必须等于 `0`。 -3. **目标白名单** - - `InnerTx.to` 以及从 `InnerTx.data` 中提取的方法选择器必须由减免方的 `AllowedTarget` 策略允许。 -4. **价值限制** - - `WrapperTx.value` 必须等于 `0`。 +1. **豁免者授权** + - `WrapperTx.from`必须是通过治理在链上注册的豁免者地址。 +2. **燃气费豁免** + - `WrapperTx.gasPrice`必须等于`0`。 + - `InnerTx.gasPrice`必须等于`0`。 +3. **目标允许列表** + - `InnerTx.to`和从`InnerTx.data`中提取的方法选择器必须被豁免者的`AllowedTarget`策略允许。 +4. **值限制** + - `WrapperTx.value`必须等于`0`。 -如果任何检查失败,验证者将拒绝包装器交易,并且不执行内部交易。 +如果任何检查失败,验证者将拒绝封装交易,并且不执行内部交易。 ### 执行语义 -如果所有检查都通过: +如果所有检查通过: -1. 协议以用户的身份执行 `InnerTx`,保留用户的 `from`、`nonce` 和调用语义。 -2. 燃气费核算由减免机制处理:用户不支付燃气费,并且根据该功能的定义,减免交易使用 `gasPrice = 0`。 -3. 包装器交易必须提供足够的 `gasLimit` 来覆盖 `InnerTx` 的执行(包括解包和验证的开销)。 +1. 协议将`InnerTx`作为用户执行,保留用户的`from`、`nonce`和调用语义。 +2. 燃气费核算由豁免机制处理:用户不支付燃气费,豁免者交易根据该功能的定义使用`gasPrice = 0`。 +3. 封装交易必须提供足够的`gasLimit`来覆盖`InnerTx`的执行(包括解封和验证的开销)。 ## 交易格式 ### WrapperTx -包装器交易由减免方签名并发送到标记地址。 +封装交易由豁免者签名并发送到标记地址。 ```javascript WrapperTx { @@ -115,41 +115,45 @@ InnerTx { ## 治理控制的访问 -减免授权由验证者治理在链上控制。 +豁免者授权由链上验证者治理控制。 治理控制提供: -- 对减免地址的可审查授权 -- 减免注册和更新的链上透明度 +- 豁免者地址的可审查授权 +- 豁免者注册和更新的链上透明度 - 撤销能力 -- 通过 `AllowedTarget` 进行的每个减免方的范围界定 +- 通过`AllowedTarget`实现按豁免者范围划分 ## 安全模型 ### 最终用户签名完整性 -用户签署 `InnerTx`。减免方无法修改内部交易有效负载而使其签名失效。您仍然必须确保用户仅签署预期的交易有效负载。 +用户签署`InnerTx`。豁免者不能修改内部交易负载,否则将使签名无效。您仍然必须确保用户只签署预期的交易负载。 ### 信任边界 -如果合作伙伴通过减免服务器路由提交内容,燃气费减免会引入服务依赖: +如果合作伙伴通过豁免服务器路由提交,则燃气费豁免会引入服务依赖性: - 服务的可用性影响提交无燃气费交易的能力。 -- 授权保留在链上;只有注册的减免地址才能生成有效的包装器提交。 +- 授权保留在链上;只有注册的豁免者地址才能生成有效的封装提交。 ## 集成 -您可以通过以下方式集成: +三种路径会产生相同的链上结果,不同之处在于谁持有豁免密钥。请参阅[选择集成路径](/cn/explanation/gas-waiver#choosing-an-integration-path)。 -1. 从用户收集签名的 `InnerTx`(`gasPrice = 0`)。 -2. 将签名的内部交易提交给减免服务器 API。 +针对托管豁免服务器: + +1. 从用户那里收集已签名的`InnerTx` (`gasPrice = 0`)。 +2. 将已签名的内部交易提交给豁免服务器 API。 3. 处理流式结果并将交易哈希显示给最终用户。 -## 减免服务器 +从您自己注册的豁免者地址,`@stablechain/enterprise`通过一次调用构建、签署和广播`WrapperTx`。请参阅[使用燃气费豁免中继](/cn/how-to/relay-with-gas-waiver),或[自托管燃气费豁免](/cn/how-to/self-hosted-gas-waiver)以直接构建封装器。 + +## 豁免服务器 ### 概述 -减免服务器将签名的用户 `InnerTx` 有效负载包装并广播为减免方授权的包装器交易。您无需构建包装器交易或操作减免地址。 +豁免服务器将签名的用户`InnerTx`负载封装并广播为豁免者授权的封装交易。您无需构建封装交易或操作豁免者地址。 ### 端点和基本 URL @@ -160,7 +164,7 @@ InnerTx { ### 身份验证 -除健康检查外的所有端点都需要 bearer token 身份验证: +除健康检查外的所有端点都需要 Bearer Token 身份验证: ```text Authorization: Bearer @@ -176,11 +180,11 @@ Authorization: Bearer #### POST `/v1/submit` -提交一批签名的内部交易。 +提交一批已签名的内部交易。 -身份验证:必需(`Bearer`)。 +身份验证:必需 (`Bearer`)。 -请求体: +请求正文: ```json { @@ -188,7 +192,7 @@ Authorization: Bearer } ``` -响应以 NDJSON(换行符分隔的 JSON)流式传输。每行对应于一个已提交的交易索引。 +响应以 NDJSON(换行符分隔的 JSON)流式传输。每行对应一个提交的交易索引。 示例: @@ -201,7 +205,7 @@ Authorization: Bearer 用于流式提交的 WebSocket 接口。 -身份验证:必需(`Bearer`)。 +身份验证:必需 (`Bearer`)。 ### 集成示例 @@ -250,7 +254,7 @@ async function createInnerTx(userWallet, contractAddress, callData, nonce) { to: contractAddress, data: callData, value: value, - gasPrice: 0, // 减免必须为 0 + gasPrice: 0, // 豁免必须为 0 gasLimit: 100000, nonce: nonce, chainId: 2201, // 主网为 988,测试网为 2201 @@ -263,16 +267,17 @@ async function createInnerTx(userWallet, contractAddress, callData, nonce) { ### 错误代码 - `PARSE_ERROR`:解析交易失败 -- `INVALID_REQUEST`:请求体格式错误 -- `BATCH_SIZE_EXCEEDED`:批量大小超过允许的最大值 +- `INVALID_REQUEST`:请求正文格式错误 +- `BATCH_SIZE_EXCEEDED`:批处理大小超出允许的最大值 - `VALIDATION_FAILED`:交易验证失败 - `BROADCAST_FAILED`:广播到链失败 -- `RATE_LIMITED`:速率限制超出 +- `RATE_LIMITED`:超出速率限制 - `QUEUE_FULL`:服务器队列已满 - `TIMEOUT`:请求超时 -## 下一步推荐 +## 下一步建议 -- [**零燃气费交易**](/cn/how-to/zero-gas-transactions):演示为主的演练,包含显示零燃气费的收据。 +- [**零燃气费交易**](/cn/how-to/zero-gas-transactions):以演示为重点的演练,包含显示零燃气费收据。 - [**启用免燃气费交易**](/cn/how-to/integrate-gas-waiver):完整的托管 API 集成指南,包含批量提交和错误处理。 -- [**自托管燃气费减免**](/cn/how-to/self-hosted-gas-waiver):无需托管 API,运行您自己的燃气费减免基础设施。 +- [**自托管燃气费豁免**](/cn/how-to/self-hosted-gas-waiver):运行您自己的豁免基础设施,无需托管 API。 +- [**使用燃气费豁免中继**](/cn/how-to/relay-with-gas-waiver):使用类型化的 Enterprise SDK 客户端从您自己的豁免者赞助燃气费。 diff --git a/docs/pages/cn/reference/node-operations-overview.mdx b/docs/pages/cn/reference/node-operations-overview.mdx index c4e2bda..d481328 100755 --- a/docs/pages/cn/reference/node-operations-overview.mdx +++ b/docs/pages/cn/reference/node-operations-overview.mdx @@ -1,71 +1,71 @@ --- source_path: reference/node-operations-overview.mdx -source_sha: 292d91190bd4c06f8a2e4e87f9253a9bb856c28a -title: "运维" -description: "运行 Stable 节点。安装、配置、监控与升级。" +source_sha: 834cf7cad55269092423973290344330f70a4a77 +title: "运行 Stable 节点" +description: "运行 Stable 节点。安装、配置、监控和升级。" diataxis: "reference" --- -# 运维 +# 运行 Stable 节点 -运维涵盖运行 Stable 节点的方方面面:全节点或归档节点、测试网或主网,从安装到监控。关于您的节点所强制执行的链级行为(费用模型、最终性、USDT0 作为 gas),请参阅 [Gas 定价](/cn/explanation/gas-pricing)、[最终性](/cn/explanation/finality) 和 [架构概览](/cn/explanation/core-optimization-overview)。 +本节介绍如何运行 Stable 节点:包括全节点或归档节点,测试网或主网,从安装到监控。有关您的节点强制执行的链级行为(费用模型、最终性、USDT0 作为燃料),请参阅[燃料定价](/cn/explanation/gas-pricing)、[最终性](/cn/explanation/finality)和[架构概述](/cn/explanation/core-optimization-overview)。 ## 快速链接 - **[系统要求](/cn/reference/node-system-requirements)** - 不同节点类型的硬件和软件要求 -- **[安装指南](/cn/how-to/install-node)** - 各种平台的分步安装说明 +- **[安装指南](/cn/how-to/install-node)** - 针对各种平台的逐步安装说明 - **[配置](/cn/reference/node-configuration)** - 详细的配置选项和最佳实践 -- **[快照与同步](/cn/how-to/use-node-snapshots)** - 使用快照的快速同步选项 -- **[创建验证者](/cn/how-to/run-validator)** - 将已同步的节点注册为验证者并进行自委托 -- **[升级指南](/cn/how-to/upgrade-node)** - 节点升级流程和版本历史 -- **[监控](/cn/how-to/monitor-node)** - 节点监控的工具和指标 -- **[故障排查](/cn/how-to/troubleshoot-node)** - 常见问题和解决方案 +- **[快照与同步](/cn/how-to/use-node-snapshots)** - 使用快照进行快速同步选项 +- **[创建验证者](/cn/how-to/run-validator)** - 将同步的节点注册为验证者并进行自委托 +- **[升级指南](/cn/how-to/upgrade-node)** - 节点升级程序和版本历史 +- **[监控](/cn/how-to/monitor-node)** - 节点监控工具和指标 +- **[故障排除](/cn/how-to/troubleshoot-node)** - 常见问题和解决方案 -如需从链上读取验证者数据(质押、在线时长、投票历史)而不运行 `stabled`,请参阅 [索引验证者数据](/cn/how-to/index-validator-data)。 +要从链上读取验证者数据(质押、正常运行时间、投票历史)而不是运行 `stabled`,请参阅[索引验证者数据](/cn/how-to/index-validator-data)。 ## 节点类型 ### 全节点 -全节点维护区块链的完整副本,并验证所有交易和区块。全节点: +全节点维护区块链的完整副本并验证所有交易和区块。全节点: - 验证所有交易和区块 - 维护整个区块链历史 - 可以向其他节点提供数据 - 支持网络的去中心化 ### 归档节点 -归档节点存储所有状态的完整历史,并能提供历史查询。归档节点: +归档节点存储所有状态的完整历史记录,并可以提供历史查询。归档节点: - 存储所有历史状态 -- 支持在任意区块高度进行历史查询 -- 需要显著更多的存储空间 -- 对区块浏览器和分析工具至关重要 +- 支持任何区块高度的历史查询 +- 需要大量存储空间 +- 对于区块浏览器和分析至关重要 ## 网络信息 -如需完整的网络详情,包括 RPC 端点、区块浏览器和链参数,请参阅: -- **[主网](/cn/reference/mainnet-information)** - 主网详情 -- **[测试网](/cn/reference/testnet-information)** - 测试网详情 +有关完整的网络详细信息,包括 RPC 端点、区块浏览器和链参数,请参阅: +- **[主网](/cn/reference/mainnet-information)** - 主网详细信息 +- **[测试网](/cn/reference/testnet-information)** - 测试网详细信息 -## 支持与社区 +## 支持和社区 -- **Discord**:[加入 Stable Discord](https://discord.gg/stablexyz) +- **Discord**: [加入 Stable Discord](https://discord.gg/stablexyz) -## 快速开始 +## 快速入门 -面向希望快速上手的经验丰富的运维人员: +对于希望快速入门的经验丰富的操作员: -1. 查看 [系统要求](/cn/reference/node-system-requirements) -2. 遵循 [安装指南](/cn/how-to/install-node) -3. 使用 [配置指南](/cn/reference/node-configuration) 配置您的节点 -4. 通过 [快照](/cn/how-to/use-node-snapshots) 加快同步 -5. 使用 [监控指南](/cn/how-to/monitor-node) 监控您的节点 +1. 查看[系统要求](/cn/reference/node-system-requirements) +2. 遵循[安装指南](/cn/how-to/install-node) +3. 使用[配置指南](/cn/reference/node-configuration)配置您的节点 +4. 使用[快照](/cn/how-to/use-node-snapshots)加快同步 +5. 使用[监控指南](/cn/how-to/monitor-node)监控您的节点 -如需了解网络参数和 RPC 端点,请参阅 [主网信息](/cn/reference/mainnet-information) 或 [测试网信息](/cn/reference/testnet-information)。 +有关网络参数和 RPC 端点,请参阅[主网信息](/cn/reference/mainnet-information)或[测试网信息](/cn/reference/testnet-information)。 -## 节点运维如何与链关联 +## 节点操作员如何连接到链 -运行节点意味着强制执行 Stable 的链级规则。以下页面解释了您的节点所实现的行为: +运行节点意味着强制执行 Stable 的链级规则。这些页面解释了您的节点实现的行为: -- **[合约概览](/cn/explanation/contracts-overview)** 涵盖费用模型、JSON-RPC 接口以及您的节点所服务的系统模块。 -- **[最终性](/cn/explanation/finality)** 解释单槽最终性以及在共识层"已确认"的含义。 -- **[架构概览](/cn/explanation/core-optimization-overview)** 详细介绍共识、执行、数据库和 RPC 各层。 -- **[Gas 定价](/cn/explanation/gas-pricing)** 解释以 USDT0 计价的费用如何定价和收取。 +- **[合约概述](/cn/explanation/contracts-overview)** 涵盖了您的节点提供的费用模型、JSON-RPC 界面和系统模块。 +- **[最终性](/cn/explanation/finality)** 解释了单槽最终性以及共识层“已确认”的含义。 +- **[架构概述](/cn/explanation/core-optimization-overview)** 介绍了共识、执行、数据库和 RPC 层。 +- **[燃料定价](/cn/explanation/gas-pricing)** 解释了以 USDT0 计价的费用如何定价和收取。 diff --git a/docs/pages/ko/explanation/build-overview.mdx b/docs/pages/ko/explanation/build-overview.mdx index e8a19d1..0d4efd2 100644 --- a/docs/pages/ko/explanation/build-overview.mdx +++ b/docs/pages/ko/explanation/build-overview.mdx @@ -1,25 +1,25 @@ --- source_path: explanation/build-overview.mdx -source_sha: 4b19d1f913597181cd62426d9b82ef8e91c4fae3 +source_sha: 31130e61141a3d529f2c5ec7281240aa4a155e00 title: "개요" -description: "Stable에서 출시: 지갑 및 계정, 결제, 스마트 계약 및 AI 에이전트. 빠른 시작으로 시작하거나 필요한 기능으로 바로 이동하세요." +description: "Stable에서 출시: 지갑 및 계정, 결제, 스마트 계약 및 AI 에이전트. 빠른 시작으로 시작하거나 필요한 기능으로 바로 이동하십시오." diataxis: "explanation" --- # 개요 -Stable이 처음이신가요? 먼저 [빠른 시작](/ko/tutorial/quick-start)을 실행하세요. 5분이면 테스트넷 트랜잭션을 보낼 수 있어서 나머지 탭에 연결할 수 있습니다. +Stable이 처음이신가요? 먼저 [빠른 시작](/ko/tutorial/quick-start)을 실행해 보세요. 5분밖에 걸리지 않으며 테스트넷 트랜잭션을 전송하여 나머지 탭에 연결할 수 있는 무언가를 제공합니다. ## 탐색 -- [**계정**](/ko/explanation/accounts-overview): 지갑을 만들고, EIP-7702로 EOA를 위임하고, 사용자 및 에이전트의 세션 키를 범위 지정합니다. -- [**결제**](/ko/explanation/payments-overview): USDT0를 보내고, P2P 및 구독 흐름을 구축하고, ERC-3009로 인보이스를 정산하고, x402로 API 가격을 책정합니다. -- [**계약**](/ko/explanation/contracts-overview): Solidity 계약을 배포하고, 확인하고, 인덱싱하고, Bank/Distribution/Staking 사전 컴파일을 호출합니다. -- [**AI 및 에이전트**](/ko/explanation/agent-settlement): MCP 서버를 AI 클라이언트에 연결하고 프롬프트를 통해 에이전트가 호출할 수 있는 x402 유료 도구를 노출합니다. +- [**계정**](/ko/explanation/accounts-overview): 지갑 생성, EIP-7702를 사용하여 EOA 위임, 사용자 및 에이전트의 세션 키 범위 지정. +- [**결제**](/ko/explanation/payments-overview): USDT0 전송, P2P 및 구독 흐름 구축, ERC-3009로 인보이스 정산, x402로 API 가격 책정. +- [**계약**](/ko/explanation/contracts-overview): Solidity 계약 배포, 확인 및 인덱싱, Bank / Distribution / Staking 프리컴파일 호출. +- [**AI 및 에이전트**](/ko/explanation/agent-settlement): MCP 서버를 AI 클라이언트에 연결하고 에이전트가 프롬프트를 통해 호출할 수 있는 x402 결제 도구를 노출합니다. -## 여기부터 시작하세요 +## 여기에서 시작 -- [**빠른 시작**](/ko/tutorial/quick-start): 테스트넷에 연결하고, 지갑에 자금을 지원하고, 첫 USDT0 트랜잭션을 보냅니다. -- [**첫 USDT0 보내기**](/ko/tutorial/send-usdt0): TypeScript 예제와 함께 동일한 잔액에 대한 기본 및 ERC-20 전송. -- [**스마트 계약 배포**](/ko/tutorial/smart-contract): Foundry를 스캐폴딩하고, Stable을 구성하고, Counter 계약을 배포합니다. -- [**Stable SDK**](/ko/explanation/sdk-overview): Stable에서 전송, 브리지 및 스왑을 위한 타입스크립트 클라이언트를 사용합니다. +- [**빠른 시작**](/ko/tutorial/quick-start): 테스트넷에 연결하고 지갑에 자금을 지원하며 첫 번째 USDT0 트랜잭션을 전송합니다. +- [**첫 USDT0 전송**](/ko/tutorial/send-usdt0): TypeScript 예제와 함께 동일한 잔액에서 네이티브 및 ERC-20 전송. +- [**스마트 계약 배포**](/ko/tutorial/smart-contract): Foundry 스캐폴드, Stable 구성 및 Counter 계약 배포. +- [**도구 및 SDK**](/ko/explanation/tools-overview): 유형이 지정된 TypeScript SDK, 서비스 API 및 MCP 서버에 접근. diff --git a/docs/pages/ko/explanation/gas-waiver.mdx b/docs/pages/ko/explanation/gas-waiver.mdx index 54b028f..6559f63 100755 --- a/docs/pages/ko/explanation/gas-waiver.mdx +++ b/docs/pages/ko/explanation/gas-waiver.mdx @@ -1,61 +1,73 @@ --- source_path: explanation/gas-waiver.mdx -source_sha: a03f510da6c1fe5ab2d31b55c8827b59792af6e0 +source_sha: 73109dcf0f466171e6c0807bb89627d896c640e0 title: "가스 면제" -description: "가스 면제를 통해 애플리케이션은 사용자의 가스를 부담할 수 있습니다. 거버넌스 승인을 받은 면제는 가스 가격이 0인 서명된 페이로드를 실행하는 래퍼 트랜잭션을 제출합니다." +description: "가스 면제를 통해 애플리케이션은 사용자를 위한 가스를 부담할 수 있습니다. 거버넌스 승인 면제는 가스 가격이 0인 서명된 페이로드를 실행하는 래퍼 트랜잭션을 제출합니다." diataxis: "explanation" --- # 가스 면제 -거버넌스 승인을 받은 주소(이하 **면제 주소**)는 사용자가 서명한 페이로드를 포함하는 래퍼 트랜잭션을 `gasPrice = 0`으로 제출합니다. 사용자는 USDT0을 보유하지 않으며 가스를 지불하지 않습니다. Stable은 호스팅 서비스로 이러한 면제를 운영하며, 파트너는 검증자 거버넌스를 통해 자체 면제 주소를 등록할 수 있습니다. +거버넌스 승인 주소(**면제자**)는 사용자의 서명된 페이로드를 포함하고 `gasPrice = 0`으로 실행하는 래퍼 트랜잭션을 제출합니다. 사용자는 USDT0을 보유하지 않으며 가스를 지불하지 않습니다. Stable은 호스팅 서비스로 이러한 면제자 중 하나를 운영합니다. 파트너는 유효성 검사기 거버넌스를 통해 자체 면제 주소를 등록할 수도 있습니다. -## 동작 방식 +## 작동 방식 가스 면제는 래퍼 트랜잭션 패턴을 사용합니다. -1. **사용자는 `gasPrice = 0`으로 `InnerTx`에 서명합니다.** 사용자의 서명은 처음부터 끝까지 보존되며, 면제자는 유효성을 손상시키지 않고 페이로드를 수정할 수 없습니다. -2. **면제자는 `InnerTx`를 `WrapperTx`로 래핑합니다.** 이 `WrapperTx`는 프로토콜 마커 주소(`0x000000000000000000000000000000000000f333`)로 `value = 0`, `gasPrice = 0`, 그리고 서명된 `InnerTx`를 데이터 페이로드로 하여 전송됩니다. -3. **검증자는 마커를 감지하고**, 면제자의 승인 및 정책 제약을 확인한 후, 사용자의 ID(`from`, `nonce`, 호출 의미론)로 내부 트랜잭션을 실행합니다. +1. **사용자는 `gasPrice = 0`으로 `InnerTx`에 서명합니다.** 사용자의 서명은 처음부터 끝까지 보존됩니다. 면제자는 페이로드를 무효화하지 않고 수정할 수 없습니다. +2. **면제자는 `InnerTx`를 `WrapperTx`로 래핑합니다.** `WrapperTx`는 `value = 0`, `gasPrice = 0`, 그리고 서명된 `InnerTx`를 데이터 페이로드로 사용하여 프로토콜 마커 주소(`0x000000000000000000000000000000000000f333`)로 전송됩니다. +3. **유효성 검사기는 마커를 감지하고,** 면제자의 권한 및 정책 제약 조건을 확인하며, 사용자의 신원(`from`, `nonce`, 호출 의미론)에 따라 내부 트랜잭션을 실행합니다. -가스 회계 처리는 면제 메커니즘 내에서 처리됩니다. 사용자는 아무것도 지불하지 않으며, 래퍼도 아무것도 지불하지 않으며, 검증자는 면제별 정책에 따라 비용을 부담합니다. +가스 회계는 면제 메커니즘 내부에서 처리됩니다. 사용자는 아무것도 지불하지 않고, 래퍼도 아무것도 지불하지 않으며, 유효성 검사기는 면제당 정책에 따라 비용을 흡수합니다. -## 승인 및 정책 +## 권한 부여 및 정책 -면제는 애플리케이션 로직이 아닌 검증자 거버넌스에 의해 제어됩니다. 거버넌스는 다음을 제공합니다. +면제자는 애플리케이션 로직이 아닌 유효성 검사기 거버넌스에 의해 제어됩니다. 거버넌스는 다음을 제공합니다. - **검토 가능한 등록**: 모든 면제 주소는 온체인에 등록되어 상태에서 볼 수 있습니다. -- **철회**: 검증자는 언제든지 오작동하는 면제를 제거할 수 있습니다. -- **`AllowedTarget`을 통한 범위 지정 액세스**: 각 면제는 특정 대상 계약 및 메서드 선택자 집합에 바인딩됩니다. 프로토콜은 내부 `to` 주소와 메서드 선택자가 해당 범위를 벗어나는 래퍼를 거부합니다. +- **취소**: 유효성 검사기는 오작동하는 면제자를 언제든지 제거할 수 있습니다. +- **`AllowedTarget`을 통한 범위 지정 액세스**: 각 면제자는 특정 대상 계약 및 메서드 선택자 집합에 바인딩됩니다. 프로토콜은 내부 `to` 주소 및 메서드 선택자가 해당 범위를 벗어나는 모든 래퍼를 거부합니다. -유효한 래퍼 트랜잭션은 다음을 모두 만족해야 합니다. +유효한 래퍼 트랜잭션은 다음을 모두 충족합니다. - `WrapperTx.to == 0x000000000000000000000000000000000000f333` (마커 주소). - `WrapperTx.from`은 거버넌스를 통해 온체인에 등록된 면제자입니다. - `WrapperTx.gasPrice == 0` 및 `InnerTx.gasPrice == 0`. - `WrapperTx.value == 0`. -- `InnerTx.to` 및 추출된 메서드 선택자가 면제자의 `AllowedTarget` 정책에 의해 허용됩니다. +- `InnerTx.to` 및 추출된 메서드 선택자는 면제자의 `AllowedTarget` 정책에 의해 허용됩니다. -어떤 조건이라도 실패하면 검증자는 내부 트랜잭션을 실행하지 않고 래퍼를 거부합니다. +어떤 조건이라도 실패하면 유효성 검사기는 내부 트랜잭션을 실행하지 않고 래퍼를 거부합니다. ## 보안 모델 -- **사용자 서명 무결성**: 사용자가 `InnerTx`에 서명합니다. 면제자는 서명 유효성을 손상시키지 않고 페이로드를 변경할 수 없습니다. 파트너는 여전히 사용자가 의도한 페이로드에만 서명하도록 보장할 책임이 있습니다. -- **온체인 승인**: 승인은 온체인에 존재합니다. 요청의 출처에 관계없이 거버넌스에 등록된 면제 주소만 유효한 래퍼 제출을 생성할 수 있습니다. -- **서비스 가용성 경계**: 파트너가 Stable의 호스팅된 면제 서버를 통해 라우팅할 때, 제출 가용성은 서비스에 따라 달라집니다. 프로토콜 수준의 승인 보장은 영향을 받지 않습니다. +- **사용자 서명 무결성**: 사용자는 `InnerTx`에 서명합니다. 면제자는 서명을 무효화하지 않고 페이로드를 변경할 수 없습니다. 파트너는 여전히 사용자가 의도한 페이로드에만 서명하도록 보장할 책임이 있습니다. +- **온체인 권한 부여**: 권한 부여는 온체인에 있습니다. 요청이 어디에서 시작되었든 상관없이 거버넌스에 등록된 면제 주소만 유효한 래퍼 제출을 생성할 수 있습니다. +- **서비스 가용성 경계**: 파트너가 Stable의 호스팅 면제 서버를 통해 라우팅할 때 제출 가용성은 서비스에 따라 달라집니다. 프로토콜 수준의 권한 부여 보증은 영향을 받지 않습니다. ## 가스 면제를 사용해야 하는 경우 가스 면제는 최종 사용자가 가스를 위해 USDT0을 보유할 필요가 없는 모든 흐름에 적합합니다. - 아직 스테이블코인 잔액이 없는 사용자를 온보딩하는 소비자 앱. -- 에이전트의 지갑이 가스를 조달하는 에이전트 주도 흐름. +- 에이전트의 지갑이 가스를 지원하는 에이전트 기반 흐름. - 운영자가 네트워크 비용을 흡수하는 기업 결제 레일. -사용자가 USDT0을 보유하고 있지만 여러 호출을 하나의 서명된 트랜잭션으로 묶으려는 흐름의 경우, [EIP-7702 위임](/ko/reference/eip-7702-api)을 참조하세요. +사용자가 USDT0을 보유하고 있지만 여러 호출을 하나의 서명된 트랜잭션으로 묶으려는 흐름의 경우 [EIP-7702 위임](/ko/reference/eip-7702-api)을 참조하십시오. + +## 통합 경로 선택 + +세 가지 경로 모두 동일한 온체인 결과를 생성합니다. 면제 키를 누가 보유하고 얼마나 구축하는지에 따라 다릅니다. + +| 경로 | 면제 키를 누가 보유하는가 | 사용 시기 | +| :--- | :--- | :--- | +| [호스팅 면제 서버](/ko/how-to/integrate-gas-waiver) | Stable, 그리고 API 키로 인증합니다. | 가장 짧은 경로를 원하고 제출을 위해 Stable의 서비스에 의존할 수 있을 때. | +| [엔터프라이즈 SDK](/ko/how-to/relay-with-gas-waiver) | 거버넌스를 통해 등록된 귀하 | TypeScript에서 자체 면제자를 실행하고 빌드, 서명 및 브로드캐스트를 한 번에 호출하고 싶을 때. | +| [자체 호스팅 래퍼](/ko/how-to/self-hosted-gas-waiver) | 거버넌스를 통해 등록된 귀하 | SDK가 지원하지 않는 언어로 래퍼 트랜잭션을 직접 구성할 때. | + +호스팅 서버는 면제자를 등록하고 운영하므로 `WrapperTx`를 직접 구성할 필요가 없습니다. 자체 호스팅 경로 모두 거버넌스에 등록된 면제 주소가 필요하며, `@stablechain/enterprise`는 해당 모델을 위한 유형화된 클라이언트입니다. ## 다음 권장 사항 -- [**가스 없는 트랜잭션 활성화**](/ko/how-to/integrate-gas-waiver): 호스팅된 면제 서버 API를 API 키 제출 및 NDJSON 응답과 통합합니다. -- [**가스 면제 프로토콜**](/ko/reference/gas-waiver-api): 마커 라우팅, 래퍼 형식, 거버넌스 제어 등 전체 프로토콜 사양을 읽어보세요. -- [**USDT0을 가스로 사용**](/ko/explanation/usdt-as-gas-token): 면제가 적용되는 가스 토큰을 이해합니다. +- [**가스 없는 트랜잭션 활성화**](/ko/how-to/integrate-gas-waiver): API 키 제출 및 NDJSON 응답으로 호스팅 면제 서버 API를 통합합니다. +- [**가스 면제 프로토콜**](/ko/reference/gas-waiver-api): 전체 프로토콜 사양: 마커 라우팅, 래퍼 형식, 거버넌스 제어를 읽어보세요. +- [**가스 토큰으로서의 USDT0**](/ko/explanation/usdt-as-gas-token): 면제자가 커버하는 가스 토큰을 이해하세요. diff --git a/docs/pages/ko/explanation/tools-overview.mdx b/docs/pages/ko/explanation/tools-overview.mdx new file mode 100644 index 0000000..2283497 --- /dev/null +++ b/docs/pages/ko/explanation/tools-overview.mdx @@ -0,0 +1,41 @@ +--- +source_path: explanation/tools-overview.mdx +source_sha: 6eecb794f859527309d0c200ea29e33c6223cb74 +title: "도구 및 SDK" +description: "Stable에 적합한 도구를 선택하세요: 타입이 지정된 TypeScript SDK, 가스 면제 및 EIP-7702 서비스 API, AI 클라이언트를 위한 MCP 서버." +diataxis: "explanation" +--- + +# 도구 및 SDK + +Stable을 사용하여 호출하는 모든 것이 여기에 있습니다. Stable에서 제품을 구축하시나요? [Stable SDK](/ko/explanation/sdk-overview)로 시작하고 SDK가 래핑하지 않는 레일이 필요할 때 서비스 API로 전환하세요. 가스를 후원하거나 백엔드에서 트랜잭션을 릴레이하시나요? [엔터프라이즈 SDK](/ko/explanation/enterprise-sdk)로 시작하세요. Stable을 AI 편집기 또는 에이전트에 연결하시나요? [AI로 개발하기](/ko/how-to/develop-with-ai)로 이동하세요. + +## SDK로 구축 + +- [**Stable SDK**](/ko/explanation/sdk-overview): `@stablechain/sdk`, 전송, 브리지, 스왑 및 볼트 수익을 위한 타입이 지정된 TypeScript 클라이언트입니다. viem을 래핑하고 라우팅, 승인, 소수점 및 체인 전환을 처리합니다. +- [**SDK 퀵스타트**](/ko/tutorial/sdk-quickstart): 패키지를 설치하고, 테스트넷에서 첫 USDT0 전송을 보내고, 메인넷 브리지 견적을 미리 봅니다. +- [**SDK 참조**](/ko/reference/sdk): `createStable`, `createStableReader`, 전송, 브리지, 스왑 및 수익 메서드, 열거형 및 오류 클래스. +- [**엔터프라이즈 SDK**](/ko/explanation/enterprise-sdk): `@stablechain/enterprise`, 가스 면제 트랜잭션 및 예약된 엔터프라이즈 레인 블록 공간을 위한 서버 측 클라이언트입니다. +- [**엔터프라이즈 SDK 참조**](/ko/reference/enterprise-sdk): `createStableEnterprise`, 두 레일 모두, 빌드 헬퍼 및 오류 클래스. + +## 스택과 함께 SDK 사용 + +- [**viem**](/ko/how-to/sdk-with-viem): 세 가지 방법으로 서명: 프라이빗 키 계정, 브라우저 전송 또는 사전 구축된 viem WalletClient. +- [**wagmi**](/ko/how-to/sdk-with-wagmi): `useWalletClient`, `useAccount`, `useChainId`를 사용하여 React 앱에 SDK를 연결합니다. +- [**수익 창출**](/ko/how-to/earn-yield): USDT0을 Morpho 볼트에 예치하고, APY 및 포지션을 읽고, 인출하고, Merkl 보상을 청구합니다. + +## 서비스 API + +- [**가스 면제 프로토콜**](/ko/reference/gas-waiver-api): 트랜잭션 형식, 마커 라우팅, 거버넌스 제어 및 서명된 `InnerTx` 페이로드를 게시하는 Waiver Server API. +- [**EIP-7702**](/ko/reference/eip-7702-api): EOA의 계정 코드를 스마트 계약으로 지정하기 위한 위임 트랜잭션 형식 및 RPC 동작. + +## AI 및 에이전트 도구 + +- [**AI로 개발하기**](/ko/how-to/develop-with-ai): Docs MCP 및 Runtime MCP 서버를 모든 MCP 호환 클라이언트에 추가하고, MCP가 없는 도구를 위한 일반 텍스트 문서를 추가합니다. +- [**MCP 서버로 결제**](/ko/how-to/pay-with-mcp): x402 결제 API를 MCP 도구로 노출하여 AI 클라이언트가 프롬프트를 통해 이를 호출하고 결제하도록 합니다. + +## 다음으로 이동할 곳 + +- [**빠른 시작**](/ko/tutorial/quick-start): 테스트넷에 연결하고, 지갑에 자금을 지원하고, 첫 USDT0 트랜잭션을 보냅니다. +- [**JSON-RPC API**](/ko/reference/json-rpc-api): `eth`, `net`, `web3` 및 `debug` 네임스페이스에서 지원되는 메서드. +- [**빌드**](/ko/explanation/build-overview): 배송하는 항목별로 정리된 계정, 결제, 계약 및 에이전트. diff --git a/docs/pages/ko/how-to/integrate-gas-waiver.mdx b/docs/pages/ko/how-to/integrate-gas-waiver.mdx index 01796ac..caec98c 100644 --- a/docs/pages/ko/how-to/integrate-gas-waiver.mdx +++ b/docs/pages/ko/how-to/integrate-gas-waiver.mdx @@ -1,25 +1,25 @@ --- source_path: how-to/integrate-gas-waiver.mdx -source_sha: eaaf45d02173e1ce6279849d803d73014dbb7696 +source_sha: 29f1288293527b18488a9e502ed114dca6f9c690 title: "가스 없는 트랜잭션 활성화" -description: "서명된 InnerTx 페이로드를 Waiver Server API에 제출하여 Stable Gas Waiver를 통합하여 가스 없는 트랜잭션을 활성화합니다." +description: "서명된 InnerTx 페이로드를 Waiver Server API에 제출하여 가스 없는 트랜잭션을 활성화하도록 Stable Gas Waiver를 통합합니다." diataxis: "how-to" --- # 가스 없는 트랜잭션 활성화 -Gas Waiver는 Stable에서 가스 없는 트랜잭션을 가능하게 합니다. Gas Waiver를 사용하면 애플리케이션이 사용자를 대신하여 가스 요금을 지불하므로 사용자는 가스 비용으로 USDT0를 보유하지 않고도 컨트랙트와 상호 작용할 수 있습니다. +Gas Waiver를 사용하면 Stable에서 가스 없는 트랜잭션을 활성화할 수 있습니다. Gas Waiver를 사용하면 애플리케이션이 사용자를 대신하여 가스 요금을 부담하므로 사용자는 가스를 위해 USDT0을 보유하지 않고도 컨트랙트와 상호 작용할 수 있습니다. -이 가이드에서는 Waiver Server API를 통해 통합하는 방법을 다룹니다. +이 가이드는 Stable이 웨이버를 운영하고 API 키로 인증하는 호스팅된 Waiver Server API에 대해 설명합니다. 대신 거버넌스를 통해 자체 웨이버 주소를 등록하려면 [통합 경로 선택](/ko/explanation/gas-waiver#choosing-an-integration-path)을 참조하십시오. :::note -**개념:** Gas Waiver가 무엇인지, 왜 존재하는지, 거버넌스 승인된 Waiver가 어떻게 작동하는지에 대해서는 [Gas waiver](/ko/explanation/gas-waiver)를 참조하십시오. 전체 프로토콜 사양(래퍼 트랜잭션 형식, 마커 주소, 실행 의미 체계, 보안 모델)에 대해서는 [Gas waiver protocol](/ko/reference/gas-waiver-api)을 참조하십시오. +**개념:** Gas Waiver가 무엇인지, 왜 존재하는지, 거버넌스 승인 웨이버가 어떻게 작동하는지에 대한 내용은 [Gas waiver](/ko/explanation/gas-waiver)를 참조하십시오. 전체 프로토콜 사양(래퍼 트랜잭션 형식, 마커 주소, 실행 의미 체계, 보안 모델)은 [Gas waiver protocol](/ko/reference/gas-waiver-api)을 참조하십시오. ::: -## 필수 조건 +## 전제 조건 -- Stable 팀이 발급한 Waiver Server용 API 키 -- 대상 컨트랙트 주소는 Waiver의 `AllowedTarget` 정책에 등록되어야 합니다. +- Stable 팀에서 발급한 Waiver Server용 API 키 +- 대상 컨트랙트 주소는 웨이버의 `AllowedTarget` 정책에 등록되어 있어야 합니다. ## Waiver Server @@ -34,19 +34,19 @@ Gas Waiver는 Stable에서 가스 없는 트랜잭션을 가능하게 합니다. 통합 흐름은 세 단계로 구성됩니다. -1. **InnerTx 빌드**: 사용자는 `gasPrice = 0`으로 트랜잭션에 서명합니다. +1. **InnerTx 빌드**: 사용자가 `gasPrice = 0`으로 트랜잭션에 서명합니다. 2. **Waiver Server에 제출**: 서명된 트랜잭션을 Waiver Server API에 제출합니다. -3. **응답 처리**: Waiver Server가 트랜잭션을 래핑하고 브로드캐스트합니다. 스트리밍된 결과를 처리하고 트랜잭션 해시를 사용자에게 표시합니다. +3. **응답 처리**: 웨이버 서버가 트랜잭션을 래핑하고 브로드캐스트합니다. 스트리밍된 결과를 처리하고 사용자에게 트랜잭션 해시를 표시합니다. -## 1단계: 사용자의 InnerTx 생성 +## 1단계: 사용자 InnerTx 생성 -사용자는 `gasPrice = 0`으로 표준 트랜잭션에 서명합니다. `to` 주소와 메서드 선택기는 Waiver의 `AllowedTarget` 정책에 의해 허용되어야 합니다. +사용자는 `gasPrice = 0`으로 표준 트랜잭션에 서명합니다. `to` 주소와 메서드 선택기는 웨이버의 `AllowedTarget` 정책에 의해 허용되어야 합니다. ```typescript // config.ts export const CONFIG = { RPC_URL: "https://rpc.testnet.stable.xyz", - CHAIN_ID: 2201, // 메인넷의 경우 988 + CHAIN_ID: 2201, // 988 for mainnet WAIVER_SERVER: "https://waiver.testnet.stable.xyz", USDT0_ADDRESS: "0x78Cf24370174180738C5B8E352B6D14c83a6c9A9", }; @@ -88,7 +88,7 @@ const signedInnerTx = await userWallet.signTransaction(innerTx); ``` :::warning -`gasPrice`는 `0`이어야 합니다. 0이 아닌 경우 Waiver Server는 트랜잭션을 거부합니다. +`gasPrice`는 `0`이어야 합니다. `0`이 아니면 웨이버 서버가 트랜잭션을 거부합니다. ::: ## 2단계: Waiver Server에 제출 @@ -112,7 +112,7 @@ const response = await fetch(`${CONFIG.WAIVER_SERVER}/v1/submit`, { ### 배치 제출 -단일 요청으로 여러 개의 서명된 트랜잭션을 제출할 수 있습니다. +단일 요청으로 여러 서명된 트랜잭션을 제출할 수 있습니다. ```typescript body: JSON.stringify({ @@ -120,11 +120,11 @@ body: JSON.stringify({ }) ``` -각 결과 줄에는 배열 내 트랜잭션의 위치에 해당하는 `index` 필드가 포함됩니다. +각 결과 라인에는 배열 내 트랜잭션의 위치에 해당하는 `index` 필드가 포함됩니다. ## 3단계: 응답 처리 -응답은 NDJSON(줄바꿈으로 구분된 JSON)으로 스트리밍됩니다. 각 줄은 제출된 하나의 트랜잭션에 해당합니다. +응답은 NDJSON(줄 바꿈으로 구분된 JSON)으로 스트리밍됩니다. 각 줄은 하나의 제출된 트랜잭션에 해당합니다. ```typescript const reader = response.body.getReader(); @@ -164,22 +164,22 @@ while (true) { | :--- | :--- | | `PARSE_ERROR` | 트랜잭션 구문 분석 실패 | | `INVALID_REQUEST` | 잘못된 요청 본문 | -| `BATCH_SIZE_EXCEEDED` | 배치 크기가 허용된 최대치를 초과함 | -| `VALIDATION_FAILED` | 트랜잭션 유효성 검사 실패 (예: 유효하지 않은 서명, 허용되지 않는 대상) | +| `BATCH_SIZE_EXCEEDED` | 배치 크기가 허용된 최대값을 초과함 | +| `VALIDATION_FAILED` | 트랜잭션 유효성 검사 실패(예: 잘못된 서명, 허용되지 않는 대상) | | `BROADCAST_FAILED` | 체인으로 브로드캐스트 실패 | -| `RATE_LIMITED` | 속도 제한 초과 | -| `QUEUE_FULL` | 서버 큐가 용량에 도달함 | +| `RATE_LIMITED` | 비율 제한 초과 | +| `QUEUE_FULL` | 서버 대기열이 용량에 도달함 | | `TIMEOUT` | 요청 시간 초과 | -## API 레퍼런스 +## API 참조 ### GET `/v1/health` -상태 확인 엔드포인트. 인증: 없음. +상태 확인 엔드포인트입니다. 인증: 없음. ### POST `/v1/submit` -서명된 내부 트랜잭션 배치를 제출합니다. 인증: 필수 (Bearer). +서명된 내부 트랜잭션 배치를 제출합니다. 인증: 필요 (Bearer). **요청 본문:** @@ -193,17 +193,17 @@ while (true) { ### GET `/v1/submit` -스트리밍 제출을 위한 WebSocket 인터페이스. 인증: 필수 (Bearer). +스트리밍 제출을 위한 WebSocket 인터페이스입니다. 인증: 필요 (Bearer). -## 요점 +## 주요 내용 - Gas Waiver는 서버 측 통합입니다. 백엔드가 서명된 사용자 트랜잭션을 Waiver Server에 제출합니다. 사용자는 Waiver Server와 직접 상호 작용하지 않습니다. -- 사용자는 항상 InnerTx에 서명하여 서명 무결성을 보존합니다. Waiver는 사용자의 트랜잭션을 수정할 수 없습니다. -- 대상 컨트랙트는 Waiver의 `AllowedTarget` 목록에 있어야 합니다. +- 사용자는 항상 InnerTx에 서명하여 서명 무결성을 보존합니다. 웨이버는 사용자 트랜잭션을 수정할 수 없습니다. +- 대상 컨트랙트는 웨이버의 `AllowedTarget` 목록에 있어야 합니다. -## 다음에 권장되는 내용 +## 다음 권장 사항 - [**제로 가스 트랜잭션**](/ko/how-to/zero-gas-transactions): 데모 중심 흐름과 영수증에서 제로 가스를 확인하는 방법을 참조하십시오. -- [**셀프 호스팅 Gas Waiver**](/ko/how-to/self-hosted-gas-waiver): 호스팅된 API 없이 자체 Waiver를 실행합니다. -- [**Gas Waiver 프로토콜**](/ko/reference/gas-waiver-api): 전체 래퍼 트랜잭션 사양 및 거버넌스 모델. -- [**Stable SDK**](/ko/explanation/sdk-overview): 유형이 지정된 클라이언트를 사용하여 Waiver Server에 제출할 사용자 트랜잭션에 서명합니다. +- [**자체 호스팅 Gas Waiver**](/ko/how-to/self-hosted-gas-waiver): 호스팅된 API 없이 자체 웨이버를 실행합니다. +- [**Gas waiver protocol**](/ko/reference/gas-waiver-api): 전체 래퍼 트랜잭션 사양 및 거버넌스 모델입니다. +- [**Gas Waiver로 릴레이**](/ko/how-to/relay-with-gas-waiver): Enterprise SDK를 사용하여 자체 거버넌스 등록 웨이버에서 가스를 후원합니다. diff --git a/docs/pages/ko/how-to/relay-with-gas-waiver.mdx b/docs/pages/ko/how-to/relay-with-gas-waiver.mdx index 6ddcff9..40e3d72 100644 --- a/docs/pages/ko/how-to/relay-with-gas-waiver.mdx +++ b/docs/pages/ko/how-to/relay-with-gas-waiver.mdx @@ -1,29 +1,29 @@ --- source_path: how-to/relay-with-gas-waiver.mdx -source_sha: a41b82da40c922244690f2e8e05d8f9ad1f34a99 +source_sha: 9bf96718a01faa7e956c91ad7f931816b6bc544e title: "가스 면제 릴레이" -description: "Enterprise SDK로 사용자 가스 지원: 제로 가스 트랜잭션 릴레이, 배치 릴레이, 정책 제한 적용, 미리 서명된 트랜잭션 릴레이." +description: "Enterprise SDK로 사용자의 가스를 후원하세요: 제로 가스 트랜잭션을 릴레이하고, 릴레이를 일괄 처리하며, 정책 제한을 적용하고, 미리 서명된 트랜잭션을 릴레이합니다." diataxis: "how-to" --- # 가스 면제 릴레이 -`@stablechain/enterprise`로 사용자 가스를 지원하세요. 화이트리스트에 등록된 면제 계정은 사용자의 제로 가스 트랜잭션(InnerTx)을 래핑하고 브로드캐스트하여 사용자가 USDT0를 보유하지 않고도 트랜잭션을 수행할 수 있도록 합니다. `gasWaiver` 모듈은 빌드, 서명 및 릴레이를 한 번의 호출로 처리하므로 작업당 하나의 메서드를 호출합니다. +`@stablechain/enterprise`를 사용하여 사용자들의 가스를 후원하세요. 화이트리스트에 등록된 면제 계정은 사용자의 제로 가스 트랜잭션(InnerTx)을 랩핑하여 브로드캐스트하므로, 사용자는 USDT0를 보유하지 않고도 트랜잭션을 수행할 수 있습니다. `gasWaiver` 모듈은 한 번의 호출로 빌드, 서명 및 릴레이를 처리하므로, 각 작업에 대해 하나의 메서드만 호출하면 됩니다. -모든 메서드는 트랜잭션을 전달한 래퍼가 아닌, 사용자 트랜잭션의 해시인 `H_inner`를 반환합니다. +모든 메서드는 사용자의 트랜잭션 해시인 `H_inner`를 반환하며, 이를 전달한 래퍼는 반환하지 않습니다. ## 전제 조건 -- Node.js 20 이상, `@stablechain/enterprise` 및 `viem` 설치. [Enterprise SDK 참조](/ko/reference/enterprise-sdk#install)를 참조하세요. -- 거버넌스에 등록된 면제 키. Enterprise SDK는 Stable Mainnet 및 Stable Testnet에서 실행되며 액세스는 제한됩니다. 화이트리스트에 등록된 면제 키를 얻으려면 [Stable에 문의](https://discord.gg/stablexyz)하세요. +- Node.js 20 이상, 그리고 `@stablechain/enterprise` 및 `viem`이 설치되어 있어야 합니다. [Enterprise SDK 참조](/ko/reference/enterprise-sdk#install)를 확인하세요. +- 거버넌스에 등록된 면제 키. Enterprise SDK는 Stable Mainnet 및 Stable Testnet에서 실행되며, 접근은 제한됩니다: 화이트리스트에 등록된 면제 키를 받으려면 [Stable에 문의하세요](https://discord.gg/stablexyz). :::warning -이것은 개인 키로 서명하는 서버 측 라이브러리입니다. 브라우저에서 실행하지 마십시오. 면제 키는 백엔드에 보관하십시오. +이것은 개인 키로 서명하는 서버 측 라이브러리입니다. 브라우저에서 실행하지 마세요. 면제 키는 백엔드에 보관하세요. ::: -## 1. 가스 면제 모듈로 클라이언트 생성 +## 1. 가스 면제 모듈을 사용하여 클라이언트 생성하기 -`createStableEnterprise`에 `gasWaiver: { account }`를 전달합니다. 여기서 `account`는 화이트리스트에 등록된 면제 키입니다. 모듈은 구성할 때만 클라이언트에 존재합니다. +`gasWaiver: { account }`를 `createStableEnterprise`에 전달합니다. 여기서 `account`는 화이트리스트에 등록된 면제 키입니다. 모듈은 구성할 때만 클라이언트에 존재합니다. ```ts import { createStableEnterprise, stable } from "@stablechain/enterprise"; @@ -44,12 +44,12 @@ StableEnterpriseClient { gasWaiver, guaranteedBlock: undefined, guaranteedWaiver `rpcEndpoints` 옵션은 선택 사항입니다. 설정하지 않으면 클라이언트는 체인의 내장 RPC를 사용합니다. :::tip -면제 키를 보관 백엔드에 보관하려면 `account` 대신 `signer`를 전달하세요. `@stablechain/enterprise/aws-kms`의 `awsKmsSigner`는 AWS KMS로 이를 지원합니다. [서명 키 및 보관](/ko/reference/enterprise-sdk#signing-keys-and-custody)을 참조하세요. +면제 키를 보관 백엔드에 유지하려면 `account` 대신 `signer`를 전달하세요. `@stablechain/enterprise/aws-kms`의 `awsKmsSigner`는 AWS KMS로 이를 지원합니다. [서명 키 및 보관](/ko/reference/enterprise-sdk#signing-keys-and-custody)을 참조하세요. ::: -## 2. 단일 트랜잭션 릴레이 +## 2. 단일 트랜잭션 릴레이하기 -사용자 계정과 변경되는 필드를 사용하여 `send`를 호출합니다. `gasPrice: 0`, 레거시 유형, `chainId` 및 보류 중인 nonce는 자동으로 처리되므로 `to`만 전달하고 선택적으로 `data`, `value`, `gas`를 전달합니다. +사용자의 계정과 변경되는 필드를 사용하여 `send`를 호출합니다. `gasPrice: 0`, 레거시 유형, `chainId`, 그리고 보류 중인 논스는 자동으로 처리되므로, `to`만 전달하고 선택적으로 `data`, `value`, `gas`를 전달합니다. ```ts const user = privateKeyToAccount(process.env.USER_PRIVATE_KEY as `0x${string}`); @@ -62,11 +62,11 @@ console.log("H_inner:", txHash); H_inner: 0x8f3a...2d41 ``` -사용자는 USDT0가 필요하지 않습니다. 면제 계정이 가스를 지원합니다. `gas`는 토큰 전송 또는 승인을 처리하는 `150_000n`(`DEFAULT_INNER_GAS`)으로 기본 설정됩니다. 더 많은 호출에는 명시적인 `gas`를 전달하세요. +사용자는 USDT0가 필요하지 않습니다. 면제 계정이 가스를 후원합니다. `gas`는 기본적으로 `150_000n`(`DEFAULT_INNER_GAS`)으로 설정되며, 이는 토큰 전송 또는 승인을 처리합니다. 더 무거운 호출에는 명시적인 `gas`를 전달하세요. -## 3. 배치 릴레이 +## 3. 일괄 릴레이하기 -`sendBatch`를 호출하여 하나의 계정에서 여러 트랜잭션을 릴레이합니다. Nonce는 계정의 보류 중인 nonce에서 자동으로 순서가 지정되며, 입력 순서대로 입력당 하나의 결과를 얻습니다. +`sendBatch`를 호출하여 하나의 계정에서 여러 트랜잭션을 릴레이합니다. 논스는 계정의 보류 중인 논스에서 자동으로 순서가 지정되며, 입력 순서대로 입력당 하나의 결과를 얻습니다. ```ts const results = await gw.sendBatch(user, [ @@ -84,11 +84,11 @@ for (const r of results) { [1] ✔ 0x2b7c...9e04 ``` -배치는 예외를 던지는 대신 `result.error`의 항목별로 실패를 보고하므로 하나의 잘못된 트랜잭션이 나머지를 망치지 않습니다. +일괄 처리는 오류를 던지는 대신 `result.error`에 항목별로 실패를 보고하므로, 하나의 잘못된 트랜잭션이 나머지를 망가뜨리지 않습니다. -## 4. 파트너별 정책 제한 적용 +## 4. 파트너별 정책 제한 적용하기 -구성 파일에 정책 제한을 추가하여 면제 키가 지원할 수 있는 대상을 제한합니다. 제한을 위반하는 InnerTx는 브로드캐스트되기 전에 거부됩니다. +구성 파일에 정책 제한을 추가하여 면제 키가 후원할 수 있는 것을 제한합니다. 제한을 위반하는 InnerTx는 브로드캐스트 전에 거부됩니다. ```ts const enterprise = createStableEnterprise({ @@ -104,19 +104,19 @@ const enterprise = createStableEnterprise({ }); ``` -`allowedTargets` 외부의 컨트랙트로의 트랜잭션은 `TARGET_NOT_ALLOWED` 오류로 실패하고, `maxGasLimit`을 초과하는 트랜잭션은 `GAS_LIMIT_EXCEEDED` 오류로 실패합니다. `address`에 `"*"`를 사용하여 모든 컨트랙트를 허용하고, `selectors`를 생략하여 모든 메서드를 허용할 수 있습니다. +`allowedTargets` 외의 계약으로의 트랜잭션은 `TARGET_NOT_ALLOWED` 오류와 함께 실패하며, `maxGasLimit`을 초과하는 트랜잭션은 `GAS_LIMIT_EXCEEDED` 오류와 함께 실패합니다. `address`로 `"*"`를 사용하여 모든 계약을 허용하고, `selectors`를 생략하여 모든 메서드를 허용할 수 있습니다. -## 5. 미리 서명된 트랜잭션 릴레이 +## 5. 미리 서명된 트랜잭션 릴레이하기 -비관리 흐름의 경우, 사용자는 자신의 환경에서 InnerTx에 서명하고 서명된 hex만 제공하므로 사용자의 키를 볼 필요가 없습니다. `buildWaiverInnerTx`로 빌드한 다음 `relay`로 릴레이합니다. +비보관 흐름의 경우, 사용자는 자신의 환경에서 InnerTx에 서명하고 서명된 헥스만 전달하므로, 사용자의 키를 볼 필요가 없습니다. `buildWaiverInnerTx`로 이를 빌드한 다음, `relay`로 릴레이합니다. ```ts import { buildWaiverInnerTx, toSigner } from "@stablechain/enterprise"; -// on the user's side — buildWaiverInnerTx signs through a Signer; toSigner adapts a viem account +// 사용자 측에서 — buildWaiverInnerTx는 Signer를 통해 서명합니다; toSigner는 viem 계정을 적용합니다 const signed = await buildWaiverInnerTx(toSigner(user), stable.id, { to: token, data, gas: 150_000n, nonce }); -// on your backend +// 백엔드에서 const { txHash } = await gw.relay(signed); console.log("H_inner:", txHash); ``` @@ -125,11 +125,11 @@ console.log("H_inner:", txHash); H_inner: 0x8f3a...2d41 ``` -여러 개의 미리 서명된 트랜잭션의 경우, `sendBatch`와 같이 입력당 하나의 결과를 반환하는 `relayBatch`를 사용하세요. +미리 서명된 여러 트랜잭션의 경우, `sendBatch`처럼 입력당 하나의 결과를 반환하는 `relayBatch`를 사용합니다. -## 거부 처리 +## 거부 처리하기 -`send` 및 `relay`는 거부 시 `StableEnterpriseRelayError`를 throw하며, 분기할 수 있는 `code`를 포함합니다. +`send` 및 `relay`는 거부 시 `StableEnterpriseRelayError`를 발생시키며, 분기할 수 있는 `code`를 포함합니다. ```ts import { StableEnterpriseRelayError } from "@stablechain/enterprise"; @@ -138,20 +138,21 @@ try { await gw.send(user, { to: token, data }); } catch (err) { if (err instanceof StableEnterpriseRelayError && err.code === "TARGET_NOT_ALLOWED") { - // the InnerTx target is outside the configured allowlist + // InnerTx 대상이 구성된 허용 목록 외부에 있습니다. } throw err; } ``` ```text -StableEnterpriseRelayError: relay failed [TARGET_NOT_ALLOWED]: target 0x... not allowed +StableEnterpriseRelayError: 릴레이 실패 [TARGET_NOT_ALLOWED]: 대상 0x...가 허용되지 않습니다. ``` 모든 거부 사유에 대한 전체 [`ErrorCode`](/ko/reference/enterprise-sdk#errorcode) 표를 참조하세요. ## 다음 단계 -- [**보장된 트랜잭션 전송**](/ko/how-to/send-guaranteed-transactions): 예약된 엔터프라이즈 레인 블록스페이스에 트랜잭션을 전송하고 가스 면제와 결합합니다. -- [**Enterprise SDK 참조**](/ko/reference/enterprise-sdk#relay-with-gas-waiver): 모든 메서드, 구성 옵션 및 오류 클래스에 대한 자세한 설명입니다. -- [**가스 면제**](/ko/explanation/gas-waiver): 프로토콜 수준에서 제로 가스 트랜잭션이 작동하는 방식. +- [**보증된 트랜잭션 전송하기**](/ko/how-to/send-guaranteed-transactions): 예약된 엔터프라이즈 레인 블록스페이스에 트랜잭션을 랜딩하고, 이를 가스 면제와 결합합니다. +- [**Enterprise SDK 참조**](/ko/reference/enterprise-sdk#relay-with-gas-waiver): 모든 메서드, 구성 옵션 및 오류 클래스에 대한 전체 설명입니다. +- [**가스 면제**](/ko/explanation/gas-waiver): 프로토콜 수준에서 제로 가스 트랜잭션이 작동하는 방식입니다. +- [**가스 없는 트랜잭션 활성화하기**](/ko/how-to/integrate-gas-waiver): 자체 면제를 등록하는 대신 Stable의 호스팅된 Waiver Server를 사용합니다. diff --git a/docs/pages/ko/how-to/self-hosted-gas-waiver.mdx b/docs/pages/ko/how-to/self-hosted-gas-waiver.mdx index b9b696c..2ee6514 100644 --- a/docs/pages/ko/how-to/self-hosted-gas-waiver.mdx +++ b/docs/pages/ko/how-to/self-hosted-gas-waiver.mdx @@ -1,39 +1,43 @@ --- source_path: how-to/self-hosted-gas-waiver.mdx -source_sha: c054baff79a39314af7a4aaa087bd4525dfc7f12 +source_sha: 9954e27c1926c87e7fdb45e5c7543e56f6594250 title: "자체 호스팅 가스 면제" -description: "Stable에서 자체 가스 면제 서비스를 운영하세요. 거버넌스를 통해 면제 주소를 등록하고, 래퍼 트랜잭션을 구축하며, 호스팅된 서버 없이 브로드캐스트할 수 있습니다." +description: "Stable에서 자체 가스 면제를 실행하세요. 거버넌스를 통해 면제 주소를 등록하고, 래퍼 트랜잭션을 빌드하고, 호스팅 서버 없이 브로드캐스트합니다." diataxis: "how-to" --- # 자체 호스팅 가스 면제 -자체 호스팅 가스 면제를 통해 호스팅된 면제 서버 API를 사용하는 대신 자체 면제 인프라를 운영할 수 있습니다. 온체인 거버넌스를 통해 면제 주소를 등록한 다음, 래퍼 트랜잭션을 네트워크에 직접 브로드캐스트합니다. +자체 호스팅 가스 면제는 호스팅된 Waiver Server API 대신 자체 면제 인프라를 운영할 수 있도록 합니다. 온체인 거버넌스를 통해 면제 주소를 등록한 다음, 래퍼 트랜잭션을 네트워크에 직접 브로드캐스트합니다. -이 가이드는 면제 주소 등록, 서명된 사용자 트랜잭션 수집, 래퍼 트랜잭션 구성 및 브로드캐스트를 다룹니다. +이 가이드에서는 면제 주소 등록, 서명된 사용자 트랜잭션 수집, 래퍼 트랜잭션 구성 및 브로드캐스트에 대해 다룹니다. :::note -**개념:** 가스 면제가 무엇이고 왜 필요한지에 대한 내용은 [가스 면제](/ko/explanation/gas-waiver)를 참조하세요. 전체 프로토콜 사양(래퍼 트랜잭션 메커니즘, 권한 부여, 정책 확인, 실행 의미론, 보안 모델)은 [가스 면제 프로토콜](/ko/reference/gas-waiver-api)을 참조하세요. +**개념:** 가스 면제가 무엇이고 왜 존재하는지 알아보려면 [가스 면제](/ko/explanation/gas-waiver)를 참조하세요. 전체 프로토콜 사양(래퍼 트랜잭션 메커니즘, 권한 부여, 정책 확인, 실행 의미론, 보안 모델)은 [가스 면제 프로토콜](/ko/reference/gas-waiver-api)을 참조하세요. ::: -호스팅된 면제 서버 API 통합 경로는 [가스 무료 트랜잭션 활성화](/ko/how-to/integrate-gas-waiver)를 참조하세요. +호스팅된 Waiver Server API 통합 경로는 [가스 없는 트랜잭션 활성화](/ko/how-to/integrate-gas-waiver)를 참조하세요. + +:::tip +`@stablechain/enterprise`는 동일한 거버넌스 등록 면제에 대해 아래의 모든 작업을 한 번의 호출로 수행합니다. TypeScript를 작성하는 경우, 래퍼 트랜잭션을 수동으로 빌드하는 대신 [가스 면제로 릴레이](/ko/how-to/relay-with-gas-waiver)를 사용하세요. +::: ## 전제 조건 -- 검증인 거버넌스를 통해 온체인에 등록된 면제 주소. +- 검증자 거버넌스를 통해 온체인에 등록된 면제 주소. - 대상 계약에 대해 구성된 `AllowedTarget` 정책. ## 개요 자체 호스팅 흐름: -1. 사용자의 `gasPrice = 0`인 **서명된 InnerTx를 수집**합니다. -2. **WrapperTx를 구성합니다**: InnerTx를 RLP 인코딩하고, 마커 주소로 전송되는 트랜잭션에 래핑합니다. +1. `gasPrice = 0`으로 사용자로부터 **서명된 InnerTx를 수집**합니다. +2. **WrapperTx 구성**: InnerTx를 RLP 인코딩하고 마커 주소로 전송된 트랜잭션에 래핑합니다. 3. `eth_sendRawTransaction`을 통해 WrapperTx를 **브로드캐스트**합니다. ## 1단계: 사용자 InnerTx 수집 -사용자는 `gasPrice = 0`인 트랜잭션에 서명합니다. `to` 주소와 메서드 선택자는 면제자의 `AllowedTarget` 정책과 일치해야 합니다. +사용자는 `gasPrice = 0`으로 트랜잭션에 서명합니다. `to` 주소와 메서드 셀렉터는 면제의 `AllowedTarget` 정책과 일치해야 합니다. ```typescript // config.ts @@ -84,7 +88,7 @@ const signedInnerTx = await userWallet.signTransaction(innerTx); ## 2단계: WrapperTx 구성 -서명된 InnerTx를 RLP 인코딩하고 마커 주소로 전송되는 트랜잭션에 래핑합니다. `gasLimit`은 내부 실행과 래핑 오버헤드를 모두 포함해야 합니다. +서명된 InnerTx를 RLP 인코딩하고 마커 주소로의 트랜잭션에 래핑합니다. `gasLimit`은 내부 실행과 래핑 오버헤드를 모두 포함해야 합니다. ```typescript // constructWrapper.ts @@ -110,12 +114,12 @@ const signedWrapperTx = await waiverWallet.signTransaction(wrapperTx); ``` :::warning -`InnerTx.gasPrice`와 `WrapperTx.gasPrice`는 모두 `0`이어야 합니다. `WrapperTx.value`도 `0`이어야 합니다. 이 조건 중 하나라도 충족되지 않으면 검증인이 트랜잭션을 거부합니다. +`InnerTx.gasPrice`와 `WrapperTx.gasPrice`는 모두 `0`이어야 합니다. `WrapperTx.value`도 `0`이어야 합니다. 이 조건 중 하나라도 충족되지 않으면 검증자는 트랜잭션을 거부합니다. ::: ## 3단계: 브로드캐스트 -서명된 WrapperTx를 표준 JSON-RPC를 통해 제출합니다. +표준 JSON-RPC를 통해 서명된 WrapperTx를 제출합니다. ```typescript // broadcast.ts @@ -133,12 +137,12 @@ Confirmed: true ## 주요 요점 -- 자체 호스팅 면제는 온체인 검증인 거버넌스를 통해 등록된 면제 주소를 필요로 합니다. +- 자체 호스팅 면제는 온체인 검증자 거버넌스를 통해 등록된 면제 주소를 필요로 합니다. - WrapperTx는 RLP 인코딩된 InnerTx를 데이터로 사용하여 마커 주소(`0x...f333`)로 전송됩니다. - InnerTx와 WrapperTx 모두 `gasPrice = 0` 및 `value = 0`이어야 합니다. ## 다음 권장 사항 -- [**가스 면제 개념**](/ko/explanation/gas-waiver): 자체 서비스를 운영하기 전에 메커니즘을 이해하세요. +- [**가스 면제 개념**](/ko/explanation/gas-waiver): 자체적으로 실행하기 전에 메커니즘을 이해하세요. - [**가스 면제 프로토콜**](/ko/reference/gas-waiver-api): 마커 라우팅, 권한 부여 및 실행 의미론에 대한 전체 프로토콜 사양을 참조하세요. -- [**가스 없는 트랜잭션 활성화**](/ko/how-to/integrate-gas-waiver): 자체 호스팅 대신 호스팅된 면제 서버 API를 사용하세요. +- [**가스 없는 트랜잭션 활성화**](/ko/how-to/integrate-gas-waiver): 자체 호스팅 대신 호스팅된 Waiver Server API를 사용합니다. diff --git a/docs/pages/ko/reference/gas-waiver-api.mdx b/docs/pages/ko/reference/gas-waiver-api.mdx index 09d6d3a..5c81df0 100644 --- a/docs/pages/ko/reference/gas-waiver-api.mdx +++ b/docs/pages/ko/reference/gas-waiver-api.mdx @@ -1,8 +1,8 @@ --- source_path: reference/gas-waiver-api.mdx -source_sha: 73af0a88040bca94925046ff388ccc018e9be11b +source_sha: 341f351cae76b4a715d9d44be9ac3552dd059dd5 title: "가스 면제 프로토콜" -description: "가스 면제를 위한 프로토콜 수준 사양: 트랜잭션 형식, 마커 라우팅, 거버넌스 제어 및 면제 서버 API." +description: "가스 면제에 대한 프로토콜 수준 사양: 트랜잭션 형식, 마커 라우팅, 거버넌스 제어 및 면제 서버 API." diataxis: "reference" --- @@ -11,93 +11,93 @@ diataxis: "reference" 이 문서는 가스 면제 메커니즘을 지정합니다: 트랜잭션 형식, 마커 라우팅, 거버넌스 제어 및 면제 서버 API. :::note -**개념:** 가스 면제가 무엇이며 왜 존재하는지에 대해서는 [가스 면제](/ko/explanation/gas-waiver)를 참조하십시오. 호스팅된 면제 서버에 대한 통합 가이드를 보려면 [가스 없는 트랜잭션 활성화](/ko/how-to/integrate-gas-waiver)를 참조하십시오. +**개념:** 가스 면제가 무엇이며 왜 존재하는지에 대해서는 [가스 면제](/ko/explanation/gas-waiver)를 참조하십시오. 호스팅된 면제 서버에 대한 통합 방법 가이드를 보려면 [가스 없는 트랜잭션 활성화](/ko/how-to/integrate-gas-waiver)를 참조하십시오. ::: ## 개요 -가스 면제는 소수의 거버넌스 승인 주소("면제자")가 `gasPrice = 0`으로 트랜잭션을 제출하도록 허용함으로써 Stable에서 가스 없는 최종 사용자 트랜잭션을 가능하게 합니다. Stable은 현재 면제 서비스("면제 서버")를 운영하고 있으며, 프로토콜별 래퍼 로직을 구현하지 않고도 가스 없는 UX를 제공하기 위해 통합할 수 있습니다. +가스 면제는 거버넌스 승인을 받은 소수의 주소("면제자")가 `gasPrice = 0`으로 트랜잭션을 제출하도록 허용하여 Stable에서 가스 없는 최종 사용자 트랜잭션을 가능하게 합니다. Stable은 현재 프로토콜별 래퍼 로직을 구현하지 않고도 가스 없는 UX를 제공하기 위해 통합할 수 있는 면제 서비스("면제 서버")를 운영하고 있습니다. ## 범위 -이 사양은 다음을 다룹니다. +이 사양은 다음을 다룹니다: - 가스 면제 트랜잭션에 대한 프로토콜 수준 규칙 - 래퍼 트랜잭션 메커니즘 및 마커 주소 -- 거버넌스 제어 권한 부여 및 허용된 대상 -- 서명된 사용자 트랜잭션을 제출하기 위한 면제 서버 인터페이스 +- 거버넌스 제어 승인 및 허용된 대상 +- 서명된 사용자 트랜잭션 제출을 위한 면제 서버 인터페이스 ## 정의 -- **면제자**: 검증자 거버넌스를 통해 온체인에 등록되어 가스 면제 트랜잭션을 제출할 권한이 부여된 이더리움 주소. -- **내부Tx**: 최종 사용자의 서명된 트랜잭션(`gasPrice = 0`). -- **래퍼Tx**: 면제자가 서명한 트랜잭션으로, 사용자의 `내부Tx`를 체인으로 전송하고 실행을 승인합니다. +- **면제자**: 검증인 거버넌스를 통해 온체인에 등록된 이더리움 주소로, 가스 면제 트랜잭션을 제출할 권한이 있습니다. +- **InnerTx**: `gasPrice = 0`으로 최종 사용자가 서명한 트랜잭션입니다. +- **WrapperTx**: 면제자가 서명한 트랜잭션으로, 사용자의 `InnerTx`를 체인으로 전송하고 실행을 승인합니다. - **마커 주소**: 면제 래퍼 트랜잭션을 식별하는 데 사용되는 센티넬 주소: `0x000000000000000000000000000000000000f333`. -- **AllowedTarget**: 면제자를 특정 계약 주소 및 메서드 선택기로 제한하는 정책. +- **AllowedTarget**: 면제자를 특정 계약 주소 및 메서드 선택기로 제한하는 정책입니다. ## 개요 -가스 면제는 래퍼 트랜잭션 패턴을 사용합니다. +가스 면제는 래퍼 트랜잭션 패턴을 사용합니다: -1. 사용자는 `gasPrice = 0`으로 `내부Tx`에 서명합니다. -2. 면제자는 `내부Tx`를 `래퍼Tx`로 래핑하고 브로드캐스트합니다. -3. 검증자는 마커 트랜잭션을 감지하고, 면제자 승인 및 정책 제약 조건을 확인한 다음, 내장된 `내부Tx`를 실행합니다. +1. 사용자는 `gasPrice = 0`으로 `InnerTx`에 서명합니다. +2. 면제자는 `InnerTx`를 `WrapperTx`로 래핑하고 브로드캐스트합니다. +3. 검증인은 마커 트랜잭션을 감지하고 면제 승인 및 정책 제약 조건을 확인한 다음 내장된 `InnerTx`를 실행합니다. -Stable은 승인된 면제자로 온체인에 등록된 면제 서비스(면제 서버)를 운영합니다. 서명된 `내부Tx` 페이로드를 제출하기 위해 면제 서버 API와 통합합니다. +Stable은 승인된 면제자로 온체인에 등록된 면제 서비스(면제 서버)를 운영합니다. 서명된 `InnerTx` 페이로드를 제출하기 위해 면제 서버 API와 통합합니다. ## 프로토콜 사양 ### 마커 주소 라우팅 -트랜잭션은 다음의 경우에만 가스 면제 래퍼 트랜잭션으로 처리됩니다. +트랜잭션은 다음과 같은 경우에만 면제 래퍼 트랜잭션으로 처리됩니다: - `to == 0x000000000000000000000000000000000000f333`. -프로토콜은 트랜잭션 `data` 필드를 인코딩된 내부 트랜잭션 페이로드로 해석하고 아래의 면제 검증 규칙을 사용하여 처리합니다. +프로토콜은 트랜잭션 `data` 필드를 인코딩된 내부 트랜잭션 페이로드로 해석하고 아래의 면제 확인 규칙을 사용하여 처리합니다. -### 권한 부여 및 정책 확인 +### 승인 및 정책 확인 -각 후보 래퍼 트랜잭션에 대해 검증자는 다음 사항을 적용해야 합니다. +각 후보 래퍼 트랜잭션에 대해 검증인은 다음을 적용해야 합니다: -1. **면제자 권한 부여** - - `WrapperTx.from`은 거버넌스를 통해 온체인에 등록된 면제자 주소여야 합니다. +1. **면제 승인** + - `WrapperTx.from`은 거버넌스를 통해 온체인에 등록된 면제 주소여야 합니다. 2. **가스 면제** - `WrapperTx.gasPrice`는 `0`과 같아야 합니다. - `InnerTx.gasPrice`는 `0`과 같아야 합니다. 3. **대상 허용 목록** - - `InnerTx.to`와 `InnerTx.data`에서 추출된 메서드 선택기는 면제자의 `AllowedTarget` 정책에 의해 허용되어야 합니다. + - `InnerTx.to` 및 `InnerTx.data`에서 추출된 메서드 선택기는 면제자의 `AllowedTarget` 정책에 의해 허용되어야 합니다. 4. **값 제한** - `WrapperTx.value`는 `0`과 같아야 합니다. -어떠한 확인이라도 실패하면 검증자는 래퍼 트랜잭션을 거부하고 내부 트랜잭션을 실행하지 않습니다. +어떤 검사라도 실패하면 검증인은 래퍼 트랜잭션을 거부하고 내부 트랜잭션을 실행하지 않습니다. -### 실행 시맨틱스 +### 실행 의미론 -모든 확인이 통과하면: +모든 검사가 통과되면: -1. 프로토콜은 사용자의 `from`, `nonce` 및 호출 시맨틱스를 보존하면서 사용자로 `InnerTx`를 실행합니다. -2. 가스 회계는 면제 메커니즘으로 처리됩니다: 사용자는 가스를 지불하지 않으며, 면제 트랜잭션은 기능 정의에 따라 `gasPrice = 0`을 사용합니다. -3. 래퍼 트랜잭션은 `InnerTx` 실행(언랩 및 검증을 위한 오버헤드 포함)을 충당하기에 충분한 `gasLimit`을 제공해야 합니다. +1. 프로토콜은 사용자의 `from`, `nonce` 및 호출 의미론을 유지하면서 `InnerTx`를 사용자로 실행합니다. +2. 가스 회계는 면제 메커니즘에 의해 처리됩니다: 사용자는 가스를 지불하지 않으며, 면제 트랜잭션은 기능 정의에 따라 `gasPrice = 0`을 사용합니다. +3. 래퍼 트랜잭션은 `InnerTx` 실행(압축 해제 및 확인을 위한 오버헤드 포함)을 커버하기에 충분한 `gasLimit`을 제공해야 합니다. ## 트랜잭션 형식 -### 래퍼Tx +### WrapperTx -래퍼 트랜잭션은 면제자가 서명하고 마커 주소로 전송됩니다. +래퍼 트랜잭션은 면제자가 서명하여 마커 주소로 전송됩니다. ```javascript WrapperTx { from: waiver_address, to: 0x000000000000000000000000000000000000f333, - value: 0, // 0이어야 합니다. - data: RLP(InnerTx), // RLP 인코딩된 내부 트랜잭션 - gasPrice: 0, // 0이어야 합니다. - gasLimit: sufficient_for_inner, // 내부 실행 + 오버헤드를 포함해야 합니다. + value: 0, // 0이어야 함 + data: RLP(InnerTx), // RLP-인코딩된 내부 트랜잭션 + gasPrice: 0, // 0이어야 함 + gasLimit: sufficient_for_inner, // 내부 실행 + 오버헤드를 커버하기에 충분해야 함 nonce: waiver_nonce } ``` -### 내부Tx +### InnerTx 내부 트랜잭션은 최종 사용자가 서명합니다. @@ -107,7 +107,7 @@ InnerTx { to: target_contract, value: value, data: call_data, - gasPrice: 0, // 0이어야 합니다. + gasPrice: 0, // 0이어야 함 gasLimit: execution_gas, nonce: user_nonce } @@ -115,41 +115,45 @@ InnerTx { ## 거버넌스 제어 액세스 -면제자 권한 부여는 검증자 거버넌스에 의해 온체인에서 제어됩니다. +면제 승인은 검증인 거버넌스에 의해 온체인에서 관리됩니다. -거버넌스 제어는 다음을 제공합니다. +거버넌스 제어는 다음을 제공합니다: -- 면제자 주소의 검토 가능한 권한 부여 -- 면제자 등록 및 업데이트의 온체인 투명성 +- 면제 주소의 검토 가능한 승인 +- 면제 등록 및 업데이트의 온체인 투명성 - 취소 기능 -- `AllowedTarget`을 통한 면제별 범위 지정 +- `AllowedTarget`을 통한 면제자별 범위 지정 ## 보안 모델 ### 최종 사용자 서명 무결성 -사용자가 `InnerTx`에 서명합니다. 면제자는 서명을 무효화하지 않고는 내부 트랜잭션 페이로드를 수정할 수 없습니다. 사용자가 의도한 트랜잭션 페이로드에만 서명하도록 여전히 확인해야 합니다. +사용자는 `InnerTx`에 서명합니다. 면제자는 서명을 무효화하지 않고는 내부 트랜잭션 페이로드를 수정할 수 없습니다. 사용자가 의도한 트랜잭션 페이로드에만 서명하는지 확인해야 합니다. -### 트러스트 경계 +### 신뢰 경계 -가스 면제는 파트너가 면제 서버를 통해 제출물을 라우팅하는 경우 서비스 종속성을 도입합니다. +가스 면제는 파트너가 면제 서버를 통해 제출물을 라우팅하는 경우 서비스 종속성을 도입합니다: -- 서비스의 가용성은 가스 없는 트랜잭션을 제출하는 능력에 영향을 미칩니다. -- 권한 부여는 온체인에 남아 있습니다. 등록된 면제자 주소만 유효한 래퍼 제출물을 생성할 수 있습니다. +- 서비스 가용성은 가스 없는 트랜잭션을 제출하는 능력에 영향을 미칩니다. +- 승인은 온체인에 남아 있습니다. 등록된 면제 주소만이 유효한 래퍼 제출을 생성할 수 있습니다. ## 통합 -다음과 같이 통합합니다. +세 가지 경로는 면제 키를 누가 보유하느냐에 따라 동일한 온체인 결과를 생성합니다. [통합 경로 선택](/ko/explanation/gas-waiver#choosing-an-integration-path)을 참조하십시오. -1. 사용자로부터 서명된 `InnerTx`를 수집합니다 (`gasPrice = 0`). +호스팅된 면제 서버에 대해: + +1. 사용자로부터 서명된 `InnerTx`(`gasPrice = 0`)를 수집합니다. 2. 서명된 내부 트랜잭션을 면제 서버 API에 제출합니다. -3. 스트리밍된 결과를 처리하고 최종 사용자에게 트랜잭션 해시를 노출합니다. +3. 스트리밍된 결과를 처리하고 최종 사용자에게 트랜잭션 해시를 표시합니다. + +직접 등록한 면제 주소에서 `@stablechain/enterprise`는 한 번의 호출로 `WrapperTx`를 빌드, 서명 및 브로드캐스트합니다. [가스 면제로 릴레이](/ko/how-to/relay-with-gas-waiver) 또는 [자체 호스팅 가스 면제](/ko/how-to/self-hosted-gas-waiver)를 참조하여 래퍼를 직접 구성하십시오. ## 면제 서버 ### 개요 -면제 서버는 서명된 사용자 `InnerTx` 페이로드를 면제자 승인 래퍼 트랜잭션으로 래핑하고 브로드캐스트합니다. 래퍼 트랜잭션을 구성하거나 면제자 주소를 운영할 필요가 없습니다. +면제 서버는 서명된 사용자 `InnerTx` 페이로드를 면제자가 승인한 래퍼 트랜잭션으로 래핑하고 브로드캐스트합니다. 래퍼 트랜잭션을 구성하거나 면제 주소를 운영할 필요가 없습니다. ### 엔드포인트 및 기본 URL @@ -160,7 +164,7 @@ InnerTx { ### 인증 -health를 제외한 모든 엔드포인트에는 베어러 토큰 인증이 필요합니다. +상태를 제외한 모든 엔드포인트에는 베어러 토큰 인증이 필요합니다: ```text Authorization: Bearer @@ -170,7 +174,7 @@ Authorization: Bearer #### GET `/v1/health` -상태 확인 엔드포인트입니다. +상태 확인 엔드포인트. 인증: 없음. @@ -178,7 +182,7 @@ Authorization: Bearer 서명된 내부 트랜잭션 배치를 제출합니다. -인증: 필수 (`Bearer`). +인증: 필수(`Bearer`). 요청 본문: @@ -188,7 +192,7 @@ Authorization: Bearer } ``` -응답은 NDJSON(줄 바꿈으로 구분된 JSON)으로 스트리밍됩니다. 각 줄은 제출된 트랜잭션 인덱스에 해당합니다. +응답은 NDJSON(개행으로 구분된 JSON)으로 스트리밍됩니다. 각 줄은 제출된 트랜잭션 인덱스에 해당합니다. 예시: @@ -201,7 +205,7 @@ Authorization: Bearer 스트리밍 제출을 위한 WebSocket 인터페이스입니다. -인증: 필수 (`Bearer`). +인증: 필수(`Bearer`). ### 통합 예시 @@ -250,7 +254,7 @@ async function createInnerTx(userWallet, contractAddress, callData, nonce) { to: contractAddress, data: callData, value: value, - gasPrice: 0, // 면제자의 경우 0이어야 합니다. + gasPrice: 0, // 면제자의 경우 0이어야 함 gasLimit: 100000, nonce: nonce, chainId: 2201, // 메인넷은 988, 테스트넷은 2201 @@ -262,17 +266,18 @@ async function createInnerTx(userWallet, contractAddress, callData, nonce) { ### 오류 코드 -- `PARSE_ERROR`: 트랜잭션을 구문 분석하지 못했습니다. +- `PARSE_ERROR`: 트랜잭션 구문 분석 실패 - `INVALID_REQUEST`: 잘못된 요청 본문 -- `BATCH_SIZE_EXCEEDED`: 배치 크기가 허용된 최대값을 초과합니다. +- `BATCH_SIZE_EXCEEDED`: 배치 크기가 허용된 최대치를 초과함 - `VALIDATION_FAILED`: 트랜잭션 유효성 검사 실패 -- `BROADCAST_FAILED`: 체인에 브로드캐스트하지 못했습니다. +- `BROADCAST_FAILED`: 체인으로 브로드캐스트 실패 - `RATE_LIMITED`: 비율 제한 초과 - `QUEUE_FULL`: 서버 큐 용량 초과 - `TIMEOUT`: 요청 시간 초과 ## 다음 권장 사항 -- [**제로 가스 트랜잭션**](/ko/how-to/zero-gas-transactions): 제로 가스 수수료를 보여주는 영수증과 함께 데모 중심의 설명. -- [**가스 없는 트랜잭션 활성화**](/ko/how-to/integrate-gas-waiver): 배치 제출 및 오류 처리가 포함된 전체 호스팅 API 통합 가이드. -- [**자체 호스팅 가스 면제**](/ko/how-to/self-hosted-gas-waiver): 호스팅 API 없이 자체 면제 인프라 실행. +- [**제로 가스 트랜잭션**](/ko/how-to/zero-gas-transactions): 가스 수수료가 0인 영수증을 보여주는 데모 중심의 설명입니다. +- [**가스 없는 트랜잭션 활성화**](/ko/how-to/integrate-gas-waiver): 배치 제출 및 오류 처리가 포함된 전체 호스팅 API 통합 가이드입니다. +- [**자체 호스팅 가스 면제**](/ko/how-to/self-hosted-gas-waiver): 호스팅된 API 없이 자체 면제 인프라를 실행합니다. +- [**가스 면제로 릴레이**](/ko/how-to/relay-with-gas-waiver): 유형이 지정된 Enterprise SDK 클라이언트를 사용하여 자체 면제자로부터 가스를 지원합니다. diff --git a/docs/pages/ko/reference/node-operations-overview.mdx b/docs/pages/ko/reference/node-operations-overview.mdx index daf3b2d..d3ad801 100755 --- a/docs/pages/ko/reference/node-operations-overview.mdx +++ b/docs/pages/ko/reference/node-operations-overview.mdx @@ -1,71 +1,71 @@ --- source_path: reference/node-operations-overview.mdx -source_sha: 292d91190bd4c06f8a2e4e87f9253a9bb856c28a -title: "운영" -description: "Stable 노드를 실행하세요. 설치, 구성, 모니터링 및 업그레이드." +source_sha: 834cf7cad55269092423973290344330f70a4a77 +title: "Stable 노드 실행" +description: "Stable 노드를 실행합니다. 설치, 구성, 모니터링 및 업그레이드." diataxis: "reference" --- -# 운영 +# Stable 노드 실행 -운영은 Stable 노드 실행을 다룹니다: 풀 노드 또는 아카이브 노드, 테스트넷 또는 메인넷, 설치부터 모니터링까지. 노드가 적용하는 체인 수준 동작(수수료 모델, 파이널리티, 가스로서의 USDT0)에 대해서는 [가스 가격 책정](/ko/explanation/gas-pricing), [파이널리티](/ko/explanation/finality), [아키텍처 개요](/ko/explanation/core-optimization-overview)를 참조하세요. +이 섹션에서는 전체 또는 아카이브, 테스트넷 또는 메인넷 등 Stable 노드 실행에 대해 설치부터 모니터링까지 다룹니다. 노드가 적용하는 체인 수준 동작(수수료 모델, 최종성, USDT0를 가스로 사용)에 대해서는 [가스 가격 책정](/ko/explanation/gas-pricing), [최종성](/ko/explanation/finality) 및 [아키텍처 개요](/ko/explanation/core-optimization-overview)를 참조하세요. ## 빠른 링크 -- **[시스템 요구사항](/ko/reference/node-system-requirements)** - 다양한 노드 유형에 대한 하드웨어 및 소프트웨어 요구사항 +- **[시스템 요구 사항](/ko/reference/node-system-requirements)** - 다양한 노드 유형에 대한 하드웨어 및 소프트웨어 요구 사항 - **[설치 가이드](/ko/how-to/install-node)** - 다양한 플랫폼에 대한 단계별 설치 지침 -- **[구성](/ko/reference/node-configuration)** - 상세한 구성 옵션 및 모범 사례 +- **[구성](/ko/reference/node-configuration)** - 자세한 구성 옵션 및 모범 사례 - **[스냅샷 및 동기화](/ko/how-to/use-node-snapshots)** - 스냅샷을 사용한 빠른 동기화 옵션 -- **[밸리데이터 생성](/ko/how-to/run-validator)** - 동기화된 노드를 밸리데이터로 등록하고 자체 위임 +- **[검증인 생성](/ko/how-to/run-validator)** - 동기화된 노드를 검증인으로 등록하고 자체 위임 - **[업그레이드 가이드](/ko/how-to/upgrade-node)** - 노드 업그레이드 절차 및 버전 기록 -- **[모니터링](/ko/how-to/monitor-node)** - 노드 모니터링을 위한 도구 및 메트릭 -- **[문제 해결](/ko/how-to/troubleshoot-node)** - 일반적인 문제 및 해결책 +- **[모니터링](/ko/how-to/monitor-node)** - 노드 모니터링을 위한 도구 및 지표 +- **[문제 해결](/ko/how-to/troubleshoot-node)** - 일반적인 문제 및 해결 방법 -`stabled`를 실행하는 대신 체인에서 밸리데이터 데이터(스테이크, 가동 시간, 투표 기록)를 읽으려면 [밸리데이터 데이터 인덱싱](/ko/how-to/index-validator-data)을 참조하세요. +`stabled`를 실행하는 대신 체인에서 검증인 데이터(스테이크, 가동 시간, 투표 기록)를 읽으려면 [검증인 데이터 인덱싱](/ko/how-to/index-validator-data)을 참조하세요. ## 노드 유형 ### 풀 노드 -풀 노드는 블록체인의 완전한 복사본을 유지하며 모든 트랜잭션과 블록을 검증합니다. 풀 노드는: -- 모든 트랜잭션과 블록을 검증 -- 전체 블록체인 기록을 유지 -- 다른 노드에 데이터를 제공할 수 있음 -- 네트워크의 탈중앙화를 지원 +풀 노드는 블록체인의 전체 복사본을 유지하고 모든 트랜잭션 및 블록을 검증합니다. 풀 노드는 다음을 수행합니다. +- 모든 트랜잭션 및 블록 검증 +- 전체 블록체인 기록 유지 +- 다른 노드에 데이터 제공 +- 네트워크의 분산화 지원 ### 아카이브 노드 -아카이브 노드는 모든 상태의 완전한 기록을 저장하며 과거 쿼리를 제공할 수 있습니다. 아카이브 노드는: -- 모든 과거 상태를 저장 -- 모든 블록 높이에서 과거 쿼리를 지원 -- 상당히 더 많은 스토리지를 요구 +아카이브 노드는 모든 상태의 전체 기록을 저장하고 과거 쿼리를 제공할 수 있습니다. 아카이브 노드는 다음을 수행합니다. +- 모든 과거 상태 저장 +- 모든 블록 높이에서 과거 쿼리 지원 +- 훨씬 더 많은 저장 공간 필요 - 블록 탐색기 및 분석에 필수적 ## 네트워크 정보 -RPC 엔드포인트, 블록 탐색기, 체인 파라미터를 포함한 전체 네트워크 세부 정보는 다음을 참조하세요: +RPC 엔드포인트, 블록 탐색기 및 체인 매개변수를 포함한 전체 네트워크 세부 정보는 다음을 참조하세요. - **[메인넷](/ko/reference/mainnet-information)** - 메인넷 세부 정보 - **[테스트넷](/ko/reference/testnet-information)** - 테스트넷 세부 정보 ## 지원 및 커뮤니티 -- **Discord**: [Stable Discord 참여하기](https://discord.gg/stablexyz) +- **Discord**: [Stable Discord에 참여하기](https://discord.gg/stablexyz) ## 빠른 시작 -빠르게 시작하고자 하는 숙련된 운영자를 위해: +빠르게 시작하려는 숙련된 운영자를 위해: -1. [시스템 요구사항](/ko/reference/node-system-requirements) 확인 +1. [시스템 요구 사항](/ko/reference/node-system-requirements) 확인 2. [설치 가이드](/ko/how-to/install-node) 따르기 3. [구성 가이드](/ko/reference/node-configuration)를 사용하여 노드 구성 4. [스냅샷](/ko/how-to/use-node-snapshots)으로 동기화 속도 향상 5. [모니터링 가이드](/ko/how-to/monitor-node)로 노드 모니터링 -네트워크 파라미터 및 RPC 엔드포인트는 [메인넷 정보](/ko/reference/mainnet-information) 또는 [테스트넷 정보](/ko/reference/testnet-information)를 참조하세요. +네트워크 매개변수 및 RPC 엔드포인트는 [메인넷 정보](/ko/reference/mainnet-information) 또는 [테스트넷 정보](/ko/reference/testnet-information)를 참조하세요. -## 노드 운영이 체인과 연결되는 방식 +## 노드 운영 방식과 체인 연결 -노드를 실행한다는 것은 Stable의 체인 수준 규칙을 적용한다는 의미입니다. 다음 페이지에서는 노드가 구현하는 동작을 설명합니다: +노드를 실행한다는 것은 Stable의 체인 수준 규칙을 적용하는 것을 의미합니다. 이 페이지들은 노드가 구현하는 동작을 설명합니다. -- **[컨트랙트 개요](/ko/explanation/contracts-overview)** 는 노드가 제공하는 수수료 모델, JSON-RPC 표면, 시스템 모듈을 다룹니다. -- **[파이널리티](/ko/explanation/finality)** 는 단일 슬롯 파이널리티와 합의 계층에서 "확정"이 무엇을 의미하는지 설명합니다. -- **[아키텍처 개요](/ko/explanation/core-optimization-overview)** 는 합의, 실행, 데이터베이스, RPC 계층을 살펴봅니다. -- **[가스 가격 책정](/ko/explanation/gas-pricing)** 은 USDT0 단위 수수료가 어떻게 책정되고 징수되는지 설명합니다. +- **[컨트랙트 개요](/ko/explanation/contracts-overview)**는 노드가 제공하는 수수료 모델, JSON-RPC 표면 및 시스템 모듈을 다룹니다. +- **[최종성](/ko/explanation/finality)**은 단일 슬롯 최종성과 합의 계층에서 "확인됨"이 의미하는 바를 설명합니다. +- **[아키텍처 개요](/ko/explanation/core-optimization-overview)**는 합의, 실행, 데이터베이스 및 RPC 계층을 설명합니다. +- **[가스 가격 책정](/ko/explanation/gas-pricing)**은 USDT0으로 표시된 수수료가 어떻게 책정되고 징수되는지 설명합니다. diff --git a/docs/sidebar.json b/docs/sidebar.json index 76942b2..dd1346b 100644 --- a/docs/sidebar.json +++ b/docs/sidebar.json @@ -735,11 +735,11 @@ "link": "/ko/explanation/ethereum-compatibility" }, { - "text": "완결성", + "text": "최종성", "link": "/ko/explanation/finality" }, { - "text": "가스 가격", + "text": "가스 가격 책정", "link": "/ko/explanation/gas-pricing" }, { @@ -765,15 +765,15 @@ "link": "/ko/explanation/flow-of-funds" }, { - "text": "USDT0 Stable 브리징", + "text": "USDT0를 Stable로 브리징", "link": "/ko/explanation/usdt0-bridging" }, { - "text": "브릿지 보안", + "text": "브리지 보안", "link": "/ko/explanation/bridge-security" }, { - "text": "USDT0 가스", + "text": "가스로서의 USDT0", "link": "/ko/explanation/usdt-as-gas-token" }, { @@ -823,7 +823,7 @@ "link": "/ko/explanation/high-performance-rpc" }, { - "text": "아우토반", + "text": "Autobahn", "link": "/ko/explanation/autobahn" } ] @@ -833,25 +833,25 @@ "collapsed": true, "items": [ { - "text": "결제 사용 사례", + "text": "사용 사례: 결제", "link": "/ko/explanation/use-case-payments" }, { - "text": "급여 사용 사례", + "text": "사용 사례: 급여", "link": "/ko/explanation/use-case-payroll" }, { - "text": "스폰서 사용 사례", + "text": "사용 사례: 스폰서", "link": "/ko/explanation/use-case-sponsored" }, { - "text": "가상 사용 사례", + "text": "사용 사례: 프라이빗", "link": "/ko/explanation/use-case-private" } ] }, { - "text": "토큰노믹스", + "text": "토크노믹스", "link": "/ko/reference/tokenomics" }, { @@ -876,62 +876,6 @@ "text": "빠른 시작", "link": "/ko/tutorial/quick-start" }, - { - "text": "Stable SDK", - "collapsed": true, - "items": [ - { - "text": "개요", - "link": "/ko/explanation/sdk-overview" - }, - { - "text": "빠른 시작", - "link": "/ko/tutorial/sdk-quickstart" - }, - { - "text": "참조", - "link": "/ko/reference/sdk" - }, - { - "text": "수익 창출", - "link": "/ko/how-to/earn-yield" - }, - { - "text": "viem 통합", - "link": "/ko/how-to/sdk-with-viem" - }, - { - "text": "wagmi 통합", - "link": "/ko/how-to/sdk-with-wagmi" - } - ] - }, - { - "text": "엔터프라이즈 SDK", - "collapsed": true, - "items": [ - { - "text": "개요", - "link": "/ko/explanation/enterprise-sdk" - }, - { - "text": "트랜잭션 중계", - "link": "/ko/how-to/relay-with-gas-waiver" - }, - { - "text": "블록 공간 보장", - "link": "/ko/how-to/send-guaranteed-transactions" - }, - { - "text": "보장된 중계 트랜잭션", - "link": "/ko/how-to/guaranteed-relayed-transactions" - }, - { - "text": "참조", - "link": "/ko/reference/enterprise-sdk" - } - ] - }, { "text": "사용자 온보딩", "collapsed": true, @@ -979,15 +923,15 @@ "link": "/ko/tutorial/send-usdt0" }, { - "text": "가스 없는 트랜잭션", + "text": "제로 가스 트랜잭션", "link": "/ko/how-to/zero-gas-transactions" }, { - "text": "USDT0를 가스로 사용", + "text": "가스로 USDT0 사용", "link": "/ko/how-to/work-with-usdt-gas" }, { - "text": "USDT0 Stable 브리징", + "text": "USDT0를 Stable로 브리징", "link": "/ko/tutorial/bridge-usdt0" } ] @@ -1093,11 +1037,11 @@ "link": "/ko/reference/system-modules-api-overview" }, { - "text": "뱅크 모듈", + "text": "은행 모듈", "link": "/ko/explanation/bank-module" }, { - "text": "뱅크 모듈 API", + "text": "은행 모듈 API", "link": "/ko/reference/bank-module-api" }, { @@ -1129,7 +1073,7 @@ "link": "/ko/how-to/track-unbonding" }, { - "text": "검증자 데이터 색인", + "text": "유효성 검사기 데이터 색인", "link": "/ko/how-to/index-validator-data" } ] @@ -1155,7 +1099,7 @@ "link": "/ko/reference/connect" }, { - "text": "Faucet 사용", + "text": "수도꼭지 사용", "link": "/ko/how-to/use-faucet" }, { @@ -1171,7 +1115,7 @@ "link": "/ko/reference/mainnet-information" }, { - "text": "메인넷 버전 이력", + "text": "메인넷 버전 기록", "link": "/ko/reference/mainnet-version-history" } ] @@ -1185,7 +1129,7 @@ "link": "/ko/reference/testnet-information" }, { - "text": "테스트넷 버전 이력", + "text": "테스트넷 버전 기록", "link": "/ko/reference/testnet-version-history" }, { @@ -1223,7 +1167,7 @@ "collapsed": true, "items": [ { - "text": "브릿지", + "text": "브리지", "link": "/ko/reference/bridges" }, { @@ -1235,7 +1179,7 @@ "link": "/ko/reference/oracles" }, { - "text": "RPC 제공자", + "text": "RPC 제공업체", "link": "/ko/reference/rpc-providers" }, { @@ -1251,7 +1195,7 @@ "link": "/ko/reference/wallets" }, { - "text": "커스터디", + "text": "수탁", "link": "/ko/reference/custody" }, { @@ -1261,7 +1205,7 @@ ] }, { - "text": "운영 준비 태세", + "text": "제품 준비도", "link": "/ko/how-to/production-readiness" }, { @@ -1281,7 +1225,73 @@ ] }, { - "text": "운영", + "text": "도구 및 SDK", + "collapsed": true, + "items": [ + { + "text": "도구 및 SDK 개요", + "link": "/ko/explanation/tools-overview" + }, + { + "text": "Stable SDK", + "collapsed": true, + "items": [ + { + "text": "개요", + "link": "/ko/explanation/sdk-overview" + }, + { + "text": "빠른 시작", + "link": "/ko/tutorial/sdk-quickstart" + }, + { + "text": "참조", + "link": "/ko/reference/sdk" + }, + { + "text": "수익 창출", + "link": "/ko/how-to/earn-yield" + }, + { + "text": "Viem 통합", + "link": "/ko/how-to/sdk-with-viem" + }, + { + "text": "Wagmi 통합", + "link": "/ko/how-to/sdk-with-wagmi" + } + ] + }, + { + "text": "엔터프라이즈 SDK", + "collapsed": true, + "items": [ + { + "text": "개요", + "link": "/ko/explanation/enterprise-sdk" + }, + { + "text": "릴레이 트랜잭션", + "link": "/ko/how-to/relay-with-gas-waiver" + }, + { + "text": "블록 공간 보장", + "link": "/ko/how-to/send-guaranteed-transactions" + }, + { + "text": "보장된 릴레이 트랜잭션", + "link": "/ko/how-to/guaranteed-relayed-transactions" + }, + { + "text": "참조", + "link": "/ko/reference/enterprise-sdk" + } + ] + } + ] + }, + { + "text": "Stable 노드 실행", "collapsed": true, "items": [ { @@ -1305,7 +1315,7 @@ "link": "/ko/how-to/use-node-snapshots" }, { - "text": "검증자 실행", + "text": "유효성 검사기 실행", "link": "/ko/how-to/run-validator" }, { @@ -1335,7 +1345,7 @@ "link": "/ko/explanation/ai-agents-guides" }, { - "text": "x402 및 MPP 통해 지불", + "text": "x402 및 MPP를 통해 결제", "collapsed": true, "items": [ { @@ -1359,7 +1369,7 @@ "link": "/ko/how-to/build-mpp-endpoint" }, { - "text": "MCP로 지불", + "text": "MCP로 결제", "link": "/ko/how-to/pay-with-mcp" } ] @@ -1369,7 +1379,7 @@ "collapsed": true, "items": [ { - "text": "AI를 통한 개발", + "text": "AI로 개발", "link": "/ko/how-to/develop-with-ai" }, { @@ -1391,15 +1401,15 @@ "collapsed": true, "items": [ { - "text": "学习总览", + "text": "学习概览", "link": "/cn/explanation/learn-overview" }, { - "text": "总览", + "text": "概览", "link": "/cn/explanation/overview" }, { - "text": "技术总览", + "text": "技术概览", "link": "/cn/explanation/tech-overview" }, { @@ -1411,7 +1421,7 @@ "link": "/cn/explanation/core-concepts" }, { - "text": "主要功能", + "text": "主要特点", "link": "/cn/explanation/key-features" }, { @@ -1445,7 +1455,7 @@ "collapsed": true, "items": [ { - "text": "USDT0 功能总览", + "text": "USDT0 功能概览", "link": "/cn/explanation/usdt-features-overview" }, { @@ -1453,11 +1463,11 @@ "link": "/cn/explanation/flow-of-funds" }, { - "text": "将 USDT0 跨链至 Stable", + "text": "将 USDT0 桥接到 Stable", "link": "/cn/explanation/usdt0-bridging" }, { - "text": "跨链桥安全性", + "text": "桥接安全", "link": "/cn/explanation/bridge-security" }, { @@ -1477,7 +1487,7 @@ "link": "/cn/explanation/guaranteed-blockspace" }, { - "text": "USDT 交易聚合器", + "text": "USDT 转账聚合器", "link": "/cn/explanation/usdt-transfer-aggregator" }, { @@ -1491,7 +1501,7 @@ "collapsed": true, "items": [ { - "text": "核心优化总览", + "text": "核心优化概览", "link": "/cn/explanation/core-optimization-overview" }, { @@ -1557,75 +1567,19 @@ "collapsed": true, "items": [ { - "text": "构建总览", + "text": "构建概览", "link": "/cn/explanation/build-overview" }, { - "text": "快速开始", + "text": "快速入门", "link": "/cn/tutorial/quick-start" }, - { - "text": "Stable SDK", - "collapsed": true, - "items": [ - { - "text": "总览", - "link": "/cn/explanation/sdk-overview" - }, - { - "text": "快速入门", - "link": "/cn/tutorial/sdk-quickstart" - }, - { - "text": "参考", - "link": "/cn/reference/sdk" - }, - { - "text": "赚取收益", - "link": "/cn/how-to/earn-yield" - }, - { - "text": "Viem 集成", - "link": "/cn/how-to/sdk-with-viem" - }, - { - "text": "Wagmi 集成", - "link": "/cn/how-to/sdk-with-wagmi" - } - ] - }, - { - "text": "企业级 SDK", - "collapsed": true, - "items": [ - { - "text": "总览", - "link": "/cn/explanation/enterprise-sdk" - }, - { - "text": "中继交易", - "link": "/cn/how-to/relay-with-gas-waiver" - }, - { - "text": "保证区块空间", - "link": "/cn/how-to/send-guaranteed-transactions" - }, - { - "text": "保证中继交易", - "link": "/cn/how-to/guaranteed-relayed-transactions" - }, - { - "text": "参考", - "link": "/cn/reference/enterprise-sdk" - } - ] - }, { "text": "用户引导", "collapsed": true, "items": [ { - "text": "账户总览", + "text": "账户概览", "link": "/cn/explanation/accounts-overview" }, { @@ -1651,7 +1605,7 @@ "collapsed": true, "items": [ { - "text": "支付总览", + "text": "支付概览", "link": "/cn/explanation/payments-overview" }, { @@ -1663,7 +1617,7 @@ "collapsed": true, "items": [ { - "text": "发送首笔 USDT0", + "text": "发送您的第一个 USDT0", "link": "/cn/tutorial/send-usdt0" }, { @@ -1675,7 +1629,7 @@ "link": "/cn/how-to/work-with-usdt-gas" }, { - "text": "将 USDT0 跨链到 Stable", + "text": "将 USDT0 桥接到 Stable", "link": "/cn/tutorial/bridge-usdt0" } ] @@ -1693,7 +1647,7 @@ "link": "/cn/how-to/subscribe-and-collect" }, { - "text": "发票付款", + "text": "使用发票支付", "link": "/cn/how-to/pay-with-invoice" } ] @@ -1707,7 +1661,7 @@ "link": "/cn/explanation/erc-3009" }, { - "text": "支付用例总览", + "text": "支付用例概览", "link": "/cn/explanation/payment-use-cases-overview" }, { @@ -1739,7 +1693,7 @@ "collapsed": true, "items": [ { - "text": "合约总览", + "text": "合约概览", "link": "/cn/explanation/contracts-overview" }, { @@ -1747,7 +1701,7 @@ "link": "/cn/explanation/contracts-guides" }, { - "text": "部署首个合约", + "text": "部署您的第一个合约", "collapsed": true, "items": [ { @@ -1769,7 +1723,7 @@ "collapsed": true, "items": [ { - "text": "系统模块总览", + "text": "系统模块概览", "link": "/cn/explanation/system-modules-overview" }, { @@ -1777,7 +1731,7 @@ "link": "/cn/how-to/use-system-modules" }, { - "text": "系统模块 API 总览", + "text": "系统模块 API 概览", "link": "/cn/reference/system-modules-api-overview" }, { @@ -1813,11 +1767,11 @@ "link": "/cn/reference/system-transactions-api" }, { - "text": "追踪解除绑定", + "text": "追踪解除质押", "link": "/cn/how-to/track-unbonding" }, { - "text": "验证器数据索引", + "text": "索引验证者数据", "link": "/cn/how-to/index-validator-data" } ] @@ -1835,7 +1789,7 @@ "collapsed": true, "items": [ { - "text": "集成总览", + "text": "集成概览", "link": "/cn/explanation/integrate-overview" }, { @@ -1911,11 +1865,11 @@ "collapsed": true, "items": [ { - "text": "跨链桥", + "text": "桥", "link": "/cn/reference/bridges" }, { - "text": "去中心化交易所", + "text": "去中心化交易所 (DEX)", "link": "/cn/reference/dexes" }, { @@ -1931,7 +1885,7 @@ "link": "/cn/reference/network-routing" }, { - "text": "法币通道", + "text": "出入金通道", "link": "/cn/reference/ramps" }, { @@ -1969,11 +1923,77 @@ ] }, { - "text": "运营", + "text": "工具和 SDK", "collapsed": true, "items": [ { - "text": "节点运营总览", + "text": "工具和 SDK 概览", + "link": "/cn/explanation/tools-overview" + }, + { + "text": "Stable SDK", + "collapsed": true, + "items": [ + { + "text": "概览", + "link": "/cn/explanation/sdk-overview" + }, + { + "text": "快速入门", + "link": "/cn/tutorial/sdk-quickstart" + }, + { + "text": "参考", + "link": "/cn/reference/sdk" + }, + { + "text": "赚取收益", + "link": "/cn/how-to/earn-yield" + }, + { + "text": "viem 集成", + "link": "/cn/how-to/sdk-with-viem" + }, + { + "text": "wagmi 集成", + "link": "/cn/how-to/sdk-with-wagmi" + } + ] + }, + { + "text": "企业 SDK", + "collapsed": true, + "items": [ + { + "text": "概览", + "link": "/cn/explanation/enterprise-sdk" + }, + { + "text": "中继交易", + "link": "/cn/how-to/relay-with-gas-waiver" + }, + { + "text": "保证区块空间", + "link": "/cn/how-to/send-guaranteed-transactions" + }, + { + "text": "保证中继交易", + "link": "/cn/how-to/guaranteed-relayed-transactions" + }, + { + "text": "参考", + "link": "/cn/reference/enterprise-sdk" + } + ] + } + ] + }, + { + "text": "运行 Stable 节点", + "collapsed": true, + "items": [ + { + "text": "节点操作概览", "link": "/cn/reference/node-operations-overview" }, { @@ -1993,7 +2013,7 @@ "link": "/cn/how-to/use-node-snapshots" }, { - "text": "运行验证器", + "text": "运行验证者", "link": "/cn/how-to/run-validator" }, { @@ -2027,7 +2047,7 @@ "collapsed": true, "items": [ { - "text": "X402", + "text": "x402", "link": "/cn/explanation/x402" }, { @@ -2047,7 +2067,7 @@ "link": "/cn/how-to/build-mpp-endpoint" }, { - "text": "通过 MCP 支付", + "text": "使用 MCP 支付", "link": "/cn/how-to/pay-with-mcp" } ] @@ -2057,7 +2077,7 @@ "collapsed": true, "items": [ { - "text": "利用 AI 开发", + "text": "使用 AI 开发", "link": "/cn/how-to/develop-with-ai" }, {