diff --git a/src/problem1/index.ts b/src/problem1/index.ts new file mode 100644 index 000000000..0517606a5 --- /dev/null +++ b/src/problem1/index.ts @@ -0,0 +1,21 @@ +const sum_to_n_a = function (n: number) { + if (n <= 0) return 0; + n = Math.floor(n); + let sum = 0; + for (let i = 1; i <= n; i++) { + sum += i; + } + return sum; +}; + +const sum_to_n_b = function (n: number) { + if (n <= 0) return 0; + n = Math.floor(n); + return (n * (n + 1)) / 2; +}; + +const sum_to_n_c = function (n: number) { + if (n <= 0) return 0; + n = Math.floor(n); + return Array.from({ length: n }, (_, i) => i + 1).reduce((acc, v) => acc + v, 0); +}; diff --git a/src/problem2/.gitignore b/src/problem2/.gitignore new file mode 100644 index 000000000..57e2d5b41 --- /dev/null +++ b/src/problem2/.gitignore @@ -0,0 +1,21 @@ +node_modules/ +dist/ +coverage/ +.vscode/ +.idea/ +.eslintcache +*.tsbuildinfo +.DS_Store +Thumbs.db +*.log +npm-debug.log* +yarn-debug.log* +pnpm-debug.log* +lerna-debug.log* +.env +.env.local +.env.development.local +.env.production.local +.env.test.local +*.swp +*.swo diff --git a/src/problem2/index.html b/src/problem2/index.html index 4058a68bf..7d09eee42 100644 --- a/src/problem2/index.html +++ b/src/problem2/index.html @@ -1,27 +1,13 @@ - - - - - Fancy Form - - - - - - - - -
-
Swap
- - - - - - - -
- - - + + + + + + + Coin Swap + + +
+ + diff --git a/src/problem2/package-lock.json b/src/problem2/package-lock.json new file mode 100644 index 000000000..054ab5f92 --- /dev/null +++ b/src/problem2/package-lock.json @@ -0,0 +1,3495 @@ +{ + "name": "token-swap-app", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "token-swap-app", + "version": "0.0.0", + "dependencies": { + "antd": "^6.3.0", + "clsx": "^2.1.0", + "lucide-react": "^0.344.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^7.13.0", + "tailwind-merge": "^2.2.1", + "zod": "^3.22.4" + }, + "devDependencies": { + "@types/node": "^20.11.24", + "@types/react": "^18.2.64", + "@types/react-dom": "^18.2.21", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.18", + "postcss": "^8.4.35", + "tailwindcss": "^3.4.1", + "tailwindcss-animate": "^1.0.7", + "typescript": "^5.2.2", + "vite": "^5.1.4" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ant-design/colors": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-8.0.1.tgz", + "integrity": "sha512-foPVl0+SWIslGUtD/xBr1p9U4AKzPhNYEseXYRRo5QSzGACYZrQbe11AYJbYfAWnWSpGBx6JjBmSeugUsD9vqQ==", + "dependencies": { + "@ant-design/fast-color": "^3.0.0" + } + }, + "node_modules/@ant-design/cssinjs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-2.1.0.tgz", + "integrity": "sha512-eZFrPCnrYrF3XtL7qA4L75P0qA3TtZta8H3Yggy7UYFh8gZgu5bSMNF+v4UVCzGxzYmx8ZvPdgOce0BJ6PsW9g==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "@emotion/hash": "^0.8.0", + "@emotion/unitless": "^0.7.5", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "stylis": "^4.3.4" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/cssinjs-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs-utils/-/cssinjs-utils-2.1.1.tgz", + "integrity": "sha512-RKxkj5pGFB+FkPJ5NGhoX3DK3xsv0pMltha7Ei1AnY3tILeq38L7tuhaWDPQI/5nlPxOog44wvqpNyyGcUsNMg==", + "dependencies": { + "@ant-design/cssinjs": "^2.1.0", + "@babel/runtime": "^7.23.2", + "@rc-component/util": "^1.4.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@ant-design/fast-color": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-3.0.1.tgz", + "integrity": "sha512-esKJegpW4nckh0o6kV3Tkb7NPIZYbPnnFxmQDUmL08ukXZAvV85TZBr70eGuke/CIArLaP6aw8lt9KILjnWuOw==", + "engines": { + "node": ">=8.x" + } + }, + "node_modules/@ant-design/icons": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-6.1.0.tgz", + "integrity": "sha512-KrWMu1fIg3w/1F2zfn+JlfNDU8dDqILfA5Tg85iqs1lf8ooyGlbkA+TkwfOKKgqpUmAiRY1PTFpuOU2DAIgSUg==", + "dependencies": { + "@ant-design/colors": "^8.0.0", + "@ant-design/icons-svg": "^4.4.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/icons-svg": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz", + "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==" + }, + "node_modules/@ant-design/react-slick": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-2.0.0.tgz", + "integrity": "sha512-HMS9sRoEmZey8LsE/Yo6+klhlzU12PisjrVcydW3So7RdklyEd2qehyU6a7Yp+OYN72mgsYs3NFCyP2lCPFVqg==", + "dependencies": { + "@babel/runtime": "^7.28.4", + "clsx": "^2.1.1", + "json2mq": "^0.2.0", + "throttle-debounce": "^5.0.0" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@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" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "dev": true, + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rc-component/async-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/async-validator/-/async-validator-5.1.0.tgz", + "integrity": "sha512-n4HcR5siNUXRX23nDizbZBQPO0ZM/5oTtmKZ6/eqL0L2bo747cklFdZGRN2f+c9qWGICwDzrhW0H7tE9PptdcA==", + "dependencies": { + "@babel/runtime": "^7.24.4" + }, + "engines": { + "node": ">=14.x" + } + }, + "node_modules/@rc-component/cascader": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@rc-component/cascader/-/cascader-1.14.0.tgz", + "integrity": "sha512-Ip9356xwZUR2nbW5PRVGif4B/bDve4pLa/N+PGbvBaTnjbvmN4PFMBGQSmlDlzKP1ovxaYMvwF/dI9lXNLT4iQ==", + "dependencies": { + "@rc-component/select": "~1.6.0", + "@rc-component/tree": "~1.2.0", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/checkbox": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@rc-component/checkbox/-/checkbox-2.0.0.tgz", + "integrity": "sha512-3CXGPpAR9gsPKeO2N78HAPOzU30UdemD6HGJoWVJOpa6WleaGB5kzZj3v6bdTZab31YuWgY/RxV3VKPctn0DwQ==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/collapse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rc-component/collapse/-/collapse-1.2.0.tgz", + "integrity": "sha512-ZRYSKSS39qsFx93p26bde7JUZJshsUBEQRlRXPuJYlAiNX0vyYlF5TsAm8JZN3LcF8XvKikdzPbgAtXSbkLUkw==", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/motion": "^1.1.4", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/color-picker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-3.1.0.tgz", + "integrity": "sha512-o7Vavj7yyfVxFmeynXf0fCHVlC0UTE9al74c6nYuLck+gjuVdQNWSVXR8Efq/mmWFy7891SCOsfaPq6Eqe1s/g==", + "dependencies": { + "@ant-design/fast-color": "^3.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/context": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/context/-/context-2.0.1.tgz", + "integrity": "sha512-HyZbYm47s/YqtP6pKXNMjPEMaukyg7P0qVfgMLzr7YiFNMHbK2fKTAGzms9ykfGHSfyf75nBbgWw+hHkp+VImw==", + "dependencies": { + "@rc-component/util": "^1.3.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/dialog": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/@rc-component/dialog/-/dialog-1.8.4.tgz", + "integrity": "sha512-Ay6PM7phkTkquplG8fWfUGFZ2GTLx9diTl4f0d8Eqxd7W1u1KjE9AQooFQHOHnhZf0Ya3z51+5EKCWHmt/dNEw==", + "dependencies": { + "@rc-component/motion": "^1.1.3", + "@rc-component/portal": "^2.1.0", + "@rc-component/util": "^1.9.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/drawer": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@rc-component/drawer/-/drawer-1.4.2.tgz", + "integrity": "sha512-1ib+fZEp6FBu+YvcIktm+nCQ+Q+qIpwpoaJH6opGr4ofh2QMq+qdr5DLC4oCf5qf3pcWX9lUWPYX652k4ini8Q==", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/portal": "^2.1.3", + "@rc-component/util": "^1.9.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/dropdown": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rc-component/dropdown/-/dropdown-1.0.2.tgz", + "integrity": "sha512-6PY2ecUSYhDPhkNHHb4wfeAya04WhpmUSKzdR60G+kMNVUCX2vjT/AgTS0Lz0I/K6xrPMJ3enQbwVpeN3sHCgg==", + "dependencies": { + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.11.0", + "react-dom": ">=16.11.0" + } + }, + "node_modules/@rc-component/form": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@rc-component/form/-/form-1.6.2.tgz", + "integrity": "sha512-OgIn2RAoaSBqaIgzJf/X6iflIa9LpTozci1lagLBdURDFhGA370v0+T0tXxOi8YShMjTha531sFhwtnrv+EJaQ==", + "dependencies": { + "@rc-component/async-validator": "^5.1.0", + "@rc-component/util": "^1.6.2", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/image": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@rc-component/image/-/image-1.6.0.tgz", + "integrity": "sha512-tSfn2ZE/oP082g4QIOxeehkmgnXB7R+5AFj/lIFr4k7pEuxHBdyGIq9axoCY9qea8NN0DY6p4IB/F07tLqaT5A==", + "dependencies": { + "@rc-component/motion": "^1.0.0", + "@rc-component/portal": "^2.1.2", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/input": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rc-component/input/-/input-1.1.2.tgz", + "integrity": "sha512-Q61IMR47piUBudgixJ30CciKIy9b1H95qe7GgEKOmSJVJXvFRWJllJfQry9tif+MX2cWFXWJf/RXz4kaCeq/Fg==", + "dependencies": { + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@rc-component/input-number": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@rc-component/input-number/-/input-number-1.6.2.tgz", + "integrity": "sha512-Gjcq7meZlCOiWN1t1xCC+7/s85humHVokTBI7PJgTfoyw5OWF74y3e6P8PHX104g9+b54jsodFIzyaj6p8LI9w==", + "dependencies": { + "@rc-component/mini-decimal": "^1.0.1", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mentions": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@rc-component/mentions/-/mentions-1.6.0.tgz", + "integrity": "sha512-KIkQNP6habNuTsLhUv0UGEOwG67tlmE7KNIJoQZZNggEZl5lQJTytFDb69sl5CK3TDdISCTjKP3nGEBKgT61CQ==", + "dependencies": { + "@rc-component/input": "~1.1.0", + "@rc-component/menu": "~1.2.0", + "@rc-component/textarea": "~1.1.0", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/menu": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rc-component/menu/-/menu-1.2.0.tgz", + "integrity": "sha512-VWwDuhvYHSnTGj4n6bV3ISrLACcPAzdPOq3d0BzkeiM5cve8BEYfvkEhNoM0PLzv51jpcejeyrLXeMVIJ+QJlg==", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/overflow": "^1.0.0", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mini-decimal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz", + "integrity": "sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==", + "dependencies": { + "@babel/runtime": "^7.18.0" + }, + "engines": { + "node": ">=8.x" + } + }, + "node_modules/@rc-component/motion": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@rc-component/motion/-/motion-1.1.6.tgz", + "integrity": "sha512-aEQobs/YA0kqRvHIPjQvOytdtdRVyhf/uXAal4chBjxDu6odHckExJzjn2D+Ju1aKK6hx3pAs6BXdV9+86xkgQ==", + "dependencies": { + "@rc-component/util": "^1.2.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mutate-observer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-2.0.1.tgz", + "integrity": "sha512-AyarjoLU5YlxuValRi+w8JRH2Z84TBbFO2RoGWz9d8bSu0FqT8DtugH3xC3BV7mUwlmROFauyWuXFuq4IFbH+w==", + "dependencies": { + "@rc-component/util": "^1.2.0" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/notification": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rc-component/notification/-/notification-1.2.0.tgz", + "integrity": "sha512-OX3J+zVU7rvoJCikjrfW7qOUp7zlDeFBK2eA3SFbGSkDqo63Sl4Ss8A04kFP+fxHSxMDIS9jYVEZtU1FNCFuBA==", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/overflow": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rc-component/overflow/-/overflow-1.0.0.tgz", + "integrity": "sha512-GSlBeoE0XTBi5cf3zl8Qh7Uqhn7v8RrlJ8ajeVpEkNe94HWy5l5BQ0Mwn2TVUq9gdgbfEMUmTX7tJFAg7mz0Rw==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "@rc-component/resize-observer": "^1.0.1", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/pagination": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rc-component/pagination/-/pagination-1.2.0.tgz", + "integrity": "sha512-YcpUFE8dMLfSo6OARJlK6DbHHvrxz7pMGPGmC/caZSJJz6HRKHC1RPP001PRHCvG9Z/veD039uOQmazVuLJzlw==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/picker": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@rc-component/picker/-/picker-1.9.0.tgz", + "integrity": "sha512-OLisdk8AWVCG9goBU1dWzuH5QlBQk8jktmQ6p0/IyBFwdKGwyIZOSjnBYo8hooHiTdl0lU+wGf/OfMtVBw02KQ==", + "dependencies": { + "@rc-component/overflow": "^1.0.0", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/trigger": "^3.6.15", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=12.x" + }, + "peerDependencies": { + "date-fns": ">= 2.x", + "dayjs": ">= 1.x", + "luxon": ">= 3.x", + "moment": ">= 2.x", + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } + } + }, + "node_modules/@rc-component/portal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-2.2.0.tgz", + "integrity": "sha512-oc6FlA+uXCMiwArHsJyHcIkX4q6uKyndrPol2eWX8YPkAnztHOPsFIRtmWG4BMlGE5h7YIRE3NiaJ5VS8Lb1QQ==", + "dependencies": { + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=12.x" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/progress": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rc-component/progress/-/progress-1.0.2.tgz", + "integrity": "sha512-WZUnH9eGxH1+xodZKqdrHke59uyGZSWgj5HBM5Kwk5BrTMuAORO7VJ2IP5Qbm9aH3n9x3IcesqHHR0NWPBC7fQ==", + "dependencies": { + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/qrcode": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rc-component/qrcode/-/qrcode-1.1.1.tgz", + "integrity": "sha512-LfLGNymzKdUPjXUbRP+xOhIWY4jQ+YMj5MmWAcgcAq1Ij8XP7tRmAXqyuv96XvLUBE/5cA8hLFl9eO1JQMujrA==", + "dependencies": { + "@babel/runtime": "^7.24.7" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/rate": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/rate/-/rate-1.0.1.tgz", + "integrity": "sha512-bkXxeBqDpl5IOC7yL7GcSYjQx9G8H+6kLYQnNZWeBYq2OYIv1MONd6mqKTjnnJYpV0cQIU2z3atdW0j1kttpTw==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/resize-observer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rc-component/resize-observer/-/resize-observer-1.1.1.tgz", + "integrity": "sha512-NfXXMmiR+SmUuKE1NwJESzEUYUFWIDUn2uXpxCTOLwiRUUakd62DRNFjRJArgzyFW8S5rsL4aX5XlyIXyC/vRA==", + "dependencies": { + "@rc-component/util": "^1.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/segmented": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@rc-component/segmented/-/segmented-1.3.0.tgz", + "integrity": "sha512-5J/bJ01mbDnoA6P/FW8SxUvKn+OgUSTZJPzCNnTBntG50tzoP7DydGhqxp7ggZXZls7me3mc2EQDXakU3iTVFg==", + "dependencies": { + "@babel/runtime": "^7.11.1", + "@rc-component/motion": "^1.1.4", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@rc-component/select": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@rc-component/select/-/select-1.6.10.tgz", + "integrity": "sha512-y4+2LnyGZrAorIBwflk78PmFVUWcSc9pcljiH72oHj7K1YY/BFUmj224pD7P4o7J+tbIFES45Z7LIpjVmvYlNA==", + "dependencies": { + "@rc-component/overflow": "^1.0.0", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.3.0", + "@rc-component/virtual-list": "^1.0.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@rc-component/slider": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/slider/-/slider-1.0.1.tgz", + "integrity": "sha512-uDhEPU1z3WDfCJhaL9jfd2ha/Eqpdfxsn0Zb0Xcq1NGQAman0TWaR37OWp2vVXEOdV2y0njSILTMpTfPV1454g==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/steps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rc-component/steps/-/steps-1.2.2.tgz", + "integrity": "sha512-/yVIZ00gDYYPHSY0JP+M+s3ZvuXLu2f9rEjQqiUDs7EcYsUYrpJ/1bLj9aI9R7MBR3fu/NGh6RM9u2qGfqp+Nw==", + "dependencies": { + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/switch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rc-component/switch/-/switch-1.0.3.tgz", + "integrity": "sha512-Jgi+EbOBquje/XNdofr7xbJQZPYJP+BlPfR0h+WN4zFkdtB2EWqEfvkXJWeipflwjWip0/17rNbxEAqs8hVHfw==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/table": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@rc-component/table/-/table-1.9.1.tgz", + "integrity": "sha512-FVI5ZS/GdB3BcgexfCYKi3iHhZS3Fr59EtsxORszYGrfpH1eWr33eDNSYkVfLI6tfJ7vftJDd9D5apfFWqkdJg==", + "dependencies": { + "@rc-component/context": "^2.0.1", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/util": "^1.1.0", + "@rc-component/virtual-list": "^1.0.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/tabs": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rc-component/tabs/-/tabs-1.7.0.tgz", + "integrity": "sha512-J48cs2iBi7Ho3nptBxxIqizEliUC+ExE23faspUQKGQ550vaBlv3aGF8Epv/UB1vFWeoJDTW/dNzgIU0Qj5i/w==", + "dependencies": { + "@rc-component/dropdown": "~1.0.0", + "@rc-component/menu": "~1.2.0", + "@rc-component/motion": "^1.1.3", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/textarea": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rc-component/textarea/-/textarea-1.1.2.tgz", + "integrity": "sha512-9rMUEODWZDMovfScIEHXWlVZuPljZ2pd1LKNjslJVitn4SldEzq5vO1CL3yy3Dnib6zZal2r2DPtjy84VVpF6A==", + "dependencies": { + "@rc-component/input": "~1.1.0", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/tooltip": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@rc-component/tooltip/-/tooltip-1.4.0.tgz", + "integrity": "sha512-8Rx5DCctIlLI4raR0I0xHjVTf1aF48+gKCNeAAo5bmF5VoR5YED+A/XEqzXv9KKqrJDRcd3Wndpxh2hyzrTtSg==", + "dependencies": { + "@rc-component/trigger": "^3.7.1", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/tour": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-2.3.0.tgz", + "integrity": "sha512-K04K9r32kUC+auBSQfr+Fss4SpSIS9JGe56oq/ALAX0p+i2ylYOI1MgR83yBY7v96eO6ZFXcM/igCQmubps0Ow==", + "dependencies": { + "@rc-component/portal": "^2.2.0", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.7.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/tree": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rc-component/tree/-/tree-1.2.3.tgz", + "integrity": "sha512-mG8hF2ogQcKaEpfyxzPvMWqqkptofd7Sf+YiXOpPzuXLTLwNKfLDJtysc1/oybopbnzxNqWh2Vgwi+GYwNIb7w==", + "dependencies": { + "@rc-component/motion": "^1.0.0", + "@rc-component/util": "^1.8.1", + "@rc-component/virtual-list": "^1.0.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=10.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@rc-component/tree-select": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@rc-component/tree-select/-/tree-select-1.8.0.tgz", + "integrity": "sha512-iYsPq3nuLYvGqdvFAW+l+I9ASRIOVbMXyA8FGZg2lGym/GwkaWeJGzI4eJ7c9IOEhRj0oyfIN4S92Fl3J05mjQ==", + "dependencies": { + "@rc-component/select": "~1.6.0", + "@rc-component/tree": "~1.2.0", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@rc-component/trigger": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-3.9.0.tgz", + "integrity": "sha512-X8btpwfrT27AgrZVOz4swclhEHTZcqaHeQMXXBgveagOiakTa36uObXbdwerXffgV8G9dH1fAAE0DHtVQs8EHg==", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/portal": "^2.2.0", + "@rc-component/resize-observer": "^1.1.1", + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/upload": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/upload/-/upload-1.1.0.tgz", + "integrity": "sha512-LIBV90mAnUE6VK5N4QvForoxZc4XqEYZimcp7fk+lkE4XwHHyJWxpIXQQwMU8hJM+YwBbsoZkGksL1sISWHQxw==", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@rc-component/util/-/util-1.9.0.tgz", + "integrity": "sha512-5uW6AfhIigCWeEQDthTozlxiT4Prn6xYQWeO0xokjcaa186OtwPRHBZJ2o0T0FhbjGhZ3vXdbkv0sx3gAYW7Vg==", + "dependencies": { + "is-mobile": "^5.0.0", + "react-is": "^18.2.0" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/virtual-list": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rc-component/virtual-list/-/virtual-list-1.0.2.tgz", + "integrity": "sha512-uvTol/mH74FYsn5loDGJxo+7kjkO4i+y4j87Re1pxJBs0FaeuMuLRzQRGaXwnMcV1CxpZLi2Z56Rerj2M00fjQ==", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@rc-component/resize-observer": "^1.0.1", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.33.tgz", + "integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==", + "dev": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.3.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz", + "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/antd": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/antd/-/antd-6.3.0.tgz", + "integrity": "sha512-bbHJcASrRHp02wTpr940KtUHlTT6tvmaD4OAjqgOJXNmTQ/+qBDdBVWY/yeDV41p/WbWjTLlaqRGVbL3UEVpNw==", + "dependencies": { + "@ant-design/colors": "^8.0.1", + "@ant-design/cssinjs": "^2.1.0", + "@ant-design/cssinjs-utils": "^2.1.1", + "@ant-design/fast-color": "^3.0.1", + "@ant-design/icons": "^6.1.0", + "@ant-design/react-slick": "~2.0.0", + "@babel/runtime": "^7.28.4", + "@rc-component/cascader": "~1.14.0", + "@rc-component/checkbox": "~2.0.0", + "@rc-component/collapse": "~1.2.0", + "@rc-component/color-picker": "~3.1.0", + "@rc-component/dialog": "~1.8.4", + "@rc-component/drawer": "~1.4.2", + "@rc-component/dropdown": "~1.0.2", + "@rc-component/form": "~1.6.2", + "@rc-component/image": "~1.6.0", + "@rc-component/input": "~1.1.2", + "@rc-component/input-number": "~1.6.2", + "@rc-component/mentions": "~1.6.0", + "@rc-component/menu": "~1.2.0", + "@rc-component/motion": "~1.1.6", + "@rc-component/mutate-observer": "^2.0.1", + "@rc-component/notification": "~1.2.0", + "@rc-component/pagination": "~1.2.0", + "@rc-component/picker": "~1.9.0", + "@rc-component/progress": "~1.0.2", + "@rc-component/qrcode": "~1.1.1", + "@rc-component/rate": "~1.0.1", + "@rc-component/resize-observer": "^1.1.1", + "@rc-component/segmented": "~1.3.0", + "@rc-component/select": "~1.6.5", + "@rc-component/slider": "~1.0.1", + "@rc-component/steps": "~1.2.2", + "@rc-component/switch": "~1.0.3", + "@rc-component/table": "~1.9.1", + "@rc-component/tabs": "~1.7.0", + "@rc-component/textarea": "~1.1.2", + "@rc-component/tooltip": "~1.4.0", + "@rc-component/tour": "~2.3.0", + "@rc-component/tree": "~1.2.3", + "@rc-component/tree-select": "~1.8.0", + "@rc-component/trigger": "^3.9.0", + "@rc-component/upload": "~1.1.0", + "@rc-component/util": "^1.9.0", + "clsx": "^2.1.1", + "dayjs": "^1.11.11", + "scroll-into-view-if-needed": "^3.1.0", + "throttle-debounce": "^5.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ant-design" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.24", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", + "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001766", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001770", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz", + "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-mobile": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-5.0.0.tgz", + "integrity": "sha512-Tz/yndySvLAEXh+Uk8liFCxOwVH6YutuR74utvOcu7I9Di+DwM0mtdPVZNaVvvBUM2OXxne/NhOs1zAO7riusQ==" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json2mq": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", + "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", + "dependencies": { + "string-convert": "^0.2.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.344.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.344.0.tgz", + "integrity": "sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.0.tgz", + "integrity": "sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.0.tgz", + "integrity": "sha512-5CO/l5Yahi2SKC6rGZ+HDEjpjkGaG/ncEP7eWFTvFxbHP8yeeI0PxTDjimtpXYlR3b3i9/WIL4VJttPrESIf2g==", + "license": "MIT", + "dependencies": { + "react-router": "7.13.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-convert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", + "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==" + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==" + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.1.tgz", + "integrity": "sha512-Oo6tHdpZsGpkKG88HJ8RR1rg/RdnEkQEfMoEk2x1XRI3F1AxeU+ijRXpiVUF4UbLfcxxRGw6TbUINKYdWVsQTQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "dev": true, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throttle-debounce": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz", + "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==", + "engines": { + "node": ">=12.22" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/src/problem2/package.json b/src/problem2/package.json new file mode 100644 index 000000000..955bfd93f --- /dev/null +++ b/src/problem2/package.json @@ -0,0 +1,33 @@ +{ + "name": "token-swap-app", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "antd": "^6.3.0", + "clsx": "^2.1.0", + "lucide-react": "^0.344.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwind-merge": "^2.2.1", + "zod": "^3.22.4" + }, + "devDependencies": { + "@types/node": "^20.11.24", + "@types/react": "^18.2.64", + "@types/react-dom": "^18.2.21", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.18", + "postcss": "^8.4.35", + "tailwindcss": "^3.4.1", + "tailwindcss-animate": "^1.0.7", + "typescript": "^5.2.2", + "vite": "^5.1.4" + } +} diff --git a/src/problem2/postcss.config.js b/src/problem2/postcss.config.js new file mode 100644 index 000000000..2e7af2b7f --- /dev/null +++ b/src/problem2/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/problem2/script.js b/src/problem2/script.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/problem2/src/App.tsx b/src/problem2/src/App.tsx new file mode 100644 index 000000000..e4fd43936 --- /dev/null +++ b/src/problem2/src/App.tsx @@ -0,0 +1,56 @@ +import { ToastProvider } from "./components/ui/Toast"; +import { Layout } from "./components/layout/Layout"; +import { ConfigProvider, theme } from "antd"; +import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom"; +import { SwapPage } from "./pages/swap"; + +function App() { + return ( + + + + + + } + /> + + } + /> + + + + + + ); +} + +export default App; diff --git a/src/problem2/src/components/layout/Header.tsx b/src/problem2/src/components/layout/Header.tsx new file mode 100644 index 000000000..a09ffc0a3 --- /dev/null +++ b/src/problem2/src/components/layout/Header.tsx @@ -0,0 +1,62 @@ +import React from "react"; +import { Menu, Globe, Bell, User, Wallet } from "lucide-react"; +import { Button } from "@/components/ui"; + +export const Header: React.FC<{ onMenuClick: () => void }> = ({ onMenuClick }) => { + return ( +
+
+
+ + +
+ B +
+ + Coin Swap + +
+ +
+
+
+ + + + +
+ +
+
+
+ ); +}; diff --git a/src/problem2/src/components/layout/Layout.tsx b/src/problem2/src/components/layout/Layout.tsx new file mode 100644 index 000000000..34814a4cd --- /dev/null +++ b/src/problem2/src/components/layout/Layout.tsx @@ -0,0 +1,28 @@ +import React, { useState } from "react"; +import { Header, Sidebar } from "@/components/layout"; + +export const Layout: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const [sidebarOpen, setSidebarOpen] = useState(false); + + return ( +
+
setSidebarOpen(true)} /> +
+
+ {}} + /> +
+
+ setSidebarOpen(false)} + /> +
+ +
{children}
+
+
+ ); +}; diff --git a/src/problem2/src/components/layout/Sidebar.tsx b/src/problem2/src/components/layout/Sidebar.tsx new file mode 100644 index 000000000..201cafe61 --- /dev/null +++ b/src/problem2/src/components/layout/Sidebar.tsx @@ -0,0 +1,62 @@ +import React from "react"; +import { LayoutDashboard, History, Shield, HelpCircle, X } from "lucide-react"; +import { cn } from "@/utils"; + +interface SidebarProps { + isOpen: boolean; + onClose: () => void; +} + +export const Sidebar: React.FC = ({ isOpen, onClose }) => { + const menuItems = [ + { icon: LayoutDashboard, label: "Dashboard", active: false }, + { icon: History, label: "History", active: false }, + { icon: Shield, label: "Security", active: false }, + { icon: HelpCircle, label: "Support", active: false }, + ]; + + return ( + <> + {/* Mobile Overlay */} + {isOpen && ( +
+ )} + + {/* Sidebar Content */} + + + ); +}; diff --git a/src/problem2/src/components/layout/index.ts b/src/problem2/src/components/layout/index.ts new file mode 100644 index 000000000..115fccc13 --- /dev/null +++ b/src/problem2/src/components/layout/index.ts @@ -0,0 +1,3 @@ +export * from "./Header"; +export * from "./Layout"; +export * from "./Sidebar"; diff --git a/src/problem2/src/components/swap/ConfirmSwapModal.tsx b/src/problem2/src/components/swap/ConfirmSwapModal.tsx new file mode 100644 index 000000000..ffe12ed78 --- /dev/null +++ b/src/problem2/src/components/swap/ConfirmSwapModal.tsx @@ -0,0 +1,95 @@ +import React from "react"; +import { ArrowDownUp } from "lucide-react"; +import { Modal, Button } from "@/components/ui"; +import { Token } from "@/types"; + +interface ConfirmSwapModalProps { + isOpen: boolean; + onClose: () => void; + fromToken: Token; + toToken: Token; + fromAmount: string; + toAmount: string; + exchangeRate: number; + onConfirm: () => void; +} + +export const ConfirmSwapModal: React.FC = ({ + isOpen, + onClose, + fromToken, + toToken, + fromAmount, + toAmount, + exchangeRate, + onConfirm, +}) => { + return ( + +
+
+
+
+ +
+
{fromAmount}
+
{fromToken.symbol}
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
{toAmount}
+
{toToken.symbol}
+
+
+
+
+ +
+
+ Rate + + 1 {fromToken.symbol} = {exchangeRate.toFixed(6)} {toToken.symbol} + +
+
+ Network Fee + 0.001 {fromToken.symbol} +
+
+ Price Impact + 0.05% +
+
+ + +
+
+ ); +}; diff --git a/src/problem2/src/components/swap/OrderDetails.tsx b/src/problem2/src/components/swap/OrderDetails.tsx new file mode 100644 index 000000000..fe02b6f5d --- /dev/null +++ b/src/problem2/src/components/swap/OrderDetails.tsx @@ -0,0 +1,56 @@ +import React, { useState } from 'react'; +import { ChevronDown, ChevronUp, Info } from 'lucide-react'; + +interface OrderDetailsProps { + exchangeRate: number; + fromSymbol: string; + toSymbol: string; + fee: number; + minReceived: string; + priceImpact: number; +} + +export const OrderDetails: React.FC = ({ + exchangeRate, + fromSymbol, + toSymbol, + fee, + minReceived, + priceImpact +}) => { + const [isOpen, setIsOpen] = useState(false); + + return ( +
+ + + {isOpen && ( +
+
+ Price Impact + 2 ? 'text-danger' : 'text-success'}> + < {priceImpact}% + +
+
+ Liquidity Provider Fee + {fee} {fromSymbol} +
+
+ Minimum Received + {minReceived} {toSymbol} +
+
+ )} +
+ ); +}; diff --git a/src/problem2/src/components/swap/Slippage.tsx b/src/problem2/src/components/swap/Slippage.tsx new file mode 100644 index 000000000..86114eeca --- /dev/null +++ b/src/problem2/src/components/swap/Slippage.tsx @@ -0,0 +1,34 @@ +import React from "react"; + +interface SlippageProps { + value: number; + onChange: (val: number) => void; +} + +export const Slippage: React.FC = ({ value, onChange }) => { + return ( +
+
+ Slippage Tolerance + + Your transaction will revert if the price changes unfavorably by more than this + percentage. + +
+
+ {[0.1, 0.5, 1.0].map((val) => ( + + ))} +
+
+ ); +}; diff --git a/src/problem2/src/components/swap/SwapCard.tsx b/src/problem2/src/components/swap/SwapCard.tsx new file mode 100644 index 000000000..cf18a456a --- /dev/null +++ b/src/problem2/src/components/swap/SwapCard.tsx @@ -0,0 +1,207 @@ +import React, { useState } from "react"; +import { ArrowDownUp, Settings } from "lucide-react"; +import { MOCK_TOKENS } from "@/constants/tokens"; +import { Token } from "@/types"; +import { + Slippage, + ConfirmSwapModal, + OrderDetails, + TokenModal, + TokenInput, +} from "@/components/swap"; +import { Button, useToast } from "@/components/ui"; +import { useSwap } from "@/hooks/useSwap"; + +export const SwapCard: React.FC = () => { + const { + fromToken, + setFromToken, + toToken, + setToToken, + fromAmount, + setFromAmount, + toAmount, + exchangeRate, + loading, + slippage, + setSlippage, + handleSwitch, + } = useSwap(); + + const { addToast } = useToast(); + + const [isTokenModalOpen, setIsTokenModalOpen] = useState(false); + const [activeSide, setActiveSide] = useState<"from" | "to">("from"); + const [isConfirmModalOpen, setIsConfirmModalOpen] = useState(false); + const [settingsOpen, setSettingsOpen] = useState(false); + const [tab, setTab] = useState<"market" | "limit">("market"); + + const handleTokenSelect = (token: Token) => { + if (activeSide === "from") { + if (token.symbol === toToken.symbol) { + handleSwitch(); + } else { + setFromToken(token); + } + } else { + if (token.symbol === fromToken.symbol) { + handleSwitch(); + } else { + setToToken(token); + } + } + }; + + const openTokenModal = (side: "from" | "to") => { + setActiveSide(side); + setIsTokenModalOpen(true); + }; + + const handleSwap = () => { + // Validation + if (!fromAmount || Number(fromAmount) <= 0) { + addToast("Please enter an amount", "error"); + return; + } + if (Number(fromAmount) > fromToken.balance) { + addToast("Insufficient balance", "error"); + return; + } + + setIsConfirmModalOpen(true); + }; + + const executeSwap = () => { + setIsConfirmModalOpen(false); + // Simulate API call + setTimeout(() => { + addToast( + `Swapped ${fromAmount} ${fromToken.symbol} for ${toAmount} ${toToken.symbol}`, + "success" + ); + setFromAmount(""); + }, 500); + }; + + return ( +
+
+
+
+ + +
+ +
+ {settingsOpen && ( + + )} +
+ openTokenModal("from")} + balance={fromToken.balance} + error={Number(fromAmount) > fromToken.balance ? "Insufficient balance" : undefined} + /> +
+ +
+ openTokenModal("to")} + readOnly + loading={loading} + /> +
+ + +
+ setIsTokenModalOpen(false)} + onSelect={handleTokenSelect} + tokens={MOCK_TOKENS} + /> + setIsConfirmModalOpen(false)} + fromToken={fromToken} + toToken={toToken} + fromAmount={fromAmount} + toAmount={toAmount} + exchangeRate={exchangeRate} + onConfirm={executeSwap} + /> +
+ ); +}; diff --git a/src/problem2/src/components/swap/TokenInput.tsx b/src/problem2/src/components/swap/TokenInput.tsx new file mode 100644 index 000000000..741767dca --- /dev/null +++ b/src/problem2/src/components/swap/TokenInput.tsx @@ -0,0 +1,88 @@ +import React from "react"; +import { ChevronDown } from "lucide-react"; +import { Token } from "@/types"; +import { cn } from "@/utils/cn"; +import { Skeleton } from "@/components/ui"; + +interface TokenInputProps { + label: string; + amount: string; + token: Token; + onAmountChange?: (val: string) => void; + onTokenClick: () => void; + readOnly?: boolean; + balance?: number; + loading?: boolean; + error?: string; +} + +export const TokenInput: React.FC = ({ + label, + amount, + token, + onAmountChange, + onTokenClick, + readOnly, + balance, + loading, + error, +}) => { + const handleChange = (e: React.ChangeEvent) => { + const val = e.target.value; + // Allow only numbers and one decimal point + if (val === "" || /^\d*\.?\d*$/.test(val)) { + onAmountChange && onAmountChange(val); + } + }; + + return ( +
+
+ + {balance !== undefined && ( +
+ Balance: {balance} +
+ )} +
+ +
+ {loading ? ( + + ) : ( + + )} + + +
+ {error &&
{error}
} +
+ ); +}; diff --git a/src/problem2/src/components/swap/TokenModal.tsx b/src/problem2/src/components/swap/TokenModal.tsx new file mode 100644 index 000000000..774dd436d --- /dev/null +++ b/src/problem2/src/components/swap/TokenModal.tsx @@ -0,0 +1,89 @@ +import React, { useState } from "react"; +import { Modal, Input } from "@/components/ui"; +import { Token } from "@/types"; + +interface TokenModalProps { + isOpen: boolean; + onClose: () => void; + onSelect: (token: Token) => void; + tokens: Token[]; +} + +export const TokenModal: React.FC = ({ isOpen, onClose, onSelect, tokens }) => { + const [search, setSearch] = useState(""); + + const filteredTokens = tokens.filter( + (t) => + t.symbol.toLowerCase().includes(search.toLowerCase()) || + t.name.toLowerCase().includes(search.toLowerCase()) + ); + + return ( + +
+ setSearch(e.target.value)} + className="bg-background" + /> +
+ +
+

Hot Tokens

+
+ {tokens.slice(0, 4).map((token) => ( + + ))} +
+
+ +
+ {filteredTokens.map((token) => ( + + ))} + {filteredTokens.length === 0 && ( +
No tokens found
+ )} +
+
+ ); +}; diff --git a/src/problem2/src/components/swap/index.ts b/src/problem2/src/components/swap/index.ts new file mode 100644 index 000000000..e56fed62b --- /dev/null +++ b/src/problem2/src/components/swap/index.ts @@ -0,0 +1,6 @@ +export * from "./ConfirmSwapModal"; +export * from "./OrderDetails"; +export * from "./Slippage"; +export * from "./SwapCard"; +export * from "./TokenInput"; +export * from "./TokenModal"; diff --git a/src/problem2/src/components/ui/Button.tsx b/src/problem2/src/components/ui/Button.tsx new file mode 100644 index 000000000..8dbd49eae --- /dev/null +++ b/src/problem2/src/components/ui/Button.tsx @@ -0,0 +1,56 @@ +import React from "react"; +import { cn } from "@/utils"; + +interface ButtonProps extends React.ButtonHTMLAttributes { + variant?: "primary" | "secondary" | "outline" | "ghost" | "danger"; + size?: "sm" | "md" | "lg" | "full"; + isLoading?: boolean; +} + +export const Button = React.forwardRef( + ({ className, variant = "primary", size = "md", isLoading, children, ...props }, ref) => { + return ( + + ); + } +); diff --git a/src/problem2/src/components/ui/Input.tsx b/src/problem2/src/components/ui/Input.tsx new file mode 100644 index 000000000..4f4830950 --- /dev/null +++ b/src/problem2/src/components/ui/Input.tsx @@ -0,0 +1,27 @@ +import React from "react"; +import { cn } from "@/utils"; + +export interface InputProps extends React.InputHTMLAttributes { + error?: string; + label?: string; +} + +export const Input = React.forwardRef( + ({ className, error, label, ...props }, ref) => { + return ( +
+ {label && } + + {error && {error}} +
+ ); + } +); diff --git a/src/problem2/src/components/ui/Modal.tsx b/src/problem2/src/components/ui/Modal.tsx new file mode 100644 index 000000000..a587ffb87 --- /dev/null +++ b/src/problem2/src/components/ui/Modal.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { Modal as AntModal } from "antd"; +import { cn } from "@/utils"; + +interface ModalProps { + isOpen: boolean; + onClose: () => void; + title: string; + children: React.ReactNode; + className?: string; +} + +export const Modal: React.FC = ({ isOpen, onClose, title, children, className }) => { + return ( + + {children} + + ); +}; diff --git a/src/problem2/src/components/ui/Skeleton.tsx b/src/problem2/src/components/ui/Skeleton.tsx new file mode 100644 index 000000000..f80b74b20 --- /dev/null +++ b/src/problem2/src/components/ui/Skeleton.tsx @@ -0,0 +1,14 @@ +import React from "react"; +import { cn } from "@/utils"; + +export const Skeleton: React.FC> = ({ + className, + ...props +}) => { + return ( +
+ ); +}; diff --git a/src/problem2/src/components/ui/Toast.tsx b/src/problem2/src/components/ui/Toast.tsx new file mode 100644 index 000000000..0dc312369 --- /dev/null +++ b/src/problem2/src/components/ui/Toast.tsx @@ -0,0 +1,66 @@ +import React, { createContext, useContext, useState, useCallback } from "react"; +import { X, CheckCircle, AlertCircle } from "lucide-react"; +import { cn } from "@/utils"; + +type ToastType = "success" | "error" | "info"; + +interface Toast { + id: string; + message: string; + type: ToastType; +} + +interface ToastContextType { + addToast: (message: string, type: ToastType) => void; + removeToast: (id: string) => void; +} + +const ToastContext = createContext(undefined); + +export const ToastProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + const [toasts, setToasts] = useState([]); + + const addToast = useCallback((message: string, type: ToastType) => { + const id = Math.random().toString(36).substring(2, 9); + setToasts((prev) => [...prev, { id, message, type }]); + setTimeout(() => removeToast(id), 5000); + }, []); + + const removeToast = useCallback((id: string) => { + setToasts((prev) => prev.filter((t) => t.id !== id)); + }, []); + + return ( + + {children} +
+ {toasts.map((toast) => ( +
+ {toast.type === "success" && } + {toast.type === "error" && } +

{toast.message}

+ +
+ ))} +
+
+ ); +}; + +export const useToast = () => { + const context = useContext(ToastContext); + if (!context) throw new Error("useToast must be used within a ToastProvider"); + return context; +}; diff --git a/src/problem2/src/components/ui/index.ts b/src/problem2/src/components/ui/index.ts new file mode 100644 index 000000000..89f816e77 --- /dev/null +++ b/src/problem2/src/components/ui/index.ts @@ -0,0 +1,5 @@ +export * from "./Button"; +export * from "./Input"; +export * from "./Modal"; +export * from "./Skeleton"; +export * from "./Toast"; diff --git a/src/problem2/src/constants/index.ts b/src/problem2/src/constants/index.ts new file mode 100644 index 000000000..d1ea1d770 --- /dev/null +++ b/src/problem2/src/constants/index.ts @@ -0,0 +1 @@ +export * from "./tokens"; diff --git a/src/problem2/src/constants/tokens.ts b/src/problem2/src/constants/tokens.ts new file mode 100644 index 000000000..256720f2c --- /dev/null +++ b/src/problem2/src/constants/tokens.ts @@ -0,0 +1,67 @@ +import { Token } from '../types'; +import pricesData from '../prices.json'; + +type PriceEntry = { currency: string; date: string; price: number }; + +const latestPrice = (symbol: string) => { + const items = (pricesData as PriceEntry[]).filter( + (p) => p.currency.toUpperCase() === symbol.toUpperCase() + ); + if (items.length === 0) return 0; + return items.reduce((a, b) => + new Date(b.date).getTime() > new Date(a.date).getTime() ? b : a + ).price; +}; + +// Eagerly import all token icons (svg/png) and build a symbol -> url map +const iconModules = import.meta.glob<{ default: string }>( + '../tokens/*.{svg,png}', + { eager: true } +); + +const iconMap: Record = {}; +for (const path in iconModules) { + const file = path.split('/').pop()!; + const base = file.replace(/\.(svg|png)$/i, ''); + iconMap[base.toUpperCase()] = (iconModules[path] as any).default; +} + +const FRIENDLY_NAMES: Record = { + ETH: 'Ethereum', + WBTC: 'Wrapped Bitcoin', + USDC: 'USD Coin', + BUSD: 'Binance USD', + ATOM: 'Cosmos', + OSMO: 'Osmosis', +}; + +const DEFAULT_BALANCES: Record = { + ETH: 1.5, + WBTC: 0.05, + USDC: 5000, + BUSD: 3000, + ATOM: 25, + OSMO: 100, +}; + +// Build full token list from prices.json currencies +const currencies = Array.from( + new Set((pricesData as PriceEntry[]).map((p) => p.currency)) +); + +export const MOCK_TOKENS: Token[] = currencies.map((symbol) => { + const upper = symbol.toUpperCase(); + const icon = + iconMap[upper] ?? + // Try some common alt naming fallbacks + (upper === 'USD' ? iconMap['USDC'] : undefined) ?? + iconMap['ETH']; // final fallback + + return { + symbol: upper, + name: FRIENDLY_NAMES[upper] ?? upper, + icon, + balance: DEFAULT_BALANCES[upper] ?? 0, + price: latestPrice(upper), + }; +}); diff --git a/src/problem2/src/hooks/useSwap.ts b/src/problem2/src/hooks/useSwap.ts new file mode 100644 index 000000000..cb584ae58 --- /dev/null +++ b/src/problem2/src/hooks/useSwap.ts @@ -0,0 +1,60 @@ +import { useState, useEffect, useCallback } from 'react'; +import { Token } from '../types'; +import { MOCK_TOKENS } from '../constants/tokens'; + +export const useSwap = () => { + const [fromToken, setFromToken] = useState(MOCK_TOKENS[0]); // Default BTC + const [toToken, setToToken] = useState(MOCK_TOKENS[2]); // Default USDT + const [fromAmount, setFromAmount] = useState(''); + const [toAmount, setToAmount] = useState(''); + const [loading, setLoading] = useState(false); + const [slippage, setSlippage] = useState(0.5); + + const getExchangeRate = useCallback(() => { + return fromToken.price / toToken.price; + }, [fromToken, toToken]); + + const exchangeRate = getExchangeRate(); + + useEffect(() => { + if (!fromAmount || isNaN(Number(fromAmount))) { + setToAmount(''); + setLoading(false); + return; + } + + setLoading(true); + // Simulate network delay + const timer = setTimeout(() => { + const val = Number(fromAmount) * exchangeRate; + // Format to reasonable decimals based on price + const decimals = toToken.price < 1 ? 2 : 6; + setToAmount(val.toFixed(decimals)); + setLoading(false); + }, 600); + + return () => clearTimeout(timer); + }, [fromAmount, exchangeRate, toToken.price]); + + const handleSwitch = () => { + setFromToken(toToken); + setToToken(fromToken); + setFromAmount(toAmount); // Carry over the amount? Usually yes, or clear it. + // If we carry over, the effect will run and recalculate the new "to" + }; + + return { + fromToken, + setFromToken, + toToken, + setToToken, + fromAmount, + setFromAmount, + toAmount, + exchangeRate, + loading, + slippage, + setSlippage, + handleSwitch + }; +}; diff --git a/src/problem2/src/index.css b/src/problem2/src/index.css new file mode 100644 index 000000000..6e9227406 --- /dev/null +++ b/src/problem2/src/index.css @@ -0,0 +1,32 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + body { + @apply bg-background text-text-primary; + } +} + +@layer utilities { + .custom-scrollbar { + scrollbar-width: thin; + scrollbar-color: #4b5563 transparent; + overscroll-behavior: contain; + } + .custom-scrollbar::-webkit-scrollbar { + width: 8px; + height: 0px; + } + .custom-scrollbar::-webkit-scrollbar-track { + background: transparent; + } + .custom-scrollbar::-webkit-scrollbar-thumb { + background-color: #4b5563; + border-radius: 9999px; + border: 2px solid transparent; + } + .custom-scrollbar:hover::-webkit-scrollbar-thumb { + background-color: #6b7280; + } +} diff --git a/src/problem2/src/main.tsx b/src/problem2/src/main.tsx new file mode 100644 index 000000000..d2cc420c1 --- /dev/null +++ b/src/problem2/src/main.tsx @@ -0,0 +1,11 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' +import 'antd/dist/reset.css' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/problem2/src/pages/swap/index.tsx b/src/problem2/src/pages/swap/index.tsx new file mode 100644 index 000000000..c6e4c51ad --- /dev/null +++ b/src/problem2/src/pages/swap/index.tsx @@ -0,0 +1,14 @@ +import React from "react"; +import { SwapCard } from "@/components/swap"; + +export const SwapPage: React.FC = () => { + return ( +
+
+

Swap Tokens

+

Trade tokens in an instant

+
+ +
+ ); +}; diff --git a/src/problem2/src/prices.json b/src/problem2/src/prices.json new file mode 100644 index 000000000..4bdf8bd5f --- /dev/null +++ b/src/problem2/src/prices.json @@ -0,0 +1,158 @@ +[ + { + "currency": "BLUR", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.20811525423728813 + }, + { + "currency": "bNEO", + "date": "2023-08-29T07:10:50.000Z", + "price": 7.1282679 + }, + { + "currency": "BUSD", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.999183113 + }, + { + "currency": "BUSD", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.9998782611186441 + }, + { "currency": "USD", "date": "2023-08-29T07:10:30.000Z", "price": 1 }, + { + "currency": "ETH", + "date": "2023-08-29T07:10:52.000Z", + "price": 1645.9337373737374 + }, + { + "currency": "GMX", + "date": "2023-08-29T07:10:40.000Z", + "price": 36.345114372881355 + }, + { + "currency": "STEVMOS", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.07276706779661017 + }, + { + "currency": "LUNA", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.40955638983050846 + }, + { + "currency": "RATOM", + "date": "2023-08-29T07:10:40.000Z", + "price": 10.250918915254237 + }, + { + "currency": "STRD", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.7386553389830508 + }, + { + "currency": "EVMOS", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.06246181355932203 + }, + { + "currency": "IBCX", + "date": "2023-08-29T07:10:40.000Z", + "price": 41.26811355932203 + }, + { + "currency": "IRIS", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.0177095593220339 + }, + { + "currency": "ampLUNA", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.49548589830508477 + }, + { "currency": "KUJI", "date": "2023-08-29T07:10:45.000Z", "price": 0.675 }, + { + "currency": "STOSMO", + "date": "2023-08-29T07:10:45.000Z", + "price": 0.431318 + }, + { "currency": "USDC", "date": "2023-08-29T07:10:40.000Z", "price": 0.989832 }, + { + "currency": "axlUSDC", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.989832 + }, + { + "currency": "ATOM", + "date": "2023-08-29T07:10:50.000Z", + "price": 7.186657333333334 + }, + { + "currency": "STATOM", + "date": "2023-08-29T07:10:45.000Z", + "price": 8.512162050847458 + }, + { + "currency": "OSMO", + "date": "2023-08-29T07:10:50.000Z", + "price": 0.3772974333333333 + }, + { + "currency": "rSWTH", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.00408771 + }, + { + "currency": "STLUNA", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.44232210169491526 + }, + { + "currency": "LSI", + "date": "2023-08-29T07:10:50.000Z", + "price": 67.69661525423729 + }, + { + "currency": "OKB", + "date": "2023-08-29T07:10:40.000Z", + "price": 42.97562059322034 + }, + { + "currency": "OKT", + "date": "2023-08-29T07:10:40.000Z", + "price": 13.561577966101694 + }, + { + "currency": "SWTH", + "date": "2023-08-29T07:10:45.000Z", + "price": 0.004039850455012084 + }, + { "currency": "USC", "date": "2023-08-29T07:10:40.000Z", "price": 0.994 }, + { "currency": "USDC", "date": "2023-08-29T07:10:30.000Z", "price": 1 }, + { "currency": "USDC", "date": "2023-08-29T07:10:30.000Z", "price": 1 }, + { + "currency": "USDC", + "date": "2023-08-29T07:10:40.000Z", + "price": 0.9998782611186441 + }, + { + "currency": "WBTC", + "date": "2023-08-29T07:10:52.000Z", + "price": 26002.82202020202 + }, + { + "currency": "wstETH", + "date": "2023-08-29T07:10:40.000Z", + "price": 1872.2579742372882 + }, + { + "currency": "YieldUSD", + "date": "2023-08-29T07:10:40.000Z", + "price": 1.0290847966101695 + }, + { + "currency": "ZIL", + "date": "2023-08-29T07:10:50.000Z", + "price": 0.01651813559322034 + } +] diff --git a/src/problem2/src/tokens/1INCH.svg b/src/problem2/src/tokens/1INCH.svg new file mode 100644 index 000000000..5970f7bd5 --- /dev/null +++ b/src/problem2/src/tokens/1INCH.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/AAVE.svg b/src/problem2/src/tokens/AAVE.svg new file mode 100644 index 000000000..10e65a321 --- /dev/null +++ b/src/problem2/src/tokens/AAVE.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/ACT.svg b/src/problem2/src/tokens/ACT.svg new file mode 100644 index 000000000..2415fef55 --- /dev/null +++ b/src/problem2/src/tokens/ACT.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ADA.svg b/src/problem2/src/tokens/ADA.svg new file mode 100644 index 000000000..c57bee959 --- /dev/null +++ b/src/problem2/src/tokens/ADA.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/AEVO.svg b/src/problem2/src/tokens/AEVO.svg new file mode 100644 index 000000000..26c36a62d --- /dev/null +++ b/src/problem2/src/tokens/AEVO.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/AGI.svg b/src/problem2/src/tokens/AGI.svg new file mode 100644 index 000000000..2617764b4 --- /dev/null +++ b/src/problem2/src/tokens/AGI.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/AI16Z.svg b/src/problem2/src/tokens/AI16Z.svg new file mode 100644 index 000000000..d6b38455f --- /dev/null +++ b/src/problem2/src/tokens/AI16Z.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/AIXBT.svg b/src/problem2/src/tokens/AIXBT.svg new file mode 100644 index 000000000..2fd4c736d --- /dev/null +++ b/src/problem2/src/tokens/AIXBT.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/AKRO.svg b/src/problem2/src/tokens/AKRO.svg new file mode 100644 index 000000000..33501e5c2 --- /dev/null +++ b/src/problem2/src/tokens/AKRO.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/AKT.svg b/src/problem2/src/tokens/AKT.svg new file mode 100644 index 000000000..a0733cd5e --- /dev/null +++ b/src/problem2/src/tokens/AKT.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/ALGO.svg b/src/problem2/src/tokens/ALGO.svg new file mode 100644 index 000000000..0c79ab88f --- /dev/null +++ b/src/problem2/src/tokens/ALGO.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/ALPHA.svg b/src/problem2/src/tokens/ALPHA.svg new file mode 100644 index 000000000..9d916fb94 --- /dev/null +++ b/src/problem2/src/tokens/ALPHA.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ALT.svg b/src/problem2/src/tokens/ALT.svg new file mode 100644 index 000000000..fb551dfa7 --- /dev/null +++ b/src/problem2/src/tokens/ALT.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/AMP.svg b/src/problem2/src/tokens/AMP.svg new file mode 100644 index 000000000..71bec9f9b --- /dev/null +++ b/src/problem2/src/tokens/AMP.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/ANC.svg b/src/problem2/src/tokens/ANC.svg new file mode 100644 index 000000000..bd414783c --- /dev/null +++ b/src/problem2/src/tokens/ANC.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/ANDR.svg b/src/problem2/src/tokens/ANDR.svg new file mode 100644 index 000000000..fc7e23b4e --- /dev/null +++ b/src/problem2/src/tokens/ANDR.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ANIME.svg b/src/problem2/src/tokens/ANIME.svg new file mode 100644 index 000000000..975db35cd --- /dev/null +++ b/src/problem2/src/tokens/ANIME.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ANKR.svg b/src/problem2/src/tokens/ANKR.svg new file mode 100644 index 000000000..b8599f016 --- /dev/null +++ b/src/problem2/src/tokens/ANKR.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/ANT.svg b/src/problem2/src/tokens/ANT.svg new file mode 100644 index 000000000..f805ff79f --- /dev/null +++ b/src/problem2/src/tokens/ANT.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ANY.svg b/src/problem2/src/tokens/ANY.svg new file mode 100644 index 000000000..c50439117 --- /dev/null +++ b/src/problem2/src/tokens/ANY.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/APE.svg b/src/problem2/src/tokens/APE.svg new file mode 100644 index 000000000..26ff9cfd4 --- /dev/null +++ b/src/problem2/src/tokens/APE.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/APOLLO.svg b/src/problem2/src/tokens/APOLLO.svg new file mode 100644 index 000000000..852aa5cea --- /dev/null +++ b/src/problem2/src/tokens/APOLLO.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/APT.svg b/src/problem2/src/tokens/APT.svg new file mode 100644 index 000000000..df0a16904 --- /dev/null +++ b/src/problem2/src/tokens/APT.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/AR.svg b/src/problem2/src/tokens/AR.svg new file mode 100644 index 000000000..5efc91fdb --- /dev/null +++ b/src/problem2/src/tokens/AR.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/ARB.svg b/src/problem2/src/tokens/ARB.svg new file mode 100644 index 000000000..2666c28ab --- /dev/null +++ b/src/problem2/src/tokens/ARB.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ARCH.svg b/src/problem2/src/tokens/ARCH.svg new file mode 100644 index 000000000..b6deb843a --- /dev/null +++ b/src/problem2/src/tokens/ARCH.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ASA.svg b/src/problem2/src/tokens/ASA.svg new file mode 100644 index 000000000..7023a0624 --- /dev/null +++ b/src/problem2/src/tokens/ASA.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/ASTRO.svg b/src/problem2/src/tokens/ASTRO.svg new file mode 100644 index 000000000..23047ab94 --- /dev/null +++ b/src/problem2/src/tokens/ASTRO.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ATOM-dATOM.svg b/src/problem2/src/tokens/ATOM-dATOM.svg new file mode 100644 index 000000000..07e4a7d4c --- /dev/null +++ b/src/problem2/src/tokens/ATOM-dATOM.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ATOM.svg b/src/problem2/src/tokens/ATOM.svg new file mode 100644 index 000000000..f3f9d1042 --- /dev/null +++ b/src/problem2/src/tokens/ATOM.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/problem2/src/tokens/AUDIO.svg b/src/problem2/src/tokens/AUDIO.svg new file mode 100644 index 000000000..527d7ae79 --- /dev/null +++ b/src/problem2/src/tokens/AUDIO.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/AUT.svg b/src/problem2/src/tokens/AUT.svg new file mode 100644 index 000000000..4f442bcfe --- /dev/null +++ b/src/problem2/src/tokens/AUT.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/AVA.svg b/src/problem2/src/tokens/AVA.svg new file mode 100644 index 000000000..b88859ee5 --- /dev/null +++ b/src/problem2/src/tokens/AVA.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/AVAIL.svg b/src/problem2/src/tokens/AVAIL.svg new file mode 100644 index 000000000..6b011a7f6 --- /dev/null +++ b/src/problem2/src/tokens/AVAIL.svg @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/AVAX.svg b/src/problem2/src/tokens/AVAX.svg new file mode 100644 index 000000000..e85981529 --- /dev/null +++ b/src/problem2/src/tokens/AVAX.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/AXL.svg b/src/problem2/src/tokens/AXL.svg new file mode 100644 index 000000000..a0d81a72f --- /dev/null +++ b/src/problem2/src/tokens/AXL.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/AXS.svg b/src/problem2/src/tokens/AXS.svg new file mode 100644 index 000000000..ab64a1a09 --- /dev/null +++ b/src/problem2/src/tokens/AXS.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/AXT.svg b/src/problem2/src/tokens/AXT.svg new file mode 100644 index 000000000..a0be2a7e3 --- /dev/null +++ b/src/problem2/src/tokens/AXT.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BAKE.svg b/src/problem2/src/tokens/BAKE.svg new file mode 100644 index 000000000..48e18cc4c --- /dev/null +++ b/src/problem2/src/tokens/BAKE.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BAL.svg b/src/problem2/src/tokens/BAL.svg new file mode 100644 index 000000000..274d48692 --- /dev/null +++ b/src/problem2/src/tokens/BAL.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/BAND.svg b/src/problem2/src/tokens/BAND.svg new file mode 100644 index 000000000..fe0b05317 --- /dev/null +++ b/src/problem2/src/tokens/BAND.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BAT.svg b/src/problem2/src/tokens/BAT.svg new file mode 100644 index 000000000..6bea15edb --- /dev/null +++ b/src/problem2/src/tokens/BAT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BCD.svg b/src/problem2/src/tokens/BCD.svg new file mode 100644 index 000000000..2eae4d86a --- /dev/null +++ b/src/problem2/src/tokens/BCD.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BCH.svg b/src/problem2/src/tokens/BCH.svg new file mode 100644 index 000000000..c1b218586 --- /dev/null +++ b/src/problem2/src/tokens/BCH.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BCHA.svg b/src/problem2/src/tokens/BCHA.svg new file mode 100644 index 000000000..d1c50093b --- /dev/null +++ b/src/problem2/src/tokens/BCHA.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/BCN.svg b/src/problem2/src/tokens/BCN.svg new file mode 100644 index 000000000..446afbc22 --- /dev/null +++ b/src/problem2/src/tokens/BCN.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BCNA.svg b/src/problem2/src/tokens/BCNA.svg new file mode 100644 index 000000000..81cb2950d --- /dev/null +++ b/src/problem2/src/tokens/BCNA.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/BELT.svg b/src/problem2/src/tokens/BELT.svg new file mode 100644 index 000000000..0711b1485 --- /dev/null +++ b/src/problem2/src/tokens/BELT.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/problem2/src/tokens/BERA.svg b/src/problem2/src/tokens/BERA.svg new file mode 100644 index 000000000..e77de0c56 --- /dev/null +++ b/src/problem2/src/tokens/BERA.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BETH.svg b/src/problem2/src/tokens/BETH.svg new file mode 100644 index 000000000..46a240195 --- /dev/null +++ b/src/problem2/src/tokens/BETH.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BHC.svg b/src/problem2/src/tokens/BHC.svg new file mode 100644 index 000000000..c1b218586 --- /dev/null +++ b/src/problem2/src/tokens/BHC.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BIT.svg b/src/problem2/src/tokens/BIT.svg new file mode 100644 index 000000000..123a839eb --- /dev/null +++ b/src/problem2/src/tokens/BIT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BLAST.svg b/src/problem2/src/tokens/BLAST.svg new file mode 100644 index 000000000..d931df3f8 --- /dev/null +++ b/src/problem2/src/tokens/BLAST.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BLD.svg b/src/problem2/src/tokens/BLD.svg new file mode 100644 index 000000000..1674899d4 --- /dev/null +++ b/src/problem2/src/tokens/BLD.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BLOX.svg b/src/problem2/src/tokens/BLOX.svg new file mode 100644 index 000000000..7a3045c57 --- /dev/null +++ b/src/problem2/src/tokens/BLOX.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BLUR.svg b/src/problem2/src/tokens/BLUR.svg new file mode 100644 index 000000000..bf1e28098 --- /dev/null +++ b/src/problem2/src/tokens/BLUR.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BNB.svg b/src/problem2/src/tokens/BNB.svg new file mode 100644 index 000000000..a7c669976 --- /dev/null +++ b/src/problem2/src/tokens/BNB.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BNT.svg b/src/problem2/src/tokens/BNT.svg new file mode 100644 index 000000000..4c29bec3c --- /dev/null +++ b/src/problem2/src/tokens/BNT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BOLT.svg b/src/problem2/src/tokens/BOLT.svg new file mode 100644 index 000000000..a74a21608 --- /dev/null +++ b/src/problem2/src/tokens/BOLT.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BONK.svg b/src/problem2/src/tokens/BONK.svg new file mode 100644 index 000000000..5df777e89 --- /dev/null +++ b/src/problem2/src/tokens/BONK.svg @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BOOT.svg b/src/problem2/src/tokens/BOOT.svg new file mode 100644 index 000000000..2469b80cf --- /dev/null +++ b/src/problem2/src/tokens/BOOT.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/BRAINS.svg b/src/problem2/src/tokens/BRAINS.svg new file mode 100644 index 000000000..5c6a1d418 --- /dev/null +++ b/src/problem2/src/tokens/BRAINS.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BRETT.svg b/src/problem2/src/tokens/BRETT.svg new file mode 100644 index 000000000..a799d6477 --- /dev/null +++ b/src/problem2/src/tokens/BRETT.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BRKL.svg b/src/problem2/src/tokens/BRKL.svg new file mode 100644 index 000000000..5963d1824 --- /dev/null +++ b/src/problem2/src/tokens/BRKL.svg @@ -0,0 +1,276 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/BTC.svg b/src/problem2/src/tokens/BTC.svg new file mode 100644 index 000000000..cd3b1e78e --- /dev/null +++ b/src/problem2/src/tokens/BTC.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/BTCST.svg b/src/problem2/src/tokens/BTCST.svg new file mode 100644 index 000000000..63d5b3c44 --- /dev/null +++ b/src/problem2/src/tokens/BTCST.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BTG.svg b/src/problem2/src/tokens/BTG.svg new file mode 100644 index 000000000..41629e7d6 --- /dev/null +++ b/src/problem2/src/tokens/BTG.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BTM.svg b/src/problem2/src/tokens/BTM.svg new file mode 100644 index 000000000..16fdbdfda --- /dev/null +++ b/src/problem2/src/tokens/BTM.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/BTMX.svg b/src/problem2/src/tokens/BTMX.svg new file mode 100644 index 000000000..5e4a26a71 --- /dev/null +++ b/src/problem2/src/tokens/BTMX.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/BTSG.svg b/src/problem2/src/tokens/BTSG.svg new file mode 100644 index 000000000..9b82cf6a0 --- /dev/null +++ b/src/problem2/src/tokens/BTSG.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BTT.svg b/src/problem2/src/tokens/BTT.svg new file mode 100644 index 000000000..736450a2d --- /dev/null +++ b/src/problem2/src/tokens/BTT.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/BUNNY.svg b/src/problem2/src/tokens/BUNNY.svg new file mode 100644 index 000000000..4bed16291 --- /dev/null +++ b/src/problem2/src/tokens/BUNNY.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/BUSD.svg b/src/problem2/src/tokens/BUSD.svg new file mode 100644 index 000000000..b992764bd --- /dev/null +++ b/src/problem2/src/tokens/BUSD.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/BUSDT.svg b/src/problem2/src/tokens/BUSDT.svg new file mode 100644 index 000000000..08bbf0587 --- /dev/null +++ b/src/problem2/src/tokens/BUSDT.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/C98.svg b/src/problem2/src/tokens/C98.svg new file mode 100644 index 000000000..3a0ff2bb7 --- /dev/null +++ b/src/problem2/src/tokens/C98.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/CAKE.svg b/src/problem2/src/tokens/CAKE.svg new file mode 100644 index 000000000..ce45fbe25 --- /dev/null +++ b/src/problem2/src/tokens/CAKE.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/CANTO.svg b/src/problem2/src/tokens/CANTO.svg new file mode 100644 index 000000000..d2758becf --- /dev/null +++ b/src/problem2/src/tokens/CANTO.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CARB.svg b/src/problem2/src/tokens/CARB.svg new file mode 100644 index 000000000..02e14d0bf --- /dev/null +++ b/src/problem2/src/tokens/CARB.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CAT.svg b/src/problem2/src/tokens/CAT.svg new file mode 100644 index 000000000..8f81af95b --- /dev/null +++ b/src/problem2/src/tokens/CAT.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CEL.svg b/src/problem2/src/tokens/CEL.svg new file mode 100644 index 000000000..02cfbd269 --- /dev/null +++ b/src/problem2/src/tokens/CEL.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CELO.svg b/src/problem2/src/tokens/CELO.svg new file mode 100644 index 000000000..5ff3c6c83 --- /dev/null +++ b/src/problem2/src/tokens/CELO.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/CETH.svg b/src/problem2/src/tokens/CETH.svg new file mode 100644 index 000000000..448a94a7a --- /dev/null +++ b/src/problem2/src/tokens/CETH.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CFX.svg b/src/problem2/src/tokens/CFX.svg new file mode 100644 index 000000000..07e8c434d --- /dev/null +++ b/src/problem2/src/tokens/CFX.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/CGAS.svg b/src/problem2/src/tokens/CGAS.svg new file mode 100644 index 000000000..3c31d75c0 --- /dev/null +++ b/src/problem2/src/tokens/CGAS.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/CHEQ.svg b/src/problem2/src/tokens/CHEQ.svg new file mode 100644 index 000000000..ed1621a48 --- /dev/null +++ b/src/problem2/src/tokens/CHEQ.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CHOG.svg b/src/problem2/src/tokens/CHOG.svg new file mode 100644 index 000000000..adee63f97 --- /dev/null +++ b/src/problem2/src/tokens/CHOG.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CHSB.svg b/src/problem2/src/tokens/CHSB.svg new file mode 100644 index 000000000..0118cfce5 --- /dev/null +++ b/src/problem2/src/tokens/CHSB.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/CHT.svg b/src/problem2/src/tokens/CHT.svg new file mode 100644 index 000000000..19d639271 --- /dev/null +++ b/src/problem2/src/tokens/CHT.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CHZ.svg b/src/problem2/src/tokens/CHZ.svg new file mode 100644 index 000000000..68897c58f --- /dev/null +++ b/src/problem2/src/tokens/CHZ.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/CKB.svg b/src/problem2/src/tokens/CKB.svg new file mode 100644 index 000000000..888ff3323 --- /dev/null +++ b/src/problem2/src/tokens/CKB.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/CMDX.svg b/src/problem2/src/tokens/CMDX.svg new file mode 100644 index 000000000..028d44e95 --- /dev/null +++ b/src/problem2/src/tokens/CMDX.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/CMST.svg b/src/problem2/src/tokens/CMST.svg new file mode 100644 index 000000000..cd6cb419e --- /dev/null +++ b/src/problem2/src/tokens/CMST.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CNT.svg b/src/problem2/src/tokens/CNT.svg new file mode 100644 index 000000000..c098860f7 --- /dev/null +++ b/src/problem2/src/tokens/CNT.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/COIN.svg b/src/problem2/src/tokens/COIN.svg new file mode 100644 index 000000000..098ee36d3 --- /dev/null +++ b/src/problem2/src/tokens/COIN.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/COMP.svg b/src/problem2/src/tokens/COMP.svg new file mode 100644 index 000000000..563bf3af2 --- /dev/null +++ b/src/problem2/src/tokens/COMP.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/COOK.svg b/src/problem2/src/tokens/COOK.svg new file mode 100644 index 000000000..615625b40 --- /dev/null +++ b/src/problem2/src/tokens/COOK.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CRBRUS.svg b/src/problem2/src/tokens/CRBRUS.svg new file mode 100644 index 000000000..d847b37b3 --- /dev/null +++ b/src/problem2/src/tokens/CRBRUS.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CRE.svg b/src/problem2/src/tokens/CRE.svg new file mode 100644 index 000000000..4008331be --- /dev/null +++ b/src/problem2/src/tokens/CRE.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CRO.svg b/src/problem2/src/tokens/CRO.svg new file mode 100644 index 000000000..75ddad7d5 --- /dev/null +++ b/src/problem2/src/tokens/CRO.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/CRV.svg b/src/problem2/src/tokens/CRV.svg new file mode 100644 index 000000000..f9fa597fa --- /dev/null +++ b/src/problem2/src/tokens/CRV.svg @@ -0,0 +1,790 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/CTK.svg b/src/problem2/src/tokens/CTK.svg new file mode 100644 index 000000000..96bfa4f61 --- /dev/null +++ b/src/problem2/src/tokens/CTK.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/CW.svg b/src/problem2/src/tokens/CW.svg new file mode 100644 index 000000000..e0d8eef0a --- /dev/null +++ b/src/problem2/src/tokens/CW.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DAG.svg b/src/problem2/src/tokens/DAG.svg new file mode 100644 index 000000000..a06db4c40 --- /dev/null +++ b/src/problem2/src/tokens/DAG.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/DAI.svg b/src/problem2/src/tokens/DAI.svg new file mode 100644 index 000000000..00fdd7ae1 --- /dev/null +++ b/src/problem2/src/tokens/DAI.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/DAK.svg b/src/problem2/src/tokens/DAK.svg new file mode 100644 index 000000000..bbfa1b264 --- /dev/null +++ b/src/problem2/src/tokens/DAK.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DARC.svg b/src/problem2/src/tokens/DARC.svg new file mode 100644 index 000000000..8e131ded9 --- /dev/null +++ b/src/problem2/src/tokens/DARC.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/problem2/src/tokens/DASH.svg b/src/problem2/src/tokens/DASH.svg new file mode 100644 index 000000000..17e5eb714 --- /dev/null +++ b/src/problem2/src/tokens/DASH.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/DBC.svg b/src/problem2/src/tokens/DBC.svg new file mode 100644 index 000000000..91e7b7237 --- /dev/null +++ b/src/problem2/src/tokens/DBC.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/DCR.svg b/src/problem2/src/tokens/DCR.svg new file mode 100644 index 000000000..d97040bcf --- /dev/null +++ b/src/problem2/src/tokens/DCR.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DEC.svg b/src/problem2/src/tokens/DEC.svg new file mode 100644 index 000000000..025f6329b --- /dev/null +++ b/src/problem2/src/tokens/DEC.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DEGEN.svg b/src/problem2/src/tokens/DEGEN.svg new file mode 100644 index 000000000..44233e8e9 --- /dev/null +++ b/src/problem2/src/tokens/DEGEN.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DENT.svg b/src/problem2/src/tokens/DENT.svg new file mode 100644 index 000000000..10035d5a1 --- /dev/null +++ b/src/problem2/src/tokens/DENT.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DGB.svg b/src/problem2/src/tokens/DGB.svg new file mode 100644 index 000000000..ecf85eb29 --- /dev/null +++ b/src/problem2/src/tokens/DGB.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/DIG.svg b/src/problem2/src/tokens/DIG.svg new file mode 100644 index 000000000..b75f6740d --- /dev/null +++ b/src/problem2/src/tokens/DIG.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DKT.svg b/src/problem2/src/tokens/DKT.svg new file mode 100644 index 000000000..8d1d5a560 --- /dev/null +++ b/src/problem2/src/tokens/DKT.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DODO.svg b/src/problem2/src/tokens/DODO.svg new file mode 100644 index 000000000..514dd23b5 --- /dev/null +++ b/src/problem2/src/tokens/DODO.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/DOGE.svg b/src/problem2/src/tokens/DOGE.svg new file mode 100644 index 000000000..f019ca4b5 --- /dev/null +++ b/src/problem2/src/tokens/DOGE.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DOT.svg b/src/problem2/src/tokens/DOT.svg new file mode 100644 index 000000000..db6de54b2 --- /dev/null +++ b/src/problem2/src/tokens/DOT.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/DPL.svg b/src/problem2/src/tokens/DPL.svg new file mode 100644 index 000000000..e511541f1 --- /dev/null +++ b/src/problem2/src/tokens/DPL.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DPX.svg b/src/problem2/src/tokens/DPX.svg new file mode 100644 index 000000000..d96e81297 --- /dev/null +++ b/src/problem2/src/tokens/DPX.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DRFT.svg b/src/problem2/src/tokens/DRFT.svg new file mode 100644 index 000000000..3f64fd962 --- /dev/null +++ b/src/problem2/src/tokens/DRFT.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DROP.svg b/src/problem2/src/tokens/DROP.svg new file mode 100644 index 000000000..dbb6c318b --- /dev/null +++ b/src/problem2/src/tokens/DROP.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DSM.svg b/src/problem2/src/tokens/DSM.svg new file mode 100644 index 000000000..b305f5f5e --- /dev/null +++ b/src/problem2/src/tokens/DSM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/DUVT.svg b/src/problem2/src/tokens/DUVT.svg new file mode 100644 index 000000000..4bced3bdb --- /dev/null +++ b/src/problem2/src/tokens/DUVT.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DVPN.svg b/src/problem2/src/tokens/DVPN.svg new file mode 100644 index 000000000..cb35dbc08 --- /dev/null +++ b/src/problem2/src/tokens/DVPN.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/DYDX.svg b/src/problem2/src/tokens/DYDX.svg new file mode 100644 index 000000000..7977307c0 --- /dev/null +++ b/src/problem2/src/tokens/DYDX.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/DYM.svg b/src/problem2/src/tokens/DYM.svg new file mode 100644 index 000000000..e696de4fd --- /dev/null +++ b/src/problem2/src/tokens/DYM.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/EEUR.svg b/src/problem2/src/tokens/EEUR.svg new file mode 100644 index 000000000..25f940a5b --- /dev/null +++ b/src/problem2/src/tokens/EEUR.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/EIGEN.svg b/src/problem2/src/tokens/EIGEN.svg new file mode 100644 index 000000000..350b748dd --- /dev/null +++ b/src/problem2/src/tokens/EIGEN.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/ELA.svg b/src/problem2/src/tokens/ELA.svg new file mode 100644 index 000000000..761216845 --- /dev/null +++ b/src/problem2/src/tokens/ELA.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/ELF.svg b/src/problem2/src/tokens/ELF.svg new file mode 100644 index 000000000..fd3bc6cfe --- /dev/null +++ b/src/problem2/src/tokens/ELF.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/ENA.svg b/src/problem2/src/tokens/ENA.svg new file mode 100644 index 000000000..2445033b0 --- /dev/null +++ b/src/problem2/src/tokens/ENA.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ENJ.svg b/src/problem2/src/tokens/ENJ.svg new file mode 100644 index 000000000..7b832779f --- /dev/null +++ b/src/problem2/src/tokens/ENJ.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ENS.svg b/src/problem2/src/tokens/ENS.svg new file mode 100644 index 000000000..94d385bc1 --- /dev/null +++ b/src/problem2/src/tokens/ENS.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/EOS.svg b/src/problem2/src/tokens/EOS.svg new file mode 100644 index 000000000..61de71db6 --- /dev/null +++ b/src/problem2/src/tokens/EOS.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/EPS.svg b/src/problem2/src/tokens/EPS.svg new file mode 100644 index 000000000..ef8bb614e --- /dev/null +++ b/src/problem2/src/tokens/EPS.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ETC.svg b/src/problem2/src/tokens/ETC.svg new file mode 100644 index 000000000..7b3e8b386 --- /dev/null +++ b/src/problem2/src/tokens/ETC.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/ETH.svg b/src/problem2/src/tokens/ETH.svg new file mode 100644 index 000000000..6a7cd5afc --- /dev/null +++ b/src/problem2/src/tokens/ETH.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/problem2/src/tokens/ETHBTC.svg b/src/problem2/src/tokens/ETHBTC.svg new file mode 100644 index 000000000..bd01fc187 --- /dev/null +++ b/src/problem2/src/tokens/ETHBTC.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/ETN.svg b/src/problem2/src/tokens/ETN.svg new file mode 100644 index 000000000..a13bc1424 --- /dev/null +++ b/src/problem2/src/tokens/ETN.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/EUROC.svg b/src/problem2/src/tokens/EUROC.svg new file mode 100644 index 000000000..81134495c --- /dev/null +++ b/src/problem2/src/tokens/EUROC.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/EUT.svg b/src/problem2/src/tokens/EUT.svg new file mode 100644 index 000000000..56c4d324a --- /dev/null +++ b/src/problem2/src/tokens/EUT.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/EVMOS.svg b/src/problem2/src/tokens/EVMOS.svg new file mode 100644 index 000000000..8d0b90acb --- /dev/null +++ b/src/problem2/src/tokens/EVMOS.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/EWT.svg b/src/problem2/src/tokens/EWT.svg new file mode 100644 index 000000000..db6e0ec63 --- /dev/null +++ b/src/problem2/src/tokens/EWT.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/FARTCOIN.svg b/src/problem2/src/tokens/FARTCOIN.svg new file mode 100644 index 000000000..9fa8534fd --- /dev/null +++ b/src/problem2/src/tokens/FARTCOIN.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/FBTC.svg b/src/problem2/src/tokens/FBTC.svg new file mode 100644 index 000000000..89b376bbf --- /dev/null +++ b/src/problem2/src/tokens/FBTC.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/FEES.svg b/src/problem2/src/tokens/FEES.svg new file mode 100644 index 000000000..f31a2e1f8 --- /dev/null +++ b/src/problem2/src/tokens/FEES.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/FET.svg b/src/problem2/src/tokens/FET.svg new file mode 100644 index 000000000..20b53be3d --- /dev/null +++ b/src/problem2/src/tokens/FET.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/FIL.svg b/src/problem2/src/tokens/FIL.svg new file mode 100644 index 000000000..a87544100 --- /dev/null +++ b/src/problem2/src/tokens/FIL.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/FIS.svg b/src/problem2/src/tokens/FIS.svg new file mode 100644 index 000000000..ae28f926c --- /dev/null +++ b/src/problem2/src/tokens/FIS.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/FLIX.svg b/src/problem2/src/tokens/FLIX.svg new file mode 100644 index 000000000..962e47fb2 --- /dev/null +++ b/src/problem2/src/tokens/FLIX.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/FLM.svg b/src/problem2/src/tokens/FLM.svg new file mode 100644 index 000000000..73ba61998 --- /dev/null +++ b/src/problem2/src/tokens/FLM.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/FLOW.svg b/src/problem2/src/tokens/FLOW.svg new file mode 100644 index 000000000..7cf7e32db --- /dev/null +++ b/src/problem2/src/tokens/FLOW.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/FLUID.svg b/src/problem2/src/tokens/FLUID.svg new file mode 100644 index 000000000..9202222f8 --- /dev/null +++ b/src/problem2/src/tokens/FLUID.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/FLUO.svg b/src/problem2/src/tokens/FLUO.svg new file mode 100644 index 000000000..d4e4c7f34 --- /dev/null +++ b/src/problem2/src/tokens/FLUO.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/FRANK.svg b/src/problem2/src/tokens/FRANK.svg new file mode 100644 index 000000000..6a49dcfec --- /dev/null +++ b/src/problem2/src/tokens/FRANK.svg @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/FSGLP.svg b/src/problem2/src/tokens/FSGLP.svg new file mode 100644 index 000000000..1392a246b --- /dev/null +++ b/src/problem2/src/tokens/FSGLP.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/FTM.svg b/src/problem2/src/tokens/FTM.svg new file mode 100644 index 000000000..0f46c6923 --- /dev/null +++ b/src/problem2/src/tokens/FTM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/FTT.svg b/src/problem2/src/tokens/FTT.svg new file mode 100644 index 000000000..fcd829ef4 --- /dev/null +++ b/src/problem2/src/tokens/FTT.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/FTTC.svg b/src/problem2/src/tokens/FTTC.svg new file mode 100644 index 000000000..b53103bc4 --- /dev/null +++ b/src/problem2/src/tokens/FTTC.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/FUN.svg b/src/problem2/src/tokens/FUN.svg new file mode 100644 index 000000000..59cdc4bf2 --- /dev/null +++ b/src/problem2/src/tokens/FUN.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/GALA.svg b/src/problem2/src/tokens/GALA.svg new file mode 100644 index 000000000..58a423f8b --- /dev/null +++ b/src/problem2/src/tokens/GALA.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/GAMBIT.svg b/src/problem2/src/tokens/GAMBIT.svg new file mode 100644 index 000000000..b2ef5aadb --- /dev/null +++ b/src/problem2/src/tokens/GAMBIT.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/GAS.svg b/src/problem2/src/tokens/GAS.svg new file mode 100644 index 000000000..3c31d75c0 --- /dev/null +++ b/src/problem2/src/tokens/GAS.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/GBT.svg b/src/problem2/src/tokens/GBT.svg new file mode 100644 index 000000000..7dcf617c3 --- /dev/null +++ b/src/problem2/src/tokens/GBT.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/GLP.svg b/src/problem2/src/tokens/GLP.svg new file mode 100644 index 000000000..c5eefed0a --- /dev/null +++ b/src/problem2/src/tokens/GLP.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/GM.svg b/src/problem2/src/tokens/GM.svg new file mode 100644 index 000000000..7739426dc --- /dev/null +++ b/src/problem2/src/tokens/GM.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/GMX.svg b/src/problem2/src/tokens/GMX.svg new file mode 100644 index 000000000..80a8c19e7 --- /dev/null +++ b/src/problem2/src/tokens/GMX.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/GNO.svg b/src/problem2/src/tokens/GNO.svg new file mode 100644 index 000000000..b53b4961b --- /dev/null +++ b/src/problem2/src/tokens/GNO.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/GNS.svg b/src/problem2/src/tokens/GNS.svg new file mode 100644 index 000000000..f47eaabf7 --- /dev/null +++ b/src/problem2/src/tokens/GNS.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/GOAT.svg b/src/problem2/src/tokens/GOAT.svg new file mode 100644 index 000000000..f52285aaa --- /dev/null +++ b/src/problem2/src/tokens/GOAT.svg @@ -0,0 +1,2174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/GRASS.svg b/src/problem2/src/tokens/GRASS.svg new file mode 100644 index 000000000..caa370fff --- /dev/null +++ b/src/problem2/src/tokens/GRASS.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/GRAV.svg b/src/problem2/src/tokens/GRAV.svg new file mode 100644 index 000000000..658e15507 --- /dev/null +++ b/src/problem2/src/tokens/GRAV.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/GRT.svg b/src/problem2/src/tokens/GRT.svg new file mode 100644 index 000000000..2d283004d --- /dev/null +++ b/src/problem2/src/tokens/GRT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/GT.svg b/src/problem2/src/tokens/GT.svg new file mode 100644 index 000000000..6cb00ff5c --- /dev/null +++ b/src/problem2/src/tokens/GT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/HBAR.svg b/src/problem2/src/tokens/HBAR.svg new file mode 100644 index 000000000..62d883190 --- /dev/null +++ b/src/problem2/src/tokens/HBAR.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/HDN.png b/src/problem2/src/tokens/HDN.png new file mode 100644 index 000000000..fd7e61292 Binary files /dev/null and b/src/problem2/src/tokens/HDN.png differ diff --git a/src/problem2/src/tokens/HDN.svg b/src/problem2/src/tokens/HDN.svg new file mode 100644 index 000000000..f5fb0b1a7 --- /dev/null +++ b/src/problem2/src/tokens/HDN.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/problem2/src/tokens/HELMET.svg b/src/problem2/src/tokens/HELMET.svg new file mode 100644 index 000000000..1a5085987 --- /dev/null +++ b/src/problem2/src/tokens/HELMET.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/problem2/src/tokens/HKT.svg b/src/problem2/src/tokens/HKT.svg new file mode 100644 index 000000000..d2f5c930a --- /dev/null +++ b/src/problem2/src/tokens/HKT.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/HNT.svg b/src/problem2/src/tokens/HNT.svg new file mode 100644 index 000000000..402e23689 --- /dev/null +++ b/src/problem2/src/tokens/HNT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/HOPE.svg b/src/problem2/src/tokens/HOPE.svg new file mode 100644 index 000000000..b7541ae4a --- /dev/null +++ b/src/problem2/src/tokens/HOPE.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/HOT.svg b/src/problem2/src/tokens/HOT.svg new file mode 100644 index 000000000..eab9101a1 --- /dev/null +++ b/src/problem2/src/tokens/HOT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/HT.svg b/src/problem2/src/tokens/HT.svg new file mode 100644 index 000000000..72cdfdd09 --- /dev/null +++ b/src/problem2/src/tokens/HT.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/HUAHUA.svg b/src/problem2/src/tokens/HUAHUA.svg new file mode 100644 index 000000000..e94cd98d8 --- /dev/null +++ b/src/problem2/src/tokens/HUAHUA.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/HUNY.svg b/src/problem2/src/tokens/HUNY.svg new file mode 100644 index 000000000..b06f2f545 --- /dev/null +++ b/src/problem2/src/tokens/HUNY.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/problem2/src/tokens/HUSD.svg b/src/problem2/src/tokens/HUSD.svg new file mode 100644 index 000000000..30b26c037 --- /dev/null +++ b/src/problem2/src/tokens/HUSD.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/HYPE.svg b/src/problem2/src/tokens/HYPE.svg new file mode 100644 index 000000000..24eb8536f --- /dev/null +++ b/src/problem2/src/tokens/HYPE.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/IBCX.svg b/src/problem2/src/tokens/IBCX.svg new file mode 100644 index 000000000..061c6ccef --- /dev/null +++ b/src/problem2/src/tokens/IBCX.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ICP.svg b/src/problem2/src/tokens/ICP.svg new file mode 100644 index 000000000..c7a99ba9b --- /dev/null +++ b/src/problem2/src/tokens/ICP.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ICX.svg b/src/problem2/src/tokens/ICX.svg new file mode 100644 index 000000000..53efc54ef --- /dev/null +++ b/src/problem2/src/tokens/ICX.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/IDT.svg b/src/problem2/src/tokens/IDT.svg new file mode 100644 index 000000000..91288c58b --- /dev/null +++ b/src/problem2/src/tokens/IDT.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/INIT.svg b/src/problem2/src/tokens/INIT.svg new file mode 100644 index 000000000..47395f643 --- /dev/null +++ b/src/problem2/src/tokens/INIT.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/INJ.svg b/src/problem2/src/tokens/INJ.svg new file mode 100644 index 000000000..b6d304e49 --- /dev/null +++ b/src/problem2/src/tokens/INJ.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/INT.svg b/src/problem2/src/tokens/INT.svg new file mode 100644 index 000000000..9ab0d29f3 --- /dev/null +++ b/src/problem2/src/tokens/INT.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ION.svg b/src/problem2/src/tokens/ION.svg new file mode 100644 index 000000000..adad5f300 --- /dev/null +++ b/src/problem2/src/tokens/ION.svg @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/IOST.svg b/src/problem2/src/tokens/IOST.svg new file mode 100644 index 000000000..8f791796a --- /dev/null +++ b/src/problem2/src/tokens/IOST.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/IOTX.svg b/src/problem2/src/tokens/IOTX.svg new file mode 100644 index 000000000..97a846183 --- /dev/null +++ b/src/problem2/src/tokens/IOTX.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/IOV.svg b/src/problem2/src/tokens/IOV.svg new file mode 100644 index 000000000..2c37835ff --- /dev/null +++ b/src/problem2/src/tokens/IOV.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/problem2/src/tokens/IP.svg b/src/problem2/src/tokens/IP.svg new file mode 100644 index 000000000..be63bba6d --- /dev/null +++ b/src/problem2/src/tokens/IP.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/IRIS.svg b/src/problem2/src/tokens/IRIS.svg new file mode 100644 index 000000000..59b13b5aa --- /dev/null +++ b/src/problem2/src/tokens/IRIS.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/IXO.svg b/src/problem2/src/tokens/IXO.svg new file mode 100644 index 000000000..0d1fb1013 --- /dev/null +++ b/src/problem2/src/tokens/IXO.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/JPT.svg b/src/problem2/src/tokens/JPT.svg new file mode 100644 index 000000000..14014e4cb --- /dev/null +++ b/src/problem2/src/tokens/JPT.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/JTO.svg b/src/problem2/src/tokens/JTO.svg new file mode 100644 index 000000000..3ce7f5158 --- /dev/null +++ b/src/problem2/src/tokens/JTO.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/JUNO.svg b/src/problem2/src/tokens/JUNO.svg new file mode 100644 index 000000000..d65fb3da3 --- /dev/null +++ b/src/problem2/src/tokens/JUNO.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/JUP.svg b/src/problem2/src/tokens/JUP.svg new file mode 100644 index 000000000..adf928481 --- /dev/null +++ b/src/problem2/src/tokens/JUP.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/KAITO.svg b/src/problem2/src/tokens/KAITO.svg new file mode 100644 index 000000000..f51471047 --- /dev/null +++ b/src/problem2/src/tokens/KAITO.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/KAS.svg b/src/problem2/src/tokens/KAS.svg new file mode 100644 index 000000000..1c9ea6bc4 --- /dev/null +++ b/src/problem2/src/tokens/KAS.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/problem2/src/tokens/KBONK.svg b/src/problem2/src/tokens/KBONK.svg new file mode 100644 index 000000000..5df777e89 --- /dev/null +++ b/src/problem2/src/tokens/KBONK.svg @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/KCS.svg b/src/problem2/src/tokens/KCS.svg new file mode 100644 index 000000000..a4b333dfb --- /dev/null +++ b/src/problem2/src/tokens/KCS.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/KFLOKI.svg b/src/problem2/src/tokens/KFLOKI.svg new file mode 100644 index 000000000..d35699e87 --- /dev/null +++ b/src/problem2/src/tokens/KFLOKI.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/KLAY.svg b/src/problem2/src/tokens/KLAY.svg new file mode 100644 index 000000000..6f1d4cabe --- /dev/null +++ b/src/problem2/src/tokens/KLAY.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/KMD.svg b/src/problem2/src/tokens/KMD.svg new file mode 100644 index 000000000..62598658b --- /dev/null +++ b/src/problem2/src/tokens/KMD.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/KNC.svg b/src/problem2/src/tokens/KNC.svg new file mode 100644 index 000000000..d9ed00657 --- /dev/null +++ b/src/problem2/src/tokens/KNC.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/KPEPE.svg b/src/problem2/src/tokens/KPEPE.svg new file mode 100644 index 000000000..92665e550 --- /dev/null +++ b/src/problem2/src/tokens/KPEPE.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/KRT.svg b/src/problem2/src/tokens/KRT.svg new file mode 100644 index 000000000..e6ea416cf --- /dev/null +++ b/src/problem2/src/tokens/KRT.svg @@ -0,0 +1,248 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/KSHIB.svg b/src/problem2/src/tokens/KSHIB.svg new file mode 100644 index 000000000..adbb2f009 --- /dev/null +++ b/src/problem2/src/tokens/KSHIB.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/KSM.svg b/src/problem2/src/tokens/KSM.svg new file mode 100644 index 000000000..771f73596 --- /dev/null +++ b/src/problem2/src/tokens/KSM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/KUJI.svg b/src/problem2/src/tokens/KUJI.svg new file mode 100644 index 000000000..7c169dd72 --- /dev/null +++ b/src/problem2/src/tokens/KUJI.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LAYER.svg b/src/problem2/src/tokens/LAYER.svg new file mode 100644 index 000000000..9e9036df3 --- /dev/null +++ b/src/problem2/src/tokens/LAYER.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LBTC.svg b/src/problem2/src/tokens/LBTC.svg new file mode 100644 index 000000000..1476de62a --- /dev/null +++ b/src/problem2/src/tokens/LBTC.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LDO.svg b/src/problem2/src/tokens/LDO.svg new file mode 100644 index 000000000..c8860768c --- /dev/null +++ b/src/problem2/src/tokens/LDO.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LEO.svg b/src/problem2/src/tokens/LEO.svg new file mode 100644 index 000000000..f94a11c94 --- /dev/null +++ b/src/problem2/src/tokens/LEO.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LET.svg b/src/problem2/src/tokens/LET.svg new file mode 100644 index 000000000..8f6a4a06e --- /dev/null +++ b/src/problem2/src/tokens/LET.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LIKE.svg b/src/problem2/src/tokens/LIKE.svg new file mode 100644 index 000000000..a0ac6ac6a --- /dev/null +++ b/src/problem2/src/tokens/LIKE.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LINK.svg b/src/problem2/src/tokens/LINK.svg new file mode 100644 index 000000000..8484106a4 --- /dev/null +++ b/src/problem2/src/tokens/LINK.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/LKT.svg b/src/problem2/src/tokens/LKT.svg new file mode 100644 index 000000000..f224ae0ff --- /dev/null +++ b/src/problem2/src/tokens/LKT.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LOOM.svg b/src/problem2/src/tokens/LOOM.svg new file mode 100644 index 000000000..5ad043561 --- /dev/null +++ b/src/problem2/src/tokens/LOOM.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LOOP.svg b/src/problem2/src/tokens/LOOP.svg new file mode 100644 index 000000000..6c6942043 --- /dev/null +++ b/src/problem2/src/tokens/LOOP.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LOTA.svg b/src/problem2/src/tokens/LOTA.svg new file mode 100644 index 000000000..10c742ae6 --- /dev/null +++ b/src/problem2/src/tokens/LOTA.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/LPLBTC_29MAY2025.svg b/src/problem2/src/tokens/LPLBTC_29MAY2025.svg new file mode 100644 index 000000000..d75f81bcd --- /dev/null +++ b/src/problem2/src/tokens/LPLBTC_29MAY2025.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LPT.svg b/src/problem2/src/tokens/LPT.svg new file mode 100644 index 000000000..c026842d9 --- /dev/null +++ b/src/problem2/src/tokens/LPT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/LPberaSTONE_10APR2025.svg b/src/problem2/src/tokens/LPberaSTONE_10APR2025.svg new file mode 100644 index 000000000..24fd8ebe9 --- /dev/null +++ b/src/problem2/src/tokens/LPberaSTONE_10APR2025.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LPcmETH_26JUN2025.svg b/src/problem2/src/tokens/LPcmETH_26JUN2025.svg new file mode 100644 index 000000000..dd4bb6fbb --- /dev/null +++ b/src/problem2/src/tokens/LPcmETH_26JUN2025.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LRC.svg b/src/problem2/src/tokens/LRC.svg new file mode 100644 index 000000000..2319bb063 --- /dev/null +++ b/src/problem2/src/tokens/LRC.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/LSI.svg b/src/problem2/src/tokens/LSI.svg new file mode 100644 index 000000000..48618f66b --- /dev/null +++ b/src/problem2/src/tokens/LSI.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LSK.svg b/src/problem2/src/tokens/LSK.svg new file mode 100644 index 000000000..d7b38f123 --- /dev/null +++ b/src/problem2/src/tokens/LSK.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/LTC.svg b/src/problem2/src/tokens/LTC.svg new file mode 100644 index 000000000..d734c3ac5 --- /dev/null +++ b/src/problem2/src/tokens/LTC.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/LUM.svg b/src/problem2/src/tokens/LUM.svg new file mode 100644 index 000000000..8994d02ad --- /dev/null +++ b/src/problem2/src/tokens/LUM.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LUNA.svg b/src/problem2/src/tokens/LUNA.svg new file mode 100644 index 000000000..6a839981d --- /dev/null +++ b/src/problem2/src/tokens/LUNA.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LUNAX.svg b/src/problem2/src/tokens/LUNAX.svg new file mode 100644 index 000000000..afc19e17d --- /dev/null +++ b/src/problem2/src/tokens/LUNAX.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/LUNC.svg b/src/problem2/src/tokens/LUNC.svg new file mode 100644 index 000000000..fe40173c9 --- /dev/null +++ b/src/problem2/src/tokens/LUNC.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/LUNI.svg b/src/problem2/src/tokens/LUNI.svg new file mode 100644 index 000000000..172164374 --- /dev/null +++ b/src/problem2/src/tokens/LUNI.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LUNR.svg b/src/problem2/src/tokens/LUNR.svg new file mode 100644 index 000000000..1b8b15237 --- /dev/null +++ b/src/problem2/src/tokens/LUNR.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/LUV.svg b/src/problem2/src/tokens/LUV.svg new file mode 100644 index 000000000..0f7342c49 --- /dev/null +++ b/src/problem2/src/tokens/LUV.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/LVN.svg b/src/problem2/src/tokens/LVN.svg new file mode 100644 index 000000000..65aac46ea --- /dev/null +++ b/src/problem2/src/tokens/LVN.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/Liquid Staking Index.svg b/src/problem2/src/tokens/Liquid Staking Index.svg new file mode 100644 index 000000000..58533746b --- /dev/null +++ b/src/problem2/src/tokens/Liquid Staking Index.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/M87.svg b/src/problem2/src/tokens/M87.svg new file mode 100644 index 000000000..77f8c882b --- /dev/null +++ b/src/problem2/src/tokens/M87.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MANA.svg b/src/problem2/src/tokens/MANA.svg new file mode 100644 index 000000000..062946722 --- /dev/null +++ b/src/problem2/src/tokens/MANA.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MANTA.svg b/src/problem2/src/tokens/MANTA.svg new file mode 100644 index 000000000..1970537a1 --- /dev/null +++ b/src/problem2/src/tokens/MANTA.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MARBLE.svg b/src/problem2/src/tokens/MARBLE.svg new file mode 100644 index 000000000..4e9c2214f --- /dev/null +++ b/src/problem2/src/tokens/MARBLE.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/MATH.svg b/src/problem2/src/tokens/MATH.svg new file mode 100644 index 000000000..144d40f0b --- /dev/null +++ b/src/problem2/src/tokens/MATH.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/MATIC.svg b/src/problem2/src/tokens/MATIC.svg new file mode 100644 index 000000000..98d07c7d9 --- /dev/null +++ b/src/problem2/src/tokens/MATIC.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/MDX.svg b/src/problem2/src/tokens/MDX.svg new file mode 100644 index 000000000..8f3b26780 --- /dev/null +++ b/src/problem2/src/tokens/MDX.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/ME.svg b/src/problem2/src/tokens/ME.svg new file mode 100644 index 000000000..f35418272 --- /dev/null +++ b/src/problem2/src/tokens/ME.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MED.svg b/src/problem2/src/tokens/MED.svg new file mode 100644 index 000000000..900d13925 --- /dev/null +++ b/src/problem2/src/tokens/MED.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/MEME.svg b/src/problem2/src/tokens/MEME.svg new file mode 100644 index 000000000..d784304a6 --- /dev/null +++ b/src/problem2/src/tokens/MEME.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/METIS.svg b/src/problem2/src/tokens/METIS.svg new file mode 100644 index 000000000..3bd43ffad --- /dev/null +++ b/src/problem2/src/tokens/METIS.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MEW.svg b/src/problem2/src/tokens/MEW.svg new file mode 100644 index 000000000..dc9532c53 --- /dev/null +++ b/src/problem2/src/tokens/MEW.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MIAW.svg b/src/problem2/src/tokens/MIAW.svg new file mode 100644 index 000000000..ddf46721c --- /dev/null +++ b/src/problem2/src/tokens/MIAW.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/MILK.svg b/src/problem2/src/tokens/MILK.svg new file mode 100644 index 000000000..e6a434e9c --- /dev/null +++ b/src/problem2/src/tokens/MILK.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MINA.svg b/src/problem2/src/tokens/MINA.svg new file mode 100644 index 000000000..d5aafd739 --- /dev/null +++ b/src/problem2/src/tokens/MINA.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/MINE.svg b/src/problem2/src/tokens/MINE.svg new file mode 100644 index 000000000..ff71cab9e --- /dev/null +++ b/src/problem2/src/tokens/MINE.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MIOTA.svg b/src/problem2/src/tokens/MIOTA.svg new file mode 100644 index 000000000..3d3c08c60 --- /dev/null +++ b/src/problem2/src/tokens/MIOTA.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/MIR.svg b/src/problem2/src/tokens/MIR.svg new file mode 100644 index 000000000..024779131 --- /dev/null +++ b/src/problem2/src/tokens/MIR.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/MKR.svg b/src/problem2/src/tokens/MKR.svg new file mode 100644 index 000000000..9a639d137 --- /dev/null +++ b/src/problem2/src/tokens/MKR.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/MMOG.svg b/src/problem2/src/tokens/MMOG.svg new file mode 100644 index 000000000..6bb1f33b1 --- /dev/null +++ b/src/problem2/src/tokens/MMOG.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MNT.svg b/src/problem2/src/tokens/MNT.svg new file mode 100644 index 000000000..1aa231ddd --- /dev/null +++ b/src/problem2/src/tokens/MNT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/MNTA.svg b/src/problem2/src/tokens/MNTA.svg new file mode 100644 index 000000000..e3b7cfa95 --- /dev/null +++ b/src/problem2/src/tokens/MNTA.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MNTL.svg b/src/problem2/src/tokens/MNTL.svg new file mode 100644 index 000000000..71e1c497e --- /dev/null +++ b/src/problem2/src/tokens/MNTL.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MON.svg b/src/problem2/src/tokens/MON.svg new file mode 100644 index 000000000..be988333a --- /dev/null +++ b/src/problem2/src/tokens/MON.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MOODENG.svg b/src/problem2/src/tokens/MOODENG.svg new file mode 100644 index 000000000..679ffc5b3 --- /dev/null +++ b/src/problem2/src/tokens/MOODENG.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MORPHO.svg b/src/problem2/src/tokens/MORPHO.svg new file mode 100644 index 000000000..a27a0fb36 --- /dev/null +++ b/src/problem2/src/tokens/MORPHO.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/MYT.svg b/src/problem2/src/tokens/MYT.svg new file mode 100644 index 000000000..92cbc6468 --- /dev/null +++ b/src/problem2/src/tokens/MYT.svg @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/NANO.svg b/src/problem2/src/tokens/NANO.svg new file mode 100644 index 000000000..9ed54dd84 --- /dev/null +++ b/src/problem2/src/tokens/NANO.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/NAS.svg b/src/problem2/src/tokens/NAS.svg new file mode 100644 index 000000000..071766c17 --- /dev/null +++ b/src/problem2/src/tokens/NAS.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/NAT.svg b/src/problem2/src/tokens/NAT.svg new file mode 100644 index 000000000..d72f7e18f --- /dev/null +++ b/src/problem2/src/tokens/NAT.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/NEAR.svg b/src/problem2/src/tokens/NEAR.svg new file mode 100644 index 000000000..7bc784c80 --- /dev/null +++ b/src/problem2/src/tokens/NEAR.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/NEIROETH.svg b/src/problem2/src/tokens/NEIROETH.svg new file mode 100644 index 000000000..3ced226fe --- /dev/null +++ b/src/problem2/src/tokens/NEIROETH.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/NEO.svg b/src/problem2/src/tokens/NEO.svg new file mode 100644 index 000000000..d4a90e1b2 --- /dev/null +++ b/src/problem2/src/tokens/NEO.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/NETA.svg b/src/problem2/src/tokens/NETA.svg new file mode 100644 index 000000000..b617dbef9 --- /dev/null +++ b/src/problem2/src/tokens/NETA.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/NEX.svg b/src/problem2/src/tokens/NEX.svg new file mode 100644 index 000000000..34be620b9 --- /dev/null +++ b/src/problem2/src/tokens/NEX.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/NEXO.svg b/src/problem2/src/tokens/NEXO.svg new file mode 100644 index 000000000..4f8507a40 --- /dev/null +++ b/src/problem2/src/tokens/NEXO.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/problem2/src/tokens/NGM.svg b/src/problem2/src/tokens/NGM.svg new file mode 100644 index 000000000..ebdc8a035 --- /dev/null +++ b/src/problem2/src/tokens/NGM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/NIM.svg b/src/problem2/src/tokens/NIM.svg new file mode 100644 index 000000000..ec74006b7 --- /dev/null +++ b/src/problem2/src/tokens/NIM.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/NKN.svg b/src/problem2/src/tokens/NKN.svg new file mode 100644 index 000000000..e008ac5d7 --- /dev/null +++ b/src/problem2/src/tokens/NKN.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/NMR.svg b/src/problem2/src/tokens/NMR.svg new file mode 100644 index 000000000..fcb458caf --- /dev/null +++ b/src/problem2/src/tokens/NMR.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/NOT.svg b/src/problem2/src/tokens/NOT.svg new file mode 100644 index 000000000..5561ccec7 --- /dev/null +++ b/src/problem2/src/tokens/NOT.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/NOTE.svg b/src/problem2/src/tokens/NOTE.svg new file mode 100644 index 000000000..9f44e1971 --- /dev/null +++ b/src/problem2/src/tokens/NOTE.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/NTRN-dATOM.svg b/src/problem2/src/tokens/NTRN-dATOM.svg new file mode 100644 index 000000000..5b3303f21 --- /dev/null +++ b/src/problem2/src/tokens/NTRN-dATOM.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/NTRN.svg b/src/problem2/src/tokens/NTRN.svg new file mode 100644 index 000000000..150a6137d --- /dev/null +++ b/src/problem2/src/tokens/NTRN.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/NXM.svg b/src/problem2/src/tokens/NXM.svg new file mode 100644 index 000000000..165bc3b98 --- /dev/null +++ b/src/problem2/src/tokens/NXM.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/OCEAN.svg b/src/problem2/src/tokens/OCEAN.svg new file mode 100644 index 000000000..ad0f99d6a --- /dev/null +++ b/src/problem2/src/tokens/OCEAN.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/OCH.svg b/src/problem2/src/tokens/OCH.svg new file mode 100644 index 000000000..51c3f8e03 --- /dev/null +++ b/src/problem2/src/tokens/OCH.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/OGN.svg b/src/problem2/src/tokens/OGN.svg new file mode 100644 index 000000000..e15dbac85 --- /dev/null +++ b/src/problem2/src/tokens/OGN.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/OKB.svg b/src/problem2/src/tokens/OKB.svg new file mode 100644 index 000000000..786f75ba4 --- /dev/null +++ b/src/problem2/src/tokens/OKB.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/OKT.svg b/src/problem2/src/tokens/OKT.svg new file mode 100644 index 000000000..0afcd8a1c --- /dev/null +++ b/src/problem2/src/tokens/OKT.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/OM.svg b/src/problem2/src/tokens/OM.svg new file mode 100644 index 000000000..6305bd156 --- /dev/null +++ b/src/problem2/src/tokens/OM.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/OMG.svg b/src/problem2/src/tokens/OMG.svg new file mode 100644 index 000000000..2d3d8ae8e --- /dev/null +++ b/src/problem2/src/tokens/OMG.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/OMG_2.svg b/src/problem2/src/tokens/OMG_2.svg new file mode 100644 index 000000000..5735f9f72 --- /dev/null +++ b/src/problem2/src/tokens/OMG_2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/OMI.svg b/src/problem2/src/tokens/OMI.svg new file mode 100644 index 000000000..b1d502008 --- /dev/null +++ b/src/problem2/src/tokens/OMI.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/OMNI.svg b/src/problem2/src/tokens/OMNI.svg new file mode 100644 index 000000000..ea1ce8353 --- /dev/null +++ b/src/problem2/src/tokens/OMNI.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ONDO.svg b/src/problem2/src/tokens/ONDO.svg new file mode 100644 index 000000000..84482f794 --- /dev/null +++ b/src/problem2/src/tokens/ONDO.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ONE.svg b/src/problem2/src/tokens/ONE.svg new file mode 100644 index 000000000..63c1260c0 --- /dev/null +++ b/src/problem2/src/tokens/ONE.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/ONT.svg b/src/problem2/src/tokens/ONT.svg new file mode 100644 index 000000000..93378b474 --- /dev/null +++ b/src/problem2/src/tokens/ONT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/OP.svg b/src/problem2/src/tokens/OP.svg new file mode 100644 index 000000000..b5feac794 --- /dev/null +++ b/src/problem2/src/tokens/OP.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/OPUL.svg b/src/problem2/src/tokens/OPUL.svg new file mode 100644 index 000000000..c7ae4dbf3 --- /dev/null +++ b/src/problem2/src/tokens/OPUL.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/ORDI.svg b/src/problem2/src/tokens/ORDI.svg new file mode 100644 index 000000000..380181270 --- /dev/null +++ b/src/problem2/src/tokens/ORDI.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ORION.svg b/src/problem2/src/tokens/ORION.svg new file mode 100644 index 000000000..b5f9ba6ff --- /dev/null +++ b/src/problem2/src/tokens/ORION.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/ORNE.svg b/src/problem2/src/tokens/ORNE.svg new file mode 100644 index 000000000..d986b3f31 --- /dev/null +++ b/src/problem2/src/tokens/ORNE.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/OSMO.svg b/src/problem2/src/tokens/OSMO.svg new file mode 100644 index 000000000..e98545517 --- /dev/null +++ b/src/problem2/src/tokens/OSMO.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/OXT.svg b/src/problem2/src/tokens/OXT.svg new file mode 100644 index 000000000..bba9547da --- /dev/null +++ b/src/problem2/src/tokens/OXT.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/OXY.svg b/src/problem2/src/tokens/OXY.svg new file mode 100644 index 000000000..9175a0b90 --- /dev/null +++ b/src/problem2/src/tokens/OXY.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PAX.svg b/src/problem2/src/tokens/PAX.svg new file mode 100644 index 000000000..32b0ef821 --- /dev/null +++ b/src/problem2/src/tokens/PAX.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PAXG.svg b/src/problem2/src/tokens/PAXG.svg new file mode 100644 index 000000000..5ff89051f --- /dev/null +++ b/src/problem2/src/tokens/PAXG.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PENDLE.svg b/src/problem2/src/tokens/PENDLE.svg new file mode 100644 index 000000000..367540fbb --- /dev/null +++ b/src/problem2/src/tokens/PENDLE.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PENGU.svg b/src/problem2/src/tokens/PENGU.svg new file mode 100644 index 000000000..a5c99add3 --- /dev/null +++ b/src/problem2/src/tokens/PENGU.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PEPE.svg b/src/problem2/src/tokens/PEPE.svg new file mode 100644 index 000000000..1e6ba151a --- /dev/null +++ b/src/problem2/src/tokens/PEPE.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PHT.svg b/src/problem2/src/tokens/PHT.svg new file mode 100644 index 000000000..d51511805 --- /dev/null +++ b/src/problem2/src/tokens/PHT.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PLAY.svg b/src/problem2/src/tokens/PLAY.svg new file mode 100644 index 000000000..bae257742 --- /dev/null +++ b/src/problem2/src/tokens/PLAY.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PLQ.svg b/src/problem2/src/tokens/PLQ.svg new file mode 100644 index 000000000..31b353bb4 --- /dev/null +++ b/src/problem2/src/tokens/PLQ.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PLY.svg b/src/problem2/src/tokens/PLY.svg new file mode 100644 index 000000000..c79b32044 --- /dev/null +++ b/src/problem2/src/tokens/PLY.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PNUT.svg b/src/problem2/src/tokens/PNUT.svg new file mode 100644 index 000000000..90abdb384 --- /dev/null +++ b/src/problem2/src/tokens/PNUT.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/POL.svg b/src/problem2/src/tokens/POL.svg new file mode 100644 index 000000000..ceff03709 --- /dev/null +++ b/src/problem2/src/tokens/POL.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/POLY.svg b/src/problem2/src/tokens/POLY.svg new file mode 100644 index 000000000..b894fef5d --- /dev/null +++ b/src/problem2/src/tokens/POLY.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/POPCAT.svg b/src/problem2/src/tokens/POPCAT.svg new file mode 100644 index 000000000..ab8fa4c5e --- /dev/null +++ b/src/problem2/src/tokens/POPCAT.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/PORT.svg b/src/problem2/src/tokens/PORT.svg new file mode 100644 index 000000000..d84653736 --- /dev/null +++ b/src/problem2/src/tokens/PORT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/PROM.svg b/src/problem2/src/tokens/PROM.svg new file mode 100644 index 000000000..044c9e357 --- /dev/null +++ b/src/problem2/src/tokens/PROM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/PSI.svg b/src/problem2/src/tokens/PSI.svg new file mode 100644 index 000000000..674744b4e --- /dev/null +++ b/src/problem2/src/tokens/PSI.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/PSTAKE.svg b/src/problem2/src/tokens/PSTAKE.svg new file mode 100644 index 000000000..caf13d8d6 --- /dev/null +++ b/src/problem2/src/tokens/PSTAKE.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/PTLBTC_29MAY2025.svg b/src/problem2/src/tokens/PTLBTC_29MAY2025.svg new file mode 100644 index 000000000..afb01c923 --- /dev/null +++ b/src/problem2/src/tokens/PTLBTC_29MAY2025.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PTMETH_26DEC2024.svg b/src/problem2/src/tokens/PTMETH_26DEC2024.svg new file mode 100644 index 000000000..3256ec9f5 --- /dev/null +++ b/src/problem2/src/tokens/PTMETH_26DEC2024.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PTberaSTONE_10APR2025.svg b/src/problem2/src/tokens/PTberaSTONE_10APR2025.svg new file mode 100644 index 000000000..1444e75df --- /dev/null +++ b/src/problem2/src/tokens/PTberaSTONE_10APR2025.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PTcmETH_26JUN2025.svg b/src/problem2/src/tokens/PTcmETH_26JUN2025.svg new file mode 100644 index 000000000..860a1e389 --- /dev/null +++ b/src/problem2/src/tokens/PTcmETH_26JUN2025.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PUDGY.svg b/src/problem2/src/tokens/PUDGY.svg new file mode 100644 index 000000000..239424d8c --- /dev/null +++ b/src/problem2/src/tokens/PUDGY.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PUMP.svg b/src/problem2/src/tokens/PUMP.svg new file mode 100644 index 000000000..3b8ac28fd --- /dev/null +++ b/src/problem2/src/tokens/PUMP.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PUNDIX.svg b/src/problem2/src/tokens/PUNDIX.svg new file mode 100644 index 000000000..a522d0d26 --- /dev/null +++ b/src/problem2/src/tokens/PUNDIX.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/PURR.svg b/src/problem2/src/tokens/PURR.svg new file mode 100644 index 000000000..c8b82375c --- /dev/null +++ b/src/problem2/src/tokens/PURR.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PURSE.svg b/src/problem2/src/tokens/PURSE.svg new file mode 100644 index 000000000..9188e092d --- /dev/null +++ b/src/problem2/src/tokens/PURSE.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/PYTH.svg b/src/problem2/src/tokens/PYTH.svg new file mode 100644 index 000000000..b34cc9ea3 --- /dev/null +++ b/src/problem2/src/tokens/PYTH.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/QCK.svg b/src/problem2/src/tokens/QCK.svg new file mode 100644 index 000000000..358cb7dbb --- /dev/null +++ b/src/problem2/src/tokens/QCK.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/QKC.svg b/src/problem2/src/tokens/QKC.svg new file mode 100644 index 000000000..e31277750 --- /dev/null +++ b/src/problem2/src/tokens/QKC.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/QNT.svg b/src/problem2/src/tokens/QNT.svg new file mode 100644 index 000000000..a611eaa24 --- /dev/null +++ b/src/problem2/src/tokens/QNT.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/QTUM.svg b/src/problem2/src/tokens/QTUM.svg new file mode 100644 index 000000000..e96f6cf2c --- /dev/null +++ b/src/problem2/src/tokens/QTUM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/RAY.svg b/src/problem2/src/tokens/RAY.svg new file mode 100644 index 000000000..e769284e2 --- /dev/null +++ b/src/problem2/src/tokens/RAY.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/RBN.svg b/src/problem2/src/tokens/RBN.svg new file mode 100644 index 000000000..ef40c376d --- /dev/null +++ b/src/problem2/src/tokens/RBN.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/REEF.svg b/src/problem2/src/tokens/REEF.svg new file mode 100644 index 000000000..5c777f840 --- /dev/null +++ b/src/problem2/src/tokens/REEF.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/REGEN.svg b/src/problem2/src/tokens/REGEN.svg new file mode 100644 index 000000000..242a4c66c --- /dev/null +++ b/src/problem2/src/tokens/REGEN.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/REN.svg b/src/problem2/src/tokens/REN.svg new file mode 100644 index 000000000..bae08ca56 --- /dev/null +++ b/src/problem2/src/tokens/REN.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/REP.svg b/src/problem2/src/tokens/REP.svg new file mode 100644 index 000000000..c311970b6 --- /dev/null +++ b/src/problem2/src/tokens/REP.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/REV.svg b/src/problem2/src/tokens/REV.svg new file mode 100644 index 000000000..6dcaa131a --- /dev/null +++ b/src/problem2/src/tokens/REV.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/RLB.svg b/src/problem2/src/tokens/RLB.svg new file mode 100644 index 000000000..344fe8e02 --- /dev/null +++ b/src/problem2/src/tokens/RLB.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/RLC.svg b/src/problem2/src/tokens/RLC.svg new file mode 100644 index 000000000..c816edf01 --- /dev/null +++ b/src/problem2/src/tokens/RLC.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/RNDR.svg b/src/problem2/src/tokens/RNDR.svg new file mode 100644 index 000000000..031e8816b --- /dev/null +++ b/src/problem2/src/tokens/RNDR.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ROAR.svg b/src/problem2/src/tokens/ROAR.svg new file mode 100644 index 000000000..d29ab0963 --- /dev/null +++ b/src/problem2/src/tokens/ROAR.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ROWAN.svg b/src/problem2/src/tokens/ROWAN.svg new file mode 100644 index 000000000..6b395742d --- /dev/null +++ b/src/problem2/src/tokens/ROWAN.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/RSR.svg b/src/problem2/src/tokens/RSR.svg new file mode 100644 index 000000000..f85bb78c2 --- /dev/null +++ b/src/problem2/src/tokens/RSR.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/RUNE.svg b/src/problem2/src/tokens/RUNE.svg new file mode 100644 index 000000000..ccbb65cef --- /dev/null +++ b/src/problem2/src/tokens/RUNE.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/RVN.svg b/src/problem2/src/tokens/RVN.svg new file mode 100644 index 000000000..4d6d30eee --- /dev/null +++ b/src/problem2/src/tokens/RVN.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/S.svg b/src/problem2/src/tokens/S.svg new file mode 100644 index 000000000..b216a1804 --- /dev/null +++ b/src/problem2/src/tokens/S.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/SAFEMOON.svg b/src/problem2/src/tokens/SAFEMOON.svg new file mode 100644 index 000000000..9ff12873a --- /dev/null +++ b/src/problem2/src/tokens/SAFEMOON.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SAGA.svg b/src/problem2/src/tokens/SAGA.svg new file mode 100644 index 000000000..53455ea0d --- /dev/null +++ b/src/problem2/src/tokens/SAGA.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SAND.svg b/src/problem2/src/tokens/SAND.svg new file mode 100644 index 000000000..4e01196b4 --- /dev/null +++ b/src/problem2/src/tokens/SAND.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/SAYVE.svg b/src/problem2/src/tokens/SAYVE.svg new file mode 100644 index 000000000..2cea35fc5 --- /dev/null +++ b/src/problem2/src/tokens/SAYVE.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/SC.svg b/src/problem2/src/tokens/SC.svg new file mode 100644 index 000000000..aebc27644 --- /dev/null +++ b/src/problem2/src/tokens/SC.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/SCRT.svg b/src/problem2/src/tokens/SCRT.svg new file mode 100644 index 000000000..9451de411 --- /dev/null +++ b/src/problem2/src/tokens/SCRT.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/SDT.svg b/src/problem2/src/tokens/SDT.svg new file mode 100644 index 000000000..222a72897 --- /dev/null +++ b/src/problem2/src/tokens/SDT.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SEI.svg b/src/problem2/src/tokens/SEI.svg new file mode 100644 index 000000000..65ea99277 --- /dev/null +++ b/src/problem2/src/tokens/SEI.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SET.svg b/src/problem2/src/tokens/SET.svg new file mode 100644 index 000000000..f46a6ba24 --- /dev/null +++ b/src/problem2/src/tokens/SET.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SGT.svg b/src/problem2/src/tokens/SGT.svg new file mode 100644 index 000000000..a975dece9 --- /dev/null +++ b/src/problem2/src/tokens/SGT.svg @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SHD.svg b/src/problem2/src/tokens/SHD.svg new file mode 100644 index 000000000..bdb7e6c29 --- /dev/null +++ b/src/problem2/src/tokens/SHD.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SHIB.svg b/src/problem2/src/tokens/SHIB.svg new file mode 100644 index 000000000..adbb2f009 --- /dev/null +++ b/src/problem2/src/tokens/SHIB.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SHIDO.svg b/src/problem2/src/tokens/SHIDO.svg new file mode 100644 index 000000000..bd7deeeb4 --- /dev/null +++ b/src/problem2/src/tokens/SHIDO.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SITY.svg b/src/problem2/src/tokens/SITY.svg new file mode 100644 index 000000000..7cfb8209b --- /dev/null +++ b/src/problem2/src/tokens/SITY.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/SLERF.svg b/src/problem2/src/tokens/SLERF.svg new file mode 100644 index 000000000..713f29af9 --- /dev/null +++ b/src/problem2/src/tokens/SLERF.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SNT.svg b/src/problem2/src/tokens/SNT.svg new file mode 100644 index 000000000..cc8ad2df4 --- /dev/null +++ b/src/problem2/src/tokens/SNT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/SNX.svg b/src/problem2/src/tokens/SNX.svg new file mode 100644 index 000000000..14e059138 --- /dev/null +++ b/src/problem2/src/tokens/SNX.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/SOL.svg b/src/problem2/src/tokens/SOL.svg new file mode 100644 index 000000000..0568e8088 --- /dev/null +++ b/src/problem2/src/tokens/SOL.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SOLETH.svg b/src/problem2/src/tokens/SOLETH.svg new file mode 100644 index 000000000..c7f81893f --- /dev/null +++ b/src/problem2/src/tokens/SOLETH.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SOM.svg b/src/problem2/src/tokens/SOM.svg new file mode 100644 index 000000000..778bf9b5c --- /dev/null +++ b/src/problem2/src/tokens/SOM.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/SOMM.svg b/src/problem2/src/tokens/SOMM.svg new file mode 100644 index 000000000..fa82d261e --- /dev/null +++ b/src/problem2/src/tokens/SOMM.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SPEC.svg b/src/problem2/src/tokens/SPEC.svg new file mode 100644 index 000000000..75c9b37b2 --- /dev/null +++ b/src/problem2/src/tokens/SPEC.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/SRM.svg b/src/problem2/src/tokens/SRM.svg new file mode 100644 index 000000000..e488de82d --- /dev/null +++ b/src/problem2/src/tokens/SRM.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SRV.svg b/src/problem2/src/tokens/SRV.svg new file mode 100644 index 000000000..b15a61c77 --- /dev/null +++ b/src/problem2/src/tokens/SRV.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/STARS.svg b/src/problem2/src/tokens/STARS.svg new file mode 100644 index 000000000..de6d376db --- /dev/null +++ b/src/problem2/src/tokens/STARS.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/STEEM.svg b/src/problem2/src/tokens/STEEM.svg new file mode 100644 index 000000000..503009b90 --- /dev/null +++ b/src/problem2/src/tokens/STEEM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/STMX.svg b/src/problem2/src/tokens/STMX.svg new file mode 100644 index 000000000..976e86474 --- /dev/null +++ b/src/problem2/src/tokens/STMX.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/STORJ.svg b/src/problem2/src/tokens/STORJ.svg new file mode 100644 index 000000000..85a332a6c --- /dev/null +++ b/src/problem2/src/tokens/STORJ.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/STRAX.svg b/src/problem2/src/tokens/STRAX.svg new file mode 100644 index 000000000..a34822931 --- /dev/null +++ b/src/problem2/src/tokens/STRAX.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/STRD.svg b/src/problem2/src/tokens/STRD.svg new file mode 100644 index 000000000..f25a48536 --- /dev/null +++ b/src/problem2/src/tokens/STRD.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/STREAM.svg b/src/problem2/src/tokens/STREAM.svg new file mode 100644 index 000000000..fba4ce060 --- /dev/null +++ b/src/problem2/src/tokens/STREAM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/STRK.svg b/src/problem2/src/tokens/STRK.svg new file mode 100644 index 000000000..22c139824 --- /dev/null +++ b/src/problem2/src/tokens/STRK.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/STT.svg b/src/problem2/src/tokens/STT.svg new file mode 100644 index 000000000..d37590a8d --- /dev/null +++ b/src/problem2/src/tokens/STT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/STX.svg b/src/problem2/src/tokens/STX.svg new file mode 100644 index 000000000..ed89fc927 --- /dev/null +++ b/src/problem2/src/tokens/STX.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/SUI.svg b/src/problem2/src/tokens/SUI.svg new file mode 100644 index 000000000..7687a8804 --- /dev/null +++ b/src/problem2/src/tokens/SUI.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SUN.svg b/src/problem2/src/tokens/SUN.svg new file mode 100644 index 000000000..1159b6cbf --- /dev/null +++ b/src/problem2/src/tokens/SUN.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SUSHI.svg b/src/problem2/src/tokens/SUSHI.svg new file mode 100644 index 000000000..e118f213b --- /dev/null +++ b/src/problem2/src/tokens/SUSHI.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SWTH-LEGACY.svg b/src/problem2/src/tokens/SWTH-LEGACY.svg new file mode 100644 index 000000000..60ba0650e --- /dev/null +++ b/src/problem2/src/tokens/SWTH-LEGACY.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/SWTH.svg b/src/problem2/src/tokens/SWTH.svg new file mode 100644 index 000000000..353c1b5bc --- /dev/null +++ b/src/problem2/src/tokens/SWTH.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/SXP.svg b/src/problem2/src/tokens/SXP.svg new file mode 100644 index 000000000..89fd3b147 --- /dev/null +++ b/src/problem2/src/tokens/SXP.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/TAO.svg b/src/problem2/src/tokens/TAO.svg new file mode 100644 index 000000000..9f0dbfcf8 --- /dev/null +++ b/src/problem2/src/tokens/TAO.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/TEL.svg b/src/problem2/src/tokens/TEL.svg new file mode 100644 index 000000000..2992514bf --- /dev/null +++ b/src/problem2/src/tokens/TEL.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/TFUEL.svg b/src/problem2/src/tokens/TFUEL.svg new file mode 100644 index 000000000..d57d7d949 --- /dev/null +++ b/src/problem2/src/tokens/TFUEL.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/THETA.svg b/src/problem2/src/tokens/THETA.svg new file mode 100644 index 000000000..8ff93f401 --- /dev/null +++ b/src/problem2/src/tokens/THETA.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/THT.svg b/src/problem2/src/tokens/THT.svg new file mode 100644 index 000000000..8ee5eb9ff --- /dev/null +++ b/src/problem2/src/tokens/THT.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TIA.svg b/src/problem2/src/tokens/TIA.svg new file mode 100644 index 000000000..41d8ab96c --- /dev/null +++ b/src/problem2/src/tokens/TIA.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TICK.svg b/src/problem2/src/tokens/TICK.svg new file mode 100644 index 000000000..3be70db26 --- /dev/null +++ b/src/problem2/src/tokens/TICK.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TITAN.svg b/src/problem2/src/tokens/TITAN.svg new file mode 100644 index 000000000..d52faa138 --- /dev/null +++ b/src/problem2/src/tokens/TITAN.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TLAND.svg b/src/problem2/src/tokens/TLAND.svg new file mode 100644 index 000000000..9f9e3e233 --- /dev/null +++ b/src/problem2/src/tokens/TLAND.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/TLM.svg b/src/problem2/src/tokens/TLM.svg new file mode 100644 index 000000000..1fe3283fe --- /dev/null +++ b/src/problem2/src/tokens/TLM.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TOMO.svg b/src/problem2/src/tokens/TOMO.svg new file mode 100644 index 000000000..45bda83d4 --- /dev/null +++ b/src/problem2/src/tokens/TOMO.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/TON.svg b/src/problem2/src/tokens/TON.svg new file mode 100644 index 000000000..c1e0b9148 --- /dev/null +++ b/src/problem2/src/tokens/TON.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TPC.svg b/src/problem2/src/tokens/TPC.svg new file mode 100644 index 000000000..29f8a4af8 --- /dev/null +++ b/src/problem2/src/tokens/TPC.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TRAXX.svg b/src/problem2/src/tokens/TRAXX.svg new file mode 100644 index 000000000..05c2ec099 --- /dev/null +++ b/src/problem2/src/tokens/TRAXX.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TRB.svg b/src/problem2/src/tokens/TRB.svg new file mode 100644 index 000000000..e319e65d7 --- /dev/null +++ b/src/problem2/src/tokens/TRB.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TRU.svg b/src/problem2/src/tokens/TRU.svg new file mode 100644 index 000000000..29ddc8ac2 --- /dev/null +++ b/src/problem2/src/tokens/TRU.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/TRUMP.svg b/src/problem2/src/tokens/TRUMP.svg new file mode 100644 index 000000000..2571b5e20 --- /dev/null +++ b/src/problem2/src/tokens/TRUMP.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TRX.svg b/src/problem2/src/tokens/TRX.svg new file mode 100644 index 000000000..c105ddc30 --- /dev/null +++ b/src/problem2/src/tokens/TRX.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/TTT.svg b/src/problem2/src/tokens/TTT.svg new file mode 100644 index 000000000..13e6080a8 --- /dev/null +++ b/src/problem2/src/tokens/TTT.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/TUSD.svg b/src/problem2/src/tokens/TUSD.svg new file mode 100644 index 000000000..712ec923d --- /dev/null +++ b/src/problem2/src/tokens/TUSD.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/TWD.svg b/src/problem2/src/tokens/TWD.svg new file mode 100644 index 000000000..014f52555 --- /dev/null +++ b/src/problem2/src/tokens/TWD.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/TWT.svg b/src/problem2/src/tokens/TWT.svg new file mode 100644 index 000000000..b67bf3753 --- /dev/null +++ b/src/problem2/src/tokens/TWT.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/Token.svg b/src/problem2/src/tokens/Token.svg new file mode 100644 index 000000000..bed64e294 --- /dev/null +++ b/src/problem2/src/tokens/Token.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/UBQ.svg b/src/problem2/src/tokens/UBQ.svg new file mode 100644 index 000000000..139af049c --- /dev/null +++ b/src/problem2/src/tokens/UBQ.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/UMEE.svg b/src/problem2/src/tokens/UMEE.svg new file mode 100644 index 000000000..f9243257d --- /dev/null +++ b/src/problem2/src/tokens/UMEE.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/UNA.svg b/src/problem2/src/tokens/UNA.svg new file mode 100644 index 000000000..077c1555e --- /dev/null +++ b/src/problem2/src/tokens/UNA.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/UNI.svg b/src/problem2/src/tokens/UNI.svg new file mode 100644 index 000000000..37996b6c0 --- /dev/null +++ b/src/problem2/src/tokens/UNI.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/UOS.svg b/src/problem2/src/tokens/UOS.svg new file mode 100644 index 000000000..eb07c3cce --- /dev/null +++ b/src/problem2/src/tokens/UOS.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/USC-Minted.svg b/src/problem2/src/tokens/USC-Minted.svg new file mode 100644 index 000000000..466cda74f --- /dev/null +++ b/src/problem2/src/tokens/USC-Minted.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/USC.svg b/src/problem2/src/tokens/USC.svg new file mode 100644 index 000000000..32bd9541f --- /dev/null +++ b/src/problem2/src/tokens/USC.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/USD.svg b/src/problem2/src/tokens/USD.svg new file mode 100644 index 000000000..abf67ab10 --- /dev/null +++ b/src/problem2/src/tokens/USD.svg @@ -0,0 +1,8 @@ + + + Token Symbol/USD + + + + + \ No newline at end of file diff --git a/src/problem2/src/tokens/USDC-dATOM.svg b/src/problem2/src/tokens/USDC-dATOM.svg new file mode 100644 index 000000000..7202b50ae --- /dev/null +++ b/src/problem2/src/tokens/USDC-dATOM.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/USDC.e.svg b/src/problem2/src/tokens/USDC.e.svg new file mode 100644 index 000000000..eee4251a7 --- /dev/null +++ b/src/problem2/src/tokens/USDC.e.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/USDC.grv.svg b/src/problem2/src/tokens/USDC.grv.svg new file mode 100644 index 000000000..458ab4901 --- /dev/null +++ b/src/problem2/src/tokens/USDC.grv.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/USDC.svg b/src/problem2/src/tokens/USDC.svg new file mode 100644 index 000000000..eee4251a7 --- /dev/null +++ b/src/problem2/src/tokens/USDC.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/USDP.svg b/src/problem2/src/tokens/USDP.svg new file mode 100644 index 000000000..b7e76ff9d --- /dev/null +++ b/src/problem2/src/tokens/USDP.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/USDT.svg b/src/problem2/src/tokens/USDT.svg new file mode 100644 index 000000000..8b3986d05 --- /dev/null +++ b/src/problem2/src/tokens/USDT.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/USDY.svg b/src/problem2/src/tokens/USDY.svg new file mode 100644 index 000000000..118da5939 --- /dev/null +++ b/src/problem2/src/tokens/USDY.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/USK.svg b/src/problem2/src/tokens/USK.svg new file mode 100644 index 000000000..15ba03fe9 --- /dev/null +++ b/src/problem2/src/tokens/USK.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/UST.svg b/src/problem2/src/tokens/UST.svg new file mode 100644 index 000000000..2a0a59707 --- /dev/null +++ b/src/problem2/src/tokens/UST.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/USUAL.svg b/src/problem2/src/tokens/USUAL.svg new file mode 100644 index 000000000..1bdf52827 --- /dev/null +++ b/src/problem2/src/tokens/USUAL.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/VDL.svg b/src/problem2/src/tokens/VDL.svg new file mode 100644 index 000000000..d839e0da4 --- /dev/null +++ b/src/problem2/src/tokens/VDL.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/VET.svg b/src/problem2/src/tokens/VET.svg new file mode 100644 index 000000000..88ebf982a --- /dev/null +++ b/src/problem2/src/tokens/VET.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/VIRTUAL.svg b/src/problem2/src/tokens/VIRTUAL.svg new file mode 100644 index 000000000..7d623039a --- /dev/null +++ b/src/problem2/src/tokens/VIRTUAL.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/VKR.svg b/src/problem2/src/tokens/VKR.svg new file mode 100644 index 000000000..cb3c68d59 --- /dev/null +++ b/src/problem2/src/tokens/VKR.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/VRTX.svg b/src/problem2/src/tokens/VRTX.svg new file mode 100644 index 000000000..8cb3dc30e --- /dev/null +++ b/src/problem2/src/tokens/VRTX.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/W.svg b/src/problem2/src/tokens/W.svg new file mode 100644 index 000000000..95823f225 --- /dev/null +++ b/src/problem2/src/tokens/W.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/WAL.svg b/src/problem2/src/tokens/WAL.svg new file mode 100644 index 000000000..8d06c07e1 --- /dev/null +++ b/src/problem2/src/tokens/WAL.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/WAVAX.svg b/src/problem2/src/tokens/WAVAX.svg new file mode 100644 index 000000000..e244ad3aa --- /dev/null +++ b/src/problem2/src/tokens/WAVAX.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/WAVE.svg b/src/problem2/src/tokens/WAVE.svg new file mode 100644 index 000000000..2ca6ac070 --- /dev/null +++ b/src/problem2/src/tokens/WAVE.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/WBNB.svg b/src/problem2/src/tokens/WBNB.svg new file mode 100644 index 000000000..e45c696b5 --- /dev/null +++ b/src/problem2/src/tokens/WBNB.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/WBTC.svg b/src/problem2/src/tokens/WBTC.svg new file mode 100644 index 000000000..b597b84a4 --- /dev/null +++ b/src/problem2/src/tokens/WBTC.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/problem2/src/tokens/WETH.svg b/src/problem2/src/tokens/WETH.svg new file mode 100644 index 000000000..cba6f1d78 --- /dev/null +++ b/src/problem2/src/tokens/WETH.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/WHALE.svg b/src/problem2/src/tokens/WHALE.svg new file mode 100644 index 000000000..a42a2449d --- /dev/null +++ b/src/problem2/src/tokens/WHALE.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/WIF.svg b/src/problem2/src/tokens/WIF.svg new file mode 100644 index 000000000..6df4ea15a --- /dev/null +++ b/src/problem2/src/tokens/WIF.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/WIN.svg b/src/problem2/src/tokens/WIN.svg new file mode 100644 index 000000000..bc2435409 --- /dev/null +++ b/src/problem2/src/tokens/WIN.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/WLD.svg b/src/problem2/src/tokens/WLD.svg new file mode 100644 index 000000000..62191032d --- /dev/null +++ b/src/problem2/src/tokens/WLD.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/WMATIC.svg b/src/problem2/src/tokens/WMATIC.svg new file mode 100644 index 000000000..ba0630b51 --- /dev/null +++ b/src/problem2/src/tokens/WMATIC.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/WMNT.svg b/src/problem2/src/tokens/WMNT.svg new file mode 100644 index 000000000..8b8784b36 --- /dev/null +++ b/src/problem2/src/tokens/WMNT.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/WMON.png b/src/problem2/src/tokens/WMON.png new file mode 100644 index 000000000..452cae24b Binary files /dev/null and b/src/problem2/src/tokens/WMON.png differ diff --git a/src/problem2/src/tokens/WRX.svg b/src/problem2/src/tokens/WRX.svg new file mode 100644 index 000000000..543f57090 --- /dev/null +++ b/src/problem2/src/tokens/WRX.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/XCAD.svg b/src/problem2/src/tokens/XCAD.svg new file mode 100644 index 000000000..545a88d1b --- /dev/null +++ b/src/problem2/src/tokens/XCAD.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/XDC.svg b/src/problem2/src/tokens/XDC.svg new file mode 100644 index 000000000..c90381022 --- /dev/null +++ b/src/problem2/src/tokens/XDC.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/XEM.svg b/src/problem2/src/tokens/XEM.svg new file mode 100644 index 000000000..da54e72a2 --- /dev/null +++ b/src/problem2/src/tokens/XEM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/XKI.svg b/src/problem2/src/tokens/XKI.svg new file mode 100644 index 000000000..dd5fea7cf --- /dev/null +++ b/src/problem2/src/tokens/XKI.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/XLM.svg b/src/problem2/src/tokens/XLM.svg new file mode 100644 index 000000000..d836619c1 --- /dev/null +++ b/src/problem2/src/tokens/XLM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/XMR.svg b/src/problem2/src/tokens/XMR.svg new file mode 100644 index 000000000..475a95cb7 --- /dev/null +++ b/src/problem2/src/tokens/XMR.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/XPRT.svg b/src/problem2/src/tokens/XPRT.svg new file mode 100644 index 000000000..7ecd4ace9 --- /dev/null +++ b/src/problem2/src/tokens/XPRT.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/XRP.svg b/src/problem2/src/tokens/XRP.svg new file mode 100644 index 000000000..b3d441bf4 --- /dev/null +++ b/src/problem2/src/tokens/XRP.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/XSGD.svg b/src/problem2/src/tokens/XSGD.svg new file mode 100644 index 000000000..f04caab93 --- /dev/null +++ b/src/problem2/src/tokens/XSGD.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/XTRA.svg b/src/problem2/src/tokens/XTRA.svg new file mode 100644 index 000000000..1c6367d3b --- /dev/null +++ b/src/problem2/src/tokens/XTRA.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/problem2/src/tokens/XTZ.svg b/src/problem2/src/tokens/XTZ.svg new file mode 100644 index 000000000..28b924e5c --- /dev/null +++ b/src/problem2/src/tokens/XTZ.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/XVG.svg b/src/problem2/src/tokens/XVG.svg new file mode 100644 index 000000000..537378cff --- /dev/null +++ b/src/problem2/src/tokens/XVG.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/XVS.svg b/src/problem2/src/tokens/XVS.svg new file mode 100644 index 000000000..3176f9fb6 --- /dev/null +++ b/src/problem2/src/tokens/XVS.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/YAKI.svg b/src/problem2/src/tokens/YAKI.svg new file mode 100644 index 000000000..5179eb95a --- /dev/null +++ b/src/problem2/src/tokens/YAKI.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/YAM.svg b/src/problem2/src/tokens/YAM.svg new file mode 100644 index 000000000..2e8a65421 --- /dev/null +++ b/src/problem2/src/tokens/YAM.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/YFI.svg b/src/problem2/src/tokens/YFI.svg new file mode 100644 index 000000000..b7674608b --- /dev/null +++ b/src/problem2/src/tokens/YFI.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/YieldUSD.svg b/src/problem2/src/tokens/YieldUSD.svg new file mode 100644 index 000000000..e435a687c --- /dev/null +++ b/src/problem2/src/tokens/YieldUSD.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ZCH.svg b/src/problem2/src/tokens/ZCH.svg new file mode 100644 index 000000000..1e9d4250d --- /dev/null +++ b/src/problem2/src/tokens/ZCH.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/ZEC.svg b/src/problem2/src/tokens/ZEC.svg new file mode 100644 index 000000000..b6b86dcc1 --- /dev/null +++ b/src/problem2/src/tokens/ZEC.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/ZEN.svg b/src/problem2/src/tokens/ZEN.svg new file mode 100644 index 000000000..b305169ac --- /dev/null +++ b/src/problem2/src/tokens/ZEN.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ZIL.svg b/src/problem2/src/tokens/ZIL.svg new file mode 100644 index 000000000..c89e8ce16 --- /dev/null +++ b/src/problem2/src/tokens/ZIL.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/ZRO.svg b/src/problem2/src/tokens/ZRO.svg new file mode 100644 index 000000000..e485e3b2a --- /dev/null +++ b/src/problem2/src/tokens/ZRO.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ZRX.svg b/src/problem2/src/tokens/ZRX.svg new file mode 100644 index 000000000..f42e914a6 --- /dev/null +++ b/src/problem2/src/tokens/ZRX.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/problem2/src/tokens/ZWAP.svg b/src/problem2/src/tokens/ZWAP.svg new file mode 100644 index 000000000..130d14d73 --- /dev/null +++ b/src/problem2/src/tokens/ZWAP.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/ampKUJI.svg b/src/problem2/src/tokens/ampKUJI.svg new file mode 100644 index 000000000..2692787da --- /dev/null +++ b/src/problem2/src/tokens/ampKUJI.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ampLUNA.svg b/src/problem2/src/tokens/ampLUNA.svg new file mode 100644 index 000000000..ebeab5868 --- /dev/null +++ b/src/problem2/src/tokens/ampLUNA.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/axlUSDC.svg b/src/problem2/src/tokens/axlUSDC.svg new file mode 100644 index 000000000..fc879f679 --- /dev/null +++ b/src/problem2/src/tokens/axlUSDC.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/bCFX.svg b/src/problem2/src/tokens/bCFX.svg new file mode 100644 index 000000000..07e8c434d --- /dev/null +++ b/src/problem2/src/tokens/bCFX.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/bNEO.svg b/src/problem2/src/tokens/bNEO.svg new file mode 100644 index 000000000..561b2282d --- /dev/null +++ b/src/problem2/src/tokens/bNEO.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/beraSTONE.svg b/src/problem2/src/tokens/beraSTONE.svg new file mode 100644 index 000000000..3da255f50 --- /dev/null +++ b/src/problem2/src/tokens/beraSTONE.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/cUSD.svg b/src/problem2/src/tokens/cUSD.svg new file mode 100644 index 000000000..33407ebc9 --- /dev/null +++ b/src/problem2/src/tokens/cUSD.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/cbBTC.svg b/src/problem2/src/tokens/cbBTC.svg new file mode 100644 index 000000000..77fee5c01 --- /dev/null +++ b/src/problem2/src/tokens/cbBTC.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/cbETH.svg b/src/problem2/src/tokens/cbETH.svg new file mode 100644 index 000000000..5a18b9264 --- /dev/null +++ b/src/problem2/src/tokens/cbETH.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/cmETH.svg b/src/problem2/src/tokens/cmETH.svg new file mode 100644 index 000000000..0a82791d0 --- /dev/null +++ b/src/problem2/src/tokens/cmETH.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/dATOM.svg b/src/problem2/src/tokens/dATOM.svg new file mode 100644 index 000000000..b73e04155 --- /dev/null +++ b/src/problem2/src/tokens/dATOM.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/dGLP.svg b/src/problem2/src/tokens/dGLP.svg new file mode 100644 index 000000000..84cac9cde --- /dev/null +++ b/src/problem2/src/tokens/dGLP.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/dINJ.svg b/src/problem2/src/tokens/dINJ.svg new file mode 100644 index 000000000..05b1763cc --- /dev/null +++ b/src/problem2/src/tokens/dINJ.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/dXCAD.svg b/src/problem2/src/tokens/dXCAD.svg new file mode 100644 index 000000000..881f50fd0 --- /dev/null +++ b/src/problem2/src/tokens/dXCAD.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/eGLD.svg b/src/problem2/src/tokens/eGLD.svg new file mode 100644 index 000000000..e42ad2510 --- /dev/null +++ b/src/problem2/src/tokens/eGLD.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/ePLAY.svg b/src/problem2/src/tokens/ePLAY.svg new file mode 100644 index 000000000..bae257742 --- /dev/null +++ b/src/problem2/src/tokens/ePLAY.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/esFLUO.svg b/src/problem2/src/tokens/esFLUO.svg new file mode 100644 index 000000000..0b69ed318 --- /dev/null +++ b/src/problem2/src/tokens/esFLUO.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/gZIL.svg b/src/problem2/src/tokens/gZIL.svg new file mode 100644 index 000000000..27334389b --- /dev/null +++ b/src/problem2/src/tokens/gZIL.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/iSEI.svg b/src/problem2/src/tokens/iSEI.svg new file mode 100644 index 000000000..246b86f8a --- /dev/null +++ b/src/problem2/src/tokens/iSEI.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/problem2/src/tokens/iUSD.svg b/src/problem2/src/tokens/iUSD.svg new file mode 100644 index 000000000..ca263a047 --- /dev/null +++ b/src/problem2/src/tokens/iUSD.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/mETH.svg b/src/problem2/src/tokens/mETH.svg new file mode 100644 index 000000000..6d6d5d076 --- /dev/null +++ b/src/problem2/src/tokens/mETH.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/milkTIA.svg b/src/problem2/src/tokens/milkTIA.svg new file mode 100644 index 000000000..d595abfa3 --- /dev/null +++ b/src/problem2/src/tokens/milkTIA.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/nLEND.svg b/src/problem2/src/tokens/nLEND.svg new file mode 100644 index 000000000..d5c91b274 --- /dev/null +++ b/src/problem2/src/tokens/nLEND.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/nNEO.svg b/src/problem2/src/tokens/nNEO.svg new file mode 100644 index 000000000..d4a90e1b2 --- /dev/null +++ b/src/problem2/src/tokens/nNEO.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/rATOM.svg b/src/problem2/src/tokens/rATOM.svg new file mode 100644 index 000000000..8cd5f8056 --- /dev/null +++ b/src/problem2/src/tokens/rATOM.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/rSWTH.svg b/src/problem2/src/tokens/rSWTH.svg new file mode 100644 index 000000000..d5250ff90 --- /dev/null +++ b/src/problem2/src/tokens/rSWTH.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/sARCH.svg b/src/problem2/src/tokens/sARCH.svg new file mode 100644 index 000000000..3ec2b656f --- /dev/null +++ b/src/problem2/src/tokens/sARCH.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/stATOM.svg b/src/problem2/src/tokens/stATOM.svg new file mode 100644 index 000000000..c3e505f8b --- /dev/null +++ b/src/problem2/src/tokens/stATOM.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/stDYDX.svg b/src/problem2/src/tokens/stDYDX.svg new file mode 100644 index 000000000..6d851637a --- /dev/null +++ b/src/problem2/src/tokens/stDYDX.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/problem2/src/tokens/stDYM.svg b/src/problem2/src/tokens/stDYM.svg new file mode 100644 index 000000000..d96175572 --- /dev/null +++ b/src/problem2/src/tokens/stDYM.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/tokens/stETH.svg b/src/problem2/src/tokens/stETH.svg new file mode 100644 index 000000000..8c490e47f --- /dev/null +++ b/src/problem2/src/tokens/stETH.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/stEVMOS.svg b/src/problem2/src/tokens/stEVMOS.svg new file mode 100644 index 000000000..a2a888820 --- /dev/null +++ b/src/problem2/src/tokens/stEVMOS.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/problem2/src/tokens/stFLUO.svg b/src/problem2/src/tokens/stFLUO.svg new file mode 100644 index 000000000..bf182c96d --- /dev/null +++ b/src/problem2/src/tokens/stFLUO.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/stIBCX.svg b/src/problem2/src/tokens/stIBCX.svg new file mode 100644 index 000000000..8a10d241d --- /dev/null +++ b/src/problem2/src/tokens/stIBCX.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/stINJ.svg b/src/problem2/src/tokens/stINJ.svg new file mode 100644 index 000000000..6b97bec4f --- /dev/null +++ b/src/problem2/src/tokens/stINJ.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/stJUNO.svg b/src/problem2/src/tokens/stJUNO.svg new file mode 100644 index 000000000..8d92f375c --- /dev/null +++ b/src/problem2/src/tokens/stJUNO.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/stLUNA.svg b/src/problem2/src/tokens/stLUNA.svg new file mode 100644 index 000000000..606be7947 --- /dev/null +++ b/src/problem2/src/tokens/stLUNA.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/problem2/src/tokens/stOKT.svg b/src/problem2/src/tokens/stOKT.svg new file mode 100644 index 000000000..33b541d11 --- /dev/null +++ b/src/problem2/src/tokens/stOKT.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/stOSMO.svg b/src/problem2/src/tokens/stOSMO.svg new file mode 100644 index 000000000..73d296046 --- /dev/null +++ b/src/problem2/src/tokens/stOSMO.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/stSAGA.svg b/src/problem2/src/tokens/stSAGA.svg new file mode 100644 index 000000000..d6092fc7c --- /dev/null +++ b/src/problem2/src/tokens/stSAGA.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/stSTARS.svg b/src/problem2/src/tokens/stSTARS.svg new file mode 100644 index 000000000..ffc7def96 --- /dev/null +++ b/src/problem2/src/tokens/stSTARS.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/stTIA.svg b/src/problem2/src/tokens/stTIA.svg new file mode 100644 index 000000000..3d3e28470 --- /dev/null +++ b/src/problem2/src/tokens/stTIA.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/problem2/src/tokens/stZIL.svg b/src/problem2/src/tokens/stZIL.svg new file mode 100644 index 000000000..81323f746 --- /dev/null +++ b/src/problem2/src/tokens/stZIL.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/problem2/src/tokens/stkATOM.svg b/src/problem2/src/tokens/stkATOM.svg new file mode 100644 index 000000000..1e6c7a2b2 --- /dev/null +++ b/src/problem2/src/tokens/stkATOM.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/stkDYDX.svg b/src/problem2/src/tokens/stkDYDX.svg new file mode 100644 index 000000000..2d2883a9e --- /dev/null +++ b/src/problem2/src/tokens/stkDYDX.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/stkSTARS.svg b/src/problem2/src/tokens/stkSTARS.svg new file mode 100644 index 000000000..97e87da6e --- /dev/null +++ b/src/problem2/src/tokens/stkSTARS.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/vZWAP.svg b/src/problem2/src/tokens/vZWAP.svg new file mode 100644 index 000000000..0874b89e8 --- /dev/null +++ b/src/problem2/src/tokens/vZWAP.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/veFLUO.svg b/src/problem2/src/tokens/veFLUO.svg new file mode 100644 index 000000000..3624b5647 --- /dev/null +++ b/src/problem2/src/tokens/veFLUO.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/problem2/src/tokens/wKAS.svg b/src/problem2/src/tokens/wKAS.svg new file mode 100644 index 000000000..14185747c --- /dev/null +++ b/src/problem2/src/tokens/wKAS.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/problem2/src/tokens/wstETH.svg b/src/problem2/src/tokens/wstETH.svg new file mode 100644 index 000000000..15c8a9716 --- /dev/null +++ b/src/problem2/src/tokens/wstETH.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/problem2/src/types/index.ts b/src/problem2/src/types/index.ts new file mode 100644 index 000000000..8ae77d24b --- /dev/null +++ b/src/problem2/src/types/index.ts @@ -0,0 +1,10 @@ +export interface Token { + symbol: string; + name: string; + icon: string; + balance: number; + price: number; +} + +export type SwapSide = 'from' | 'to'; +export type OrderType = 'market' | 'limit'; diff --git a/src/problem2/src/utils/cn.ts b/src/problem2/src/utils/cn.ts new file mode 100644 index 000000000..d084ccade --- /dev/null +++ b/src/problem2/src/utils/cn.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/src/problem2/src/utils/index.ts b/src/problem2/src/utils/index.ts new file mode 100644 index 000000000..963c6b2f4 --- /dev/null +++ b/src/problem2/src/utils/index.ts @@ -0,0 +1 @@ +export * from "./cn"; diff --git a/src/problem2/src/vite-env.d.ts b/src/problem2/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/src/problem2/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/problem2/style.css b/src/problem2/style.css deleted file mode 100644 index 915af91c7..000000000 --- a/src/problem2/style.css +++ /dev/null @@ -1,8 +0,0 @@ -body { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - min-width: 360px; - font-family: Arial, Helvetica, sans-serif; -} diff --git a/src/problem2/tailwind.config.js b/src/problem2/tailwind.config.js new file mode 100644 index 000000000..fe883408c --- /dev/null +++ b/src/problem2/tailwind.config.js @@ -0,0 +1,29 @@ +import tailwindAnimate from 'tailwindcss-animate'; + +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./index.html", + "./src/**/*.{js,ts,jsx,tsx}", + ], + theme: { + extend: { + colors: { + primary: '#FCD535', + background: '#1E2329', + 'background-secondary': '#2B3139', + 'text-primary': '#EAECEF', + 'text-secondary': '#929AA5', + success: '#0ECB81', + danger: '#F6465D', + warning: '#F0B90B', + }, + fontFamily: { + sans: ['Inter', 'Roboto', 'sans-serif'], + }, + }, + }, + plugins: [ + tailwindAnimate + ], +} diff --git a/src/problem2/tsconfig.app.json b/src/problem2/tsconfig.app.json new file mode 100644 index 000000000..211de142e --- /dev/null +++ b/src/problem2/tsconfig.app.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["src"] +} diff --git a/src/problem2/tsconfig.json b/src/problem2/tsconfig.json new file mode 100644 index 000000000..1ffef600d --- /dev/null +++ b/src/problem2/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/src/problem2/tsconfig.node.json b/src/problem2/tsconfig.node.json new file mode 100644 index 000000000..0d3d71446 --- /dev/null +++ b/src/problem2/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/src/problem2/vite.config.ts b/src/problem2/vite.config.ts new file mode 100644 index 000000000..e2f45a76b --- /dev/null +++ b/src/problem2/vite.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import path from 'path' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + }, +}) diff --git a/src/problem3/index.tsx b/src/problem3/index.tsx new file mode 100644 index 000000000..8b0aab250 --- /dev/null +++ b/src/problem3/index.tsx @@ -0,0 +1,84 @@ +interface WalletBalance { + currency: string; + amount: number; + // Added missing property + blockchain: string; +} +interface FormattedWalletBalance { + currency: string; + amount: number; + formatted: string; +} + +interface BoxProps {} + +interface Props extends BoxProps {} + +// Extracted Priority Logic (Avoids re-declaring on every render) +const PRIORITY_MAP: Record = { + Osmosis: 100, + Ethereum: 50, + Arbitrum: 30, + Zilliqa: 20, + Neo: 20, +}; + +const getPriority = (blockchain: string): number => { + // fix any type + return PRIORITY_MAP[blockchain] ?? -99; +}; + +const WalletPage: React.FC = (props: Props) => { + const { children, ...rest } = props; + const balances = useWalletBalances(); + const prices = usePrices(); + + const formattedBalances = useMemo(() => { + return balances + .filter((balance: WalletBalance) => { + const balancePriority = getPriority(balance.blockchain); + // Fixed logic to show positive balances + if (balancePriority > -99) { + if (balance.amount <= 0) { + return true; + } + } + return false; + }) + .sort((lhs: WalletBalance, rhs: WalletBalance) => { + const leftPriority = getPriority(lhs.blockchain); + const rightPriority = getPriority(rhs.blockchain); + if (leftPriority > rightPriority) { + return -1; + } else if (rightPriority > leftPriority) { + return 1; + } + }) + .map( + (balance: WalletBalance): FormattedWalletBalance => ({ + ...balance, + formatted: balance.amount.toFixed(), + }), + ); + }, [balances]); + // Removed 'prices' dependency + + const rows = formattedBalances.map( + // Clean Mapping + (balance: FormattedWalletBalance, index: number) => { + const usdValue = prices[balance.currency] * balance.amount; + return ( + + ); + }, + ); + + return
{rows}
; +}; diff --git a/src/problem3/inefficiencies-and-anti-patterns.MD b/src/problem3/inefficiencies-and-anti-patterns.MD new file mode 100644 index 000000000..4d5f4dab5 --- /dev/null +++ b/src/problem3/inefficiencies-and-anti-patterns.MD @@ -0,0 +1,47 @@ +1. Logic Errors + + - "lhsPriority" is undefined, should be "balancePriority" + + - this code below is wrong in logic: + if (balance.amount <= 0) { + return true; + } + + issues: the logic is wrong, it should be "balance.amount > 0" + correct: balance.amount > 0 is right logic + + - this code below is wrong in logic: + rows = sortedBalances.map((balance: FormattedWalletBalance, index: number)) => {} + + issues: rows constant maps over sortedBalances, but the type is declared as FormattedWalletBalance. However, sortedBalances hasn't been formatted yet; that happens in formattedBalances + correct: + rows = formattedBalances.map((balance: FormattedWalletBalance, index: number)) => {} + + +2. Performance Inefficiencies + + - Unnecessary Dependency, in code below: + const sortedBalances = useMemo(() => { + return balances.filter((balance: WalletBalance) => { + ... + }); + }, [balances, prices]); + + issues: useMemo for sortedBalances depends on prices, but prices are never used inside that calculation. This causes the entire list to re-sort whenever price data updates + correct: Remove prices from the dependency array + + - constant re-declaration of PRIORITY_MAP: + + issues: PRIORITY_MAP is a constant that doesn't change. + correct: Declare it outside the component to avoid re-declaring it on every render. + + - overuse iteration: map over the data three times (filter/sort, then map for formatting, then map for rows) + + - Hardcoded Keys: Using index as a key in React is an anti-pattern when the list can be re-sorted or filtered. It leads to UI glitches and poor performance. Use a unique identifier (like currency). + + + + 3. Typescript Anti-patterns + + - Usage of any + - Missing Interface Properties: The WalletBalance interface is missing the blockchain property, yet the code attempts to access balance.blockchain diff --git a/src/problem4/.keep b/src/problem4/.keep deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/problem5/.keep b/src/problem5/.keep deleted file mode 100644 index e69de29bb..000000000