diff --git a/README.md b/README.md index 0d4096eb..11dba392 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ | [Contract Deployer](./contract-deployer/) | [Demo](https://contract-deployer-template.mintbase.xyz/) | | [Minter](./minter/) | [Demo](https://minter.mintbase.xyz/) | | [Minsta](https://github.com/Mintbase/minsta) | [Demo](https://minsta.mintbase.xyz/) | +| [Multi-Event Minsta](https://github.com/armsves/ethBerlin04) | [Demo](https://eth-berlin04.vercel.app/) | | [Marketplace](./marketplace/) | [Demo](https://marketplace-template.mintbase.xyz/) | | [NFT Stripe Checkout](./nft-stripe-checkout/) | [Demo](https://nft-stripe-checkout.mintbase.xyz/) | [Token Drop](./simple-token-drop) | [Demo](https://token-drop-template.mintbase.xyz/) | diff --git a/minsta/.env.example b/minsta/.env.example new file mode 100644 index 00000000..806e6871 --- /dev/null +++ b/minsta/.env.example @@ -0,0 +1,48 @@ +#SETUP +NEXT_PUBLIC_MINTING_CLOSED="false" +NEXT_PUBLIC_SHOW_REWARDS="true" +NEXT_PUBLIC_BASE_URL="https://testnet.mintbase.xyz" +NEXT_PUBLIC_MINTBASE_WALLET_URL="https://testnet.wallet.mintbase.xyz" +NEXT_PUBLIC_NFT_CONTRACT_ADDRESS="minsta.mintspace2.testnet" +NEXT_PUBLIC_PROXY_MINTER_CONTRACT_ADDRESS="1.minsta.mintbus.testnet" +NEXT_PUBLIC_LEGACY_PROXY_ADDRESSES="1.minsta.mintbus.testnet" +NEXT_PUBLIC_NETWORK="testnet" +NEXT_PUBLIC_APP_TITLE="Minsta Mintbase" +REPLICATE_API_TOKEN="REPLICATE_API_TOKEN" + +# META +NEXT_PUBLIC_META_DESCRIPTION="Share your best moments with Mintbase and Minsta!" +NEXT_PUBLIC_META_TITLE="Mint moments on Mintbase" +NEXT_PUBLIC_TWITTER="Exploring%20unforgettable%20moments%20at%20%23Mintbase%20%40Mintbase%20%40NEARProtocol%20%23BOS%20%23NEAR%0aMint%20yours%20here%3A%20https%3A%2F%2Fminsta.mintbase.xyz" +NEXT_PUBLIC_META_IMAGE="./images/thumbnail.png" + +# COLORS +COLOR_PRIMARY=F3F4F8 +COLOR_SECONDARY=000 +COLOR_MAIN_BACKGROUND=FFFFFF +COLOR_GRADONE=4472ad +COLOR_GRADTWO=009dea +COLOR_CARDONE=E8EAF0 +COLOR_CARDTWO=049BE8 +COLOR_LINKCOLOR=4f58a3 +COLOR_ICON=4B9CE3 +COLOR_CAMERA=FFFFFF +COLOR_MODAL_TEXT=000000 +COLOR_LEADERBOARD_TEXT=000000 +COLOR_HEADER_TEXT=000000 +COLOR_MAIN_TEXT=000000 +COLOR_FREE_USE_TEXT=0A7D6C +COLOR_PRIMARY_BTN_TEXT=000000 +COLOR_SECONDARY_BTN_TEXT=000000 + +# TEXTS +NEXT_PUBLIC_TEXT_PRIZE_1ST_VAL="10N" +NEXT_PUBLIC_TEXT_PRIZE_2ND_VAL="5N" +NEXT_PUBLIC_TEXT_PRIZE_3RD_VAL="5N" +NEXT_PUBLIC_TEXT_PRIZE_1ST_TITLE="Top 10 on the Leaderboard" +NEXT_PUBLIC_TEXT_PRIZE_2ND_TITLE="Top 11-20 on the Leaderboard" +NEXT_PUBLIC_TEXT_PRIZE_3RD_TITLE="Most liked tweet with the hashtag MINSTA" + +NEXT_PUBLIC_TEXT_ABOUT_1ST="Take a picture" +NEXT_PUBLIC_TEXT_ABOUT_2ND="Upload and it will mint as an NFT" +NEXT_PUBLIC_TEXT_ABOUT_3RD="Climb up the Leaderboard by minting" diff --git a/minsta/.env.mainnet.example b/minsta/.env.mainnet.example new file mode 100644 index 00000000..432b959b --- /dev/null +++ b/minsta/.env.mainnet.example @@ -0,0 +1,45 @@ +#SETUP +NEXT_PUBLIC_MINTING_CLOSED="false" +NEXT_PUBLIC_SHOW_REWARDS="true" +NEXT_PUBLIC_BASE_URL="https://mintbase.xyz" +NEXT_PUBLIC_MINTBASE_WALLET_URL="https://wallet.mintbase.xyz" +NEXT_PUBLIC_NFT_CONTRACT_ADDRESS="moments.mintbase1.near" +NEXT_PUBLIC_PROXY_MINTER_CONTRACT_ADDRESS="1.minsta.mintbus.near" +NEXT_PUBLIC_LEGACY_MINTER_ADDRESSES="1.minsta.mintbus.near" +NEXT_PUBLIC_NETWORK="mainnet" +NEXT_PUBLIC_APP_TITLE="Your Name" +REPLICATE_API_TOKEN="REPLICATE_API_TOKEN" + +# META +NEXT_PUBLIC_META_DESCRIPTION="Share your best moments with Mintbase and Minsta!" +NEXT_PUBLIC_META_TITLE="Mint moments on Mintbase" +NEXT_PUBLIC_TWITTER="Exploring%20unforgettable%20moments%20at%20%23Mintbase%20%40Mintbase%20%40NEARProtocol%20%23BOS%20%23NEAR%0aMint%20yours%20here%3A%20https%3A%2F%2Fminsta.mintbase.xyz" +NEXT_PUBLIC_META_IMAGE="./images/thumbnail.png" + +# COLORS +COLOR_PRIMARY=F3F4F8 +COLOR_SECONDARY=000 +COLOR_MAIN_BACKGROUND=FFFFFF +COLOR_GRADONE=4472ad +COLOR_GRADTWO=009dea +COLOR_CARDONE=E8EAF0 +COLOR_CARDTWO=049BE8 +COLOR_LINKCOLOR=4f58a3 +COLOR_ICON=4B9CE3 +COLOR_CAMERA=FFFFFF +COLOR_MODAL_TEXT=000000 +COLOR_LEADERBOARD_TEXT=000000 +COLOR_HEADER_TEXT=000000 +COLOR_MAIN_TEXT=000000 + +# TEXTS +NEXT_PUBLIC_TEXT_PRIZE_1ST_VAL="10N" +NEXT_PUBLIC_TEXT_PRIZE_2ND_VAL="5N" +NEXT_PUBLIC_TEXT_PRIZE_3RD_VAL="5N" +NEXT_PUBLIC_TEXT_PRIZE_1ST_TITLE="Top 10 on the Leaderboard" +NEXT_PUBLIC_TEXT_PRIZE_2ND_TITLE="Top 11-20 on the Leaderboard" +NEXT_PUBLIC_TEXT_PRIZE_3RD_TITLE="Most liked tweet with the hashtag MINSTA" + +NEXT_PUBLIC_TEXT_ABOUT_1ST="Take a picture" +NEXT_PUBLIC_TEXT_ABOUT_2ND="Upload and it will mint as an NFT" +NEXT_PUBLIC_TEXT_ABOUT_3RD="Climb up the Leaderboard by minting" diff --git a/minsta/.eslintrc.json b/minsta/.eslintrc.json new file mode 100644 index 00000000..bffb357a --- /dev/null +++ b/minsta/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/minsta/.gitignore b/minsta/.gitignore new file mode 100644 index 00000000..62190d77 --- /dev/null +++ b/minsta/.gitignore @@ -0,0 +1,37 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +.env \ No newline at end of file diff --git a/minsta/README.md b/minsta/README.md new file mode 100644 index 00000000..00f6b1cc --- /dev/null +++ b/minsta/README.md @@ -0,0 +1,17 @@ +# Hackaton Center @ EthBerlin04 - Powered by dRPC + +### The problem Hackaton Center - Powered by dRPC solves + +We wanted to create a cool collectible for hackaton enthusiasts that would evolve as they collect the Hackaton Poap's (QR for simplicity of the MVP) +Each hackaton will have a POAP (QR for simplicity of the MVP) that will redirect to mint the NFT, if you have already have an NFT minted it will raise your level and evolve your NFT giving you a nice collectible NFT as a prize. + +### Challenges you ran into +Some problems with the connection of the contract to the frontend since the contract is v2 and the utils are not updated yet we had to manually update and import some parts of the updated code. + +### Technology used +Rust for the contract +React for frontend +Mintbase-Js minsta template for starter + +install by pnpm install +run locally with pnpm run dev \ No newline at end of file diff --git a/minsta/generate-css.js b/minsta/generate-css.js new file mode 100644 index 00000000..c15b0fb8 --- /dev/null +++ b/minsta/generate-css.js @@ -0,0 +1,100 @@ +// generate-css.js +const fs = require("fs"); +const path = require("path"); +require("dotenv").config(); // Load environment variables from .env file + +const colors = { + primary: process.env.COLOR_PRIMARY || "F3F4F8", + secondary: process.env.COLOR_SECONDARY || "000", + mainBg: process.env.COLOR_MAIN_BACKGROUND || "fdfaa7", + gradOne: process.env.COLOR_GRADONE || "4472ad", + gradTwo: process.env.COLOR_GRADTWO || "009dea", + cardOne: process.env.COLOR_CARDONE || "E8EAF0", + cardTwo: process.env.COLOR_CARDTWO || "049BE8", + linkColor: process.env.COLOR_LINKCOLOR || "4f58a3", + icon: process.env.COLOR_ICON || "4B9CE3", + camera: process.env.COLOR_CAMERA || "FFFFFF", + modalText: process.env.COLOR_MODAL_TEXT || "000000", + leaderboardText: process.env.COLOR_LEADERBOARD_TEXT || "000000", + headerText: process.env.COLOR_HEADER_TEXT || "000000", + mainText: process.env.COLOR_MAIN_TEXT || "000000", + freeUseText: process.env.COLOR_FREE_USE_TEXT || "0A7D6C", + primaryBtnText: process.env.COLOR_PRIMARY_BTN_TEXT || "FFFFFF", + secondaryBtnText: process.env.COLOR_SECONDARY_BTN_TEXT || "000000", + lightBlue: process.env.COLOR_LIGHT_BLUE || "50b0d9", +}; + +const css = ` + + +.nws-modal-wrapper .nws-modal { + height: auto !important; +} + +.nws-modal-wrapper .nws-modal .modal-right { + display: none !important; +} + +.nws-modal-wrapper .nws-modal .modal-left { + width: 100%; + border-right: 1px solid + var(--wallet-selector-sidebar-border-color, var(--sidebar-border-color)); + padding: 32px 24px; + height: 100%; + overflow: auto; + text-align: center; +} +.nws-modal-wrapper .nws-modal { + height: 215px; +} +.wallet-options-wrapper { + width: 100%; + display: flex; + justify-items: center; + align-items: center; + justify-content: center; +} +.nws-modal-wrapper .nws-modal > .modal-left > div:nth-child(2) { + display: flex; + justify-items: center; + text-align: center; + width: 100%; +} + +.nws-modal-wrapper + .modal-left + .wallet-options-wrapper + .options-list-section + .options-list-section-header { + display: none; +} + + + +:root { + --primary: #${colors.primary}; + --secondary: #${colors.secondary}; + --mainBg: #${colors.mainBg}; + --gradOne: #${colors.gradOne}; + --gradTwo: #${colors.gradTwo}; + --cardOne: #${colors.cardOne}; + --cardTwo: #${colors.cardTwo}; + --linkColor: #${colors.linkColor}; + --icon: #${colors.icon}; + --camera: #${colors.camera}; + --modalText: #${colors.modalText}; + --leaderboardText: #${colors.leaderboardText}; + --headerText: #${colors.headerText}; + --mainText: #${colors.mainText}; + --freeUseText: #${colors.freeUseText}; + --bgFreeUse: #${colors.freeUseText}1A; + --primaryBtnText: #${colors.primaryBtnText}; + --secondaryBtnText: #${colors.secondaryBtnText}; + --lightBlue: #${colors.lightBlue}; + }`; + +const outputPath = path.resolve(__dirname, "src/style/global.css"); + +fs.writeFileSync(outputPath, css); + +console.log(`CSS file generated at: ${outputPath}`); diff --git a/minsta/next.config.js b/minsta/next.config.js new file mode 100644 index 00000000..33aff792 --- /dev/null +++ b/minsta/next.config.js @@ -0,0 +1,15 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + images: { domains: ["arweave.net", 'image-cache-service-z3w7d7dnea-ew.a.run.app'] }, + webpack(config) { + // eslint-disable-next-line no-param-reassign + config.resolve.fallback = { + ...config.resolve.fallback, + fs: false, // https://stackoverflow.com/a/67478653/470749 + }; + + return config; + }, +}; + +module.exports = nextConfig; diff --git a/minsta/package.json b/minsta/package.json new file mode 100644 index 00000000..c4c02c85 --- /dev/null +++ b/minsta/package.json @@ -0,0 +1,67 @@ +{ + "name": "Mintbase-Templates-Minsta", + "keywords": [ + "templates", + "mintbase", + "web3", + "nextjs", + "react", + "selfie", + "minting" + ], + "repository": "https://github.com/mintbase/minsta.git", + "homepage": "https;//templates.mintbase.xyz/minsta", + "author": "Mintbase Team ", + "version": "0.1.0", + "private": true, + "scripts": { + "build:css": "node generate-css.js", + "build": "pnpm run build:css && next build", + "dev:css": "node generate-css.js && next dev", + "dev": "pnpm run dev:css", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.5.2", + "@fortawesome/free-brands-svg-icons": "^6.5.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "@mintbase-js/auth": "0.6.0-beta.5", + "@mintbase-js/react": "0.6.0-beta.5", + "@mintbase-js/rpc": "0.6.0-beta.5", + "@mintbase-js/sdk": "0.6.0-beta.5", + "@mintbase-js/storage": "0.6.0-beta.5", + "@near-wallet-selector/modal-ui": "^8.2.1", + "@tanstack/react-query": "^4.35.3", + "@types/react": "18.2.20", + "@types/react-dom": "18.2.7", + "@typescript-eslint/eslint-plugin": "^7.10.0", + "autoprefixer": "10.4.14", + "cross-fetch": "^4.0.0", + "data-uri-to-buffer": "^5.0.1", + "dotenv": "^16.3.1", + "eslint": "8.46.0", + "eslint-config-next": "13.4.13", + "framer-motion": "^10.16.4", + "graphql": "^16.7.1", + "graphql-request": "^6.1.0", + "isomorphic-unfetch": "^3.1.0", + "lodash": "^4.17.21", + "near-api-js": "2.1.4", + "next": "13.4.13", + "postcss": "8.4.27", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-hot-toast": "^2.4.1", + "react-inlinesvg": "^4.0.4", + "react-webcam": "^7.1.1", + "tailwindcss": "3.3.3", + "typescript": "5.1.6", + "usehooks-ts": "^2.9.1" + }, + "devDependencies": { + "@types/lodash": "^4.14.197", + "@types/node": "20.4.9", + "encoding": "^0.1.13" + } +} diff --git a/minsta/pnpm-lock.yaml b/minsta/pnpm-lock.yaml new file mode 100644 index 00000000..7dd854f2 --- /dev/null +++ b/minsta/pnpm-lock.yaml @@ -0,0 +1,5549 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@fortawesome/fontawesome-svg-core': + specifier: ^6.5.2 + version: 6.5.2 + '@fortawesome/free-brands-svg-icons': + specifier: ^6.5.2 + version: 6.5.2 + '@fortawesome/react-fontawesome': + specifier: ^0.2.2 + version: 0.2.2(@fortawesome/fontawesome-svg-core@6.5.2)(react@18.2.0) + '@mintbase-js/auth': + specifier: 0.6.0-beta.5 + version: 0.6.0-beta.5(@types/react@18.2.20)(borsh@0.7.0)(encoding@0.1.13)(isomorphic-textencoder@1.0.1)(near-api-js@2.1.4)(react@18.2.0)(typescript@5.1.6) + '@mintbase-js/react': + specifier: 0.6.0-beta.5 + version: 0.6.0-beta.5(borsh@0.7.0)(near-api-js@2.1.4) + '@mintbase-js/rpc': + specifier: 0.6.0-beta.5 + version: 0.6.0-beta.5(encoding@0.1.13) + '@mintbase-js/sdk': + specifier: 0.6.0-beta.5 + version: 0.6.0-beta.5(encoding@0.1.13) + '@mintbase-js/storage': + specifier: 0.6.0-beta.5 + version: 0.6.0-beta.5(encoding@0.1.13) + '@near-wallet-selector/modal-ui': + specifier: ^8.2.1 + version: 8.9.7(near-api-js@2.1.4) + '@tanstack/react-query': + specifier: ^4.35.3 + version: 4.36.1(react-dom@18.2.0)(react@18.2.0) + '@types/react': + specifier: 18.2.20 + version: 18.2.20 + '@types/react-dom': + specifier: 18.2.7 + version: 18.2.7 + '@typescript-eslint/eslint-plugin': + specifier: ^7.10.0 + version: 7.10.0(@typescript-eslint/parser@7.10.0)(eslint@8.46.0)(typescript@5.1.6) + autoprefixer: + specifier: 10.4.14 + version: 10.4.14(postcss@8.4.27) + cross-fetch: + specifier: ^4.0.0 + version: 4.0.0(encoding@0.1.13) + data-uri-to-buffer: + specifier: ^5.0.1 + version: 5.0.1 + dotenv: + specifier: ^16.3.1 + version: 16.4.5 + eslint: + specifier: 8.46.0 + version: 8.46.0 + eslint-config-next: + specifier: 13.4.13 + version: 13.4.13(eslint@8.46.0)(typescript@5.1.6) + framer-motion: + specifier: ^10.16.4 + version: 10.18.0(react-dom@18.2.0)(react@18.2.0) + graphql: + specifier: ^16.7.1 + version: 16.8.1 + graphql-request: + specifier: ^6.1.0 + version: 6.1.0(encoding@0.1.13)(graphql@16.8.1) + isomorphic-unfetch: + specifier: ^3.1.0 + version: 3.1.0(encoding@0.1.13) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + near-api-js: + specifier: 2.1.4 + version: 2.1.4(encoding@0.1.13) + next: + specifier: 13.4.13 + version: 13.4.13(react-dom@18.2.0)(react@18.2.0) + postcss: + specifier: 8.4.27 + version: 8.4.27 + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-hot-toast: + specifier: ^2.4.1 + version: 2.4.1(csstype@3.1.3)(react-dom@18.2.0)(react@18.2.0) + react-inlinesvg: + specifier: ^4.0.4 + version: 4.1.3(react@18.2.0) + react-webcam: + specifier: ^7.1.1 + version: 7.2.0(react-dom@18.2.0)(react@18.2.0) + tailwindcss: + specifier: 3.3.3 + version: 3.3.3 + typescript: + specifier: 5.1.6 + version: 5.1.6 + usehooks-ts: + specifier: ^2.9.1 + version: 2.16.0(react@18.2.0) + +devDependencies: + '@types/lodash': + specifier: ^4.14.197 + version: 4.17.4 + '@types/node': + specifier: 20.4.9 + version: 20.4.9 + encoding: + specifier: ^0.1.13 + version: 0.1.13 + +packages: + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: false + + /@babel/runtime@7.24.6: + resolution: {integrity: sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + + /@emotion/is-prop-valid@0.8.8: + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + requiresBuild: true + dependencies: + '@emotion/memoize': 0.7.4 + dev: false + optional: true + + /@emotion/memoize@0.7.4: + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + requiresBuild: true + dev: false + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.46.0 + eslint-visitor-keys: 3.4.3 + dev: false + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@fortawesome/fontawesome-common-types@6.5.2: + resolution: {integrity: sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==} + engines: {node: '>=6'} + requiresBuild: true + dev: false + + /@fortawesome/fontawesome-svg-core@6.5.2: + resolution: {integrity: sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 6.5.2 + dev: false + + /@fortawesome/free-brands-svg-icons@6.5.2: + resolution: {integrity: sha512-zi5FNYdmKLnEc0jc0uuHH17kz/hfYTg4Uei0wMGzcoCL/4d3WM3u1VMc0iGGa31HuhV5i7ZK8ZlTCQrHqRHSGQ==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 6.5.2 + dev: false + + /@fortawesome/react-fontawesome@0.2.2(@fortawesome/fontawesome-svg-core@6.5.2)(react@18.2.0): + resolution: {integrity: sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==} + peerDependencies: + '@fortawesome/fontawesome-svg-core': ~1 || ~6 + react: '>=16.3' + dependencies: + '@fortawesome/fontawesome-svg-core': 6.5.2 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.8.1 + dev: false + + /@here-wallet/core@1.5.1(bn.js@5.2.1)(borsh@0.7.0)(near-api-js@2.1.4): + resolution: {integrity: sha512-gCzB27k0QfviyJQUhxqX3kAH3g3mRHb6B5RJdUhX9tTsLlPW6AMV/PJiYBudPCt0EeyeyU4i8kEh223ACHXOjw==} + peerDependencies: + bn.js: 5.2.1 + borsh: 0.7.0 + near-api-js: ^2.1.1 + dependencies: + bn.js: 5.2.1 + borsh: 0.7.0 + near-api-js: 2.1.4(encoding@0.1.13) + sha1: 1.1.1 + uuid4: 2.0.3 + dev: false + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: false + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + dev: false + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: false + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: false + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: false + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: false + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + + /@ledgerhq/devices@6.27.1: + resolution: {integrity: sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ==} + dependencies: + '@ledgerhq/errors': 6.16.4 + '@ledgerhq/logs': 6.12.0 + rxjs: 6.6.7 + semver: 7.6.2 + dev: false + + /@ledgerhq/errors@6.16.4: + resolution: {integrity: sha512-M57yFaLYSN+fZCX0E0zUqOmrV6eipK+s5RhijHoUNlHUqrsvUz7iRQgpd5gRgHB5VkIjav7KdaZjKiWGcHovaQ==} + dev: false + + /@ledgerhq/hw-transport-webhid@6.27.1: + resolution: {integrity: sha512-u74rBYlibpbyGblSn74fRs2pMM19gEAkYhfVibq0RE1GNFjxDMFC1n7Sb+93Jqmz8flyfB4UFJsxs8/l1tm2Kw==} + dependencies: + '@ledgerhq/devices': 6.27.1 + '@ledgerhq/errors': 6.16.4 + '@ledgerhq/hw-transport': 6.27.1 + '@ledgerhq/logs': 6.12.0 + dev: false + + /@ledgerhq/hw-transport@6.27.1: + resolution: {integrity: sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ==} + dependencies: + '@ledgerhq/devices': 6.27.1 + '@ledgerhq/errors': 6.16.4 + events: 3.3.0 + dev: false + + /@ledgerhq/logs@6.12.0: + resolution: {integrity: sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA==} + dev: false + + /@lit-labs/ssr-dom-shim@1.2.0: + resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + dev: false + + /@lit/reactive-element@1.6.3: + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + dev: false + + /@meteorwallet/sdk@1.0.9(near-api-js@2.1.4): + resolution: {integrity: sha512-frJM+rwmx18MCVsfHn0O8oaJfB41BqaXW6cyhZ3EtMw3b87DUJyfSuJi9K0HQl7oGG0+wvMZOKRBVVcMiZzoDg==} + peerDependencies: + near-api-js: ^2.0.0 + dependencies: + borsh: 0.7.0 + nanoid: 3.3.6 + near-api-js: 2.1.4(encoding@0.1.13) + query-string: 7.1.3 + dev: false + + /@mintbase-js/auth@0.6.0-beta.5(@types/react@18.2.20)(borsh@0.7.0)(encoding@0.1.13)(isomorphic-textencoder@1.0.1)(near-api-js@2.1.4)(react@18.2.0)(typescript@5.1.6): + resolution: {integrity: sha512-6A8yvbWQCEia91+J0dLWa+Gp1olJz7hJbaSwFGb8WoEWXZ+5Mv1DK9yI5fHIB0lEo6VEjJsIGyjBish9UB8Mkg==} + peerDependencies: + isomorphic-textencoder: ^1.0.1 + dependencies: + '@mintbase-js/sdk': 0.5.2-beta.0(encoding@0.1.13) + '@mintbase-js/wallet': 0.5.2-beta.0(encoding@0.1.13) + '@near-wallet-selector/core': 8.9.3(near-api-js@2.1.4) + '@near-wallet-selector/here-wallet': 8.9.3(borsh@0.7.0)(near-api-js@2.1.4) + '@near-wallet-selector/ledger': 8.9.3(near-api-js@2.1.4)(typescript@5.1.6) + '@near-wallet-selector/meteor-wallet': 8.9.3(near-api-js@2.1.4) + '@near-wallet-selector/modal-ui': 8.9.3(near-api-js@2.1.4) + '@near-wallet-selector/my-near-wallet': 8.9.3(near-api-js@2.1.4) + '@near-wallet-selector/wallet-connect': 8.9.3(@types/react@18.2.20)(encoding@0.1.13)(near-api-js@2.1.4)(react@18.2.0) + bs58: 5.0.0 + isomorphic-textencoder: 1.0.1 + js-sha256: 0.9.0 + rxjs: 7.8.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - borsh + - bufferutil + - encoding + - ioredis + - near-api-js + - react + - typescript + - uWebSockets.js + - utf-8-validate + dev: false + + /@mintbase-js/react@0.6.0-beta.5(borsh@0.7.0)(near-api-js@2.1.4): + resolution: {integrity: sha512-i+3ln2nJQ3WG5805oS7ZO5pgixWwbb9PWRxGwagy7A4HY5+I0yZ8sTquQTgI48lCtZAcphj2wDnAeC67S/9ImQ==} + dependencies: + '@mintbase-js/wallet': 0.6.0-beta.3(near-api-js@2.1.4) + '@near-wallet-selector/core': 8.9.3(near-api-js@2.1.4) + '@near-wallet-selector/here-wallet': 8.9.3(borsh@0.7.0)(near-api-js@2.1.4) + '@near-wallet-selector/meteor-wallet': 8.9.3(near-api-js@2.1.4) + '@near-wallet-selector/modal-ui': 8.9.3(near-api-js@2.1.4) + '@near-wallet-selector/my-near-wallet': 8.9.3(near-api-js@2.1.4) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - borsh + - near-api-js + dev: false + + /@mintbase-js/rpc@0.6.0-beta.5(encoding@0.1.13): + resolution: {integrity: sha512-btNkGonsutoXl7OVLvHlVgChLwpoAs1EA+NrTDMedHsEliOahDOsIVQkyRKWBJTwDMoJ3qzEw7AL4MYKitn5jQ==} + dependencies: + '@mintbase-js/sdk': 0.5.6-rpc-fix-1aec566.0(encoding@0.1.13) + '@types/node': 18.11.9 + bn.js: 5.2.1 + cross-fetch: 4.0.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /@mintbase-js/sdk@0.5.2-beta.0(encoding@0.1.13): + resolution: {integrity: sha512-Jo8OWlYkZFQoO40I9FCbLGRJG1xW+kkMkF+fvqrS7IrxsCZ2j8TZeZOArPALsDtX4S5ltcCQczjBVQWj0ub1DA==} + dependencies: + bn.js: 5.2.1 + near-api-js: 2.1.4(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /@mintbase-js/sdk@0.5.6-rpc-fix-1aec566.0(encoding@0.1.13): + resolution: {integrity: sha512-emp3LcFB1wjl5wcNERNfPgfaZGumKlu/mRnzAc8DigXWqW7QoIDzq3M2CvZBO1xklUPU22qGQ89ByvDxmI6kPw==} + dependencies: + bn.js: 5.2.1 + near-api-js: 2.1.4(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /@mintbase-js/sdk@0.6.0-beta.5(encoding@0.1.13): + resolution: {integrity: sha512-0wKHY87p8kntcuiOjJI+vi6ibvDMFRQwTP5qdL3vhdXTHp9NBAv99u2fPsOenNF6QxdKPXRZkhyGWEEHGRVDsw==} + dependencies: + bn.js: 5.2.1 + near-api-js: 2.1.4(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /@mintbase-js/storage@0.6.0-beta.5(encoding@0.1.13): + resolution: {integrity: sha512-IaU9HTak4KhziizWxaB4k83boCteNdfujQ93jkxaLxCoDOcvjRs70gyjPEwZmZFB2XvVRRlAWaU6/rC1M7dr0A==} + dependencies: + '@mintbase-js/sdk': 0.5.2-beta.0(encoding@0.1.13) + form-data: 4.0.0 + near-api-js: 2.1.4(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /@mintbase-js/wallet@0.5.2-beta.0(encoding@0.1.13): + resolution: {integrity: sha512-8byHdddYMTn/QbrTV9Nhk7HocDSPxuye30W3e3TitgR8PvWXiY/mnj0QstiV9Cb+82dssH5vSrNQ1cUPet7xPw==} + dependencies: + '@near-wallet-selector/core': 8.9.3(near-api-js@2.1.4) + bn.js: 5.2.1 + near-api-js: 2.1.4(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /@mintbase-js/wallet@0.6.0-beta.3(near-api-js@2.1.4): + resolution: {integrity: sha512-fzkqS3LDnSHB4YG0ync8JRuv+xQlMOzcu0btpAN8SC1hZNGUak0BTXBiNxKZQTeuH/DL+6ghh+t9VzJknOorhA==} + peerDependencies: + near-api-js: ^2.0.0 + dependencies: + '@near-wallet-selector/core': 8.9.5(near-api-js@2.1.4) + '@near-wallet-selector/wallet-utils': 8.9.7(near-api-js@2.1.4) + bn.js: 5.2.1 + near-api-js: 2.1.4(encoding@0.1.13) + dev: false + + /@motionone/animation@10.17.0: + resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} + dependencies: + '@motionone/easing': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + tslib: 2.6.2 + dev: false + + /@motionone/dom@10.17.0: + resolution: {integrity: sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==} + dependencies: + '@motionone/animation': 10.17.0 + '@motionone/generators': 10.17.0 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + hey-listen: 1.0.8 + tslib: 2.6.2 + dev: false + + /@motionone/easing@10.17.0: + resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} + dependencies: + '@motionone/utils': 10.17.0 + tslib: 2.6.2 + dev: false + + /@motionone/generators@10.17.0: + resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} + dependencies: + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + tslib: 2.6.2 + dev: false + + /@motionone/svelte@10.16.4: + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + dependencies: + '@motionone/dom': 10.17.0 + tslib: 2.6.2 + dev: false + + /@motionone/types@10.17.0: + resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} + dev: false + + /@motionone/utils@10.17.0: + resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} + dependencies: + '@motionone/types': 10.17.0 + hey-listen: 1.0.8 + tslib: 2.6.2 + dev: false + + /@motionone/vue@10.16.4: + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} + deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + dependencies: + '@motionone/dom': 10.17.0 + tslib: 2.6.2 + dev: false + + /@near-js/accounts@0.1.4(encoding@0.1.13): + resolution: {integrity: sha512-zHFmL4OUZ4qHXOE+dDBkYgTNHLWC5RmYUVp9LiuGciO5zFPp7WlxmowJL0QjgXqV1w+dNXq3mgmkfAgYVS8Xjw==} + dependencies: + '@near-js/crypto': 0.0.5 + '@near-js/providers': 0.0.7(encoding@0.1.13) + '@near-js/signers': 0.0.5 + '@near-js/transactions': 0.2.1 + '@near-js/types': 0.0.4 + '@near-js/utils': 0.0.4 + ajv: 8.14.0 + ajv-formats: 2.1.1(ajv@8.14.0) + bn.js: 5.2.1 + borsh: 0.7.0 + depd: 2.0.0 + near-abi: 0.1.1 + transitivePeerDependencies: + - encoding + dev: false + + /@near-js/crypto@0.0.5: + resolution: {integrity: sha512-nbQ971iYES5Spiolt+p568gNuZ//HeMHm3qqT3xT+i8ZzgbC//l6oRf48SUVTPAboQ1TJ5dW/NqcxOY0pe7b4g==} + dependencies: + '@near-js/types': 0.0.4 + bn.js: 5.2.1 + borsh: 0.7.0 + tweetnacl: 1.0.3 + dev: false + + /@near-js/keystores-browser@0.0.5: + resolution: {integrity: sha512-mHF3Vcvsr7xnkaM/reOyxtykbE3OWKV6vQzqyTH2tZYT2OTEnj0KhRT9BCFC0Ra67K1zQLbg49Yc/kDCc5qupA==} + dependencies: + '@near-js/crypto': 0.0.5 + '@near-js/keystores': 0.0.5 + dev: false + + /@near-js/keystores-node@0.0.5: + resolution: {integrity: sha512-BYmWyGNydfAqi7eYA1Jo8zULL13cxejD2VBr0BBIXx5bJ+BO4TLecsY1xdTBEq06jyWXHa7kV4h8BJzAjvpTLg==} + dependencies: + '@near-js/crypto': 0.0.5 + '@near-js/keystores': 0.0.5 + dev: false + + /@near-js/keystores@0.0.5: + resolution: {integrity: sha512-kxqV+gw/3L8/axe9prhlU+M0hfybkxX54xfI0EEpWP2QiUV+qw+jkKolYIbdk5tdEZrGf9jHawh1yFtwP7APPQ==} + dependencies: + '@near-js/crypto': 0.0.5 + '@near-js/types': 0.0.4 + dev: false + + /@near-js/providers@0.0.7(encoding@0.1.13): + resolution: {integrity: sha512-qj16Ey+vSw7lHE85xW+ykYJoLPr4A6Q/TsfpwhJLS6zBInSC6sKVqPO1L8bK4VA/yB7V7JJPor9UVCWgRXdNEA==} + dependencies: + '@near-js/transactions': 0.2.1 + '@near-js/types': 0.0.4 + '@near-js/utils': 0.0.4 + bn.js: 5.2.1 + borsh: 0.7.0 + http-errors: 1.8.1 + optionalDependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /@near-js/signers@0.0.5: + resolution: {integrity: sha512-XJjYYatehxHakHa7WAoiQ8uIBSWBR2EnO4GzlIe8qpWL+LoH4t68MSezC1HwT546y9YHIvePjwDrBeYk8mg20w==} + dependencies: + '@near-js/crypto': 0.0.5 + '@near-js/keystores': 0.0.5 + js-sha256: 0.9.0 + dev: false + + /@near-js/transactions@0.2.1: + resolution: {integrity: sha512-V9tXzkICDPruSxihKXkBhUgsI4uvW7TwXlnZS2GZpPsFFiIUeGrso0wo4uiQwB6miFA5q6fKaAtQa4F2v1s+zg==} + dependencies: + '@near-js/crypto': 0.0.5 + '@near-js/signers': 0.0.5 + '@near-js/types': 0.0.4 + '@near-js/utils': 0.0.4 + bn.js: 5.2.1 + borsh: 0.7.0 + js-sha256: 0.9.0 + dev: false + + /@near-js/types@0.0.4: + resolution: {integrity: sha512-8TTMbLMnmyG06R5YKWuS/qFG1tOA3/9lX4NgBqQPsvaWmDsa+D+QwOkrEHDegped0ZHQwcjAXjKML1S1TyGYKg==} + dependencies: + bn.js: 5.2.1 + dev: false + + /@near-js/utils@0.0.4: + resolution: {integrity: sha512-mPUEPJbTCMicGitjEGvQqOe8AS7O4KkRCxqd0xuE/X6gXF1jz1pYMZn4lNUeUz2C84YnVSGLAM0o9zcN6Y4hiA==} + dependencies: + '@near-js/types': 0.0.4 + bn.js: 5.2.1 + depd: 2.0.0 + mustache: 4.2.0 + dev: false + + /@near-js/wallet-account@0.0.7(encoding@0.1.13): + resolution: {integrity: sha512-tmRyieG/wHmuNkg/WGFyKD6iH6atHPbY0rZ5OjOIiteuhZEPgp+z8OBpiQ4qumTa63q46aj/QVSQL0J3+JmBfw==} + dependencies: + '@near-js/accounts': 0.1.4(encoding@0.1.13) + '@near-js/crypto': 0.0.5 + '@near-js/keystores': 0.0.5 + '@near-js/signers': 0.0.5 + '@near-js/transactions': 0.2.1 + '@near-js/types': 0.0.4 + '@near-js/utils': 0.0.4 + bn.js: 5.2.1 + borsh: 0.7.0 + transitivePeerDependencies: + - encoding + dev: false + + /@near-wallet-selector/core@8.9.3(near-api-js@2.1.4): + resolution: {integrity: sha512-Mjmos4ska8eHwU/tGiWdAY+hHrFRSIpsmLYEfWuO/Uh1bWbJVueyKI7OGxbyWEOL1GJw1J5rx+MzXRS+U3fJow==} + peerDependencies: + near-api-js: ^1.0.0 || ^2.0.0 + dependencies: + borsh: 0.7.0 + events: 3.3.0 + js-sha256: 0.9.0 + near-api-js: 2.1.4(encoding@0.1.13) + rxjs: 7.8.1 + dev: false + + /@near-wallet-selector/core@8.9.5(near-api-js@2.1.4): + resolution: {integrity: sha512-wJiCL8M7z6tkNMY5H4n63/SZCmlW0Z15H6R1biWgpRuMDlVjhQOzxrmQggb1jbK4nYkzXyARNKyPh2gcRUuS+w==} + peerDependencies: + near-api-js: ^1.0.0 || ^2.0.0 + dependencies: + borsh: 0.7.0 + events: 3.3.0 + js-sha256: 0.9.0 + near-api-js: 2.1.4(encoding@0.1.13) + rxjs: 7.8.1 + dev: false + + /@near-wallet-selector/core@8.9.7(near-api-js@2.1.4): + resolution: {integrity: sha512-WFAtNrA/w7gnobKmHGEqV4r/RtDM1QTf33TF0Kaf/1nK5jBNNyoYldyAPnbP08t1S+IbbVJ9NcWW3P7hdXe4Lg==} + peerDependencies: + near-api-js: ^1.0.0 || ^2.0.0 + dependencies: + borsh: 0.7.0 + events: 3.3.0 + js-sha256: 0.9.0 + near-api-js: 2.1.4(encoding@0.1.13) + rxjs: 7.8.1 + dev: false + + /@near-wallet-selector/here-wallet@8.9.3(borsh@0.7.0)(near-api-js@2.1.4): + resolution: {integrity: sha512-y7vLNuzIkMWZSRcj0v7Ass2IVAEE2GFlpTc1MjrwXdJ0IL1SDLGntGk2A9dQ+0Iu9kACSmacyRUBXIggZV6NpA==} + peerDependencies: + near-api-js: ^1.0.0 || ^2.0.0 + dependencies: + '@here-wallet/core': 1.5.1(bn.js@5.2.1)(borsh@0.7.0)(near-api-js@2.1.4) + '@near-wallet-selector/core': 8.9.3(near-api-js@2.1.4) + bn.js: 5.2.1 + near-api-js: 2.1.4(encoding@0.1.13) + transitivePeerDependencies: + - borsh + dev: false + + /@near-wallet-selector/ledger@8.9.3(near-api-js@2.1.4)(typescript@5.1.6): + resolution: {integrity: sha512-2rnUvBvHkCRYuksICK3/uKZbD7KilgJveicur3bEv89We3rG9UEk1sAb0pKuXj3tBTT+qngidihJ5ZhRQbkcuw==} + peerDependencies: + near-api-js: ^1.0.0 || ^2.0.0 + dependencies: + '@ledgerhq/hw-transport': 6.27.1 + '@ledgerhq/hw-transport-webhid': 6.27.1 + '@near-wallet-selector/core': 8.9.3(near-api-js@2.1.4) + '@near-wallet-selector/wallet-utils': 8.9.3(near-api-js@2.1.4) + bn.js: 5.2.1 + is-mobile: 4.0.0 + near-api-js: 2.1.4(encoding@0.1.13) + ts-essentials: 7.0.3(typescript@5.1.6) + transitivePeerDependencies: + - typescript + dev: false + + /@near-wallet-selector/meteor-wallet@8.9.3(near-api-js@2.1.4): + resolution: {integrity: sha512-mYfDJ9U5MSxy8LQj6JZTD6XT4NaLqzz9+8BGT1/QW7wGEMCODL6WJJBT7nPDnnXxWT6BtiBaoGJcnMEhV43GSQ==} + peerDependencies: + near-api-js: ^1.0.0 || ^2.0.0 + dependencies: + '@meteorwallet/sdk': 1.0.9(near-api-js@2.1.4) + '@near-wallet-selector/core': 8.9.3(near-api-js@2.1.4) + near-api-js: 2.1.4(encoding@0.1.13) + dev: false + + /@near-wallet-selector/modal-ui@8.9.3(near-api-js@2.1.4): + resolution: {integrity: sha512-jxRssW9trlqqvK9dde7Nx0hfPMOjoO+RGmFTY1V3+yth1k1pHNC67lXM49WuNTrDqiyXcI/SvkDq/5mPMbUx6Q==} + dependencies: + '@near-wallet-selector/core': 8.9.3(near-api-js@2.1.4) + copy-to-clipboard: 3.3.3 + qrcode: 1.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - near-api-js + dev: false + + /@near-wallet-selector/modal-ui@8.9.7(near-api-js@2.1.4): + resolution: {integrity: sha512-mE5jbJFxR2qbGRPP6Ca3ifdvmSlEKCPMDeU5H8SpofqMpKmiBXZPwJbGrpziuBbtdSfpBOfQ+8a+RMQf1nz+nA==} + dependencies: + '@near-wallet-selector/core': 8.9.7(near-api-js@2.1.4) + copy-to-clipboard: 3.3.3 + qrcode: 1.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - near-api-js + dev: false + + /@near-wallet-selector/my-near-wallet@8.9.3(near-api-js@2.1.4): + resolution: {integrity: sha512-26TsvJ8YxqFqD21tSrj/f9qIPNxHYPU+YFEvbnAGcZL3VV/+BTbyIM8OnFP5H3KdtW0Wcc33PDoDyeidEqdTvQ==} + peerDependencies: + near-api-js: ^1.0.0 || ^2.0.0 + dependencies: + '@near-wallet-selector/core': 8.9.3(near-api-js@2.1.4) + '@near-wallet-selector/wallet-utils': 8.9.3(near-api-js@2.1.4) + near-api-js: 2.1.4(encoding@0.1.13) + dev: false + + /@near-wallet-selector/wallet-connect@8.9.3(@types/react@18.2.20)(encoding@0.1.13)(near-api-js@2.1.4)(react@18.2.0): + resolution: {integrity: sha512-0R9JxzxVtKwNwL8Aut+GKVzU10D4eWa07gupUcIVTDBr7++voBH5+/aAZ4awwhqhTQKTZgbdp2TCYBkz4h1SVQ==} + peerDependencies: + near-api-js: ^1.0.0 || ^2.0.0 + dependencies: + '@near-wallet-selector/core': 8.9.3(near-api-js@2.1.4) + '@near-wallet-selector/wallet-utils': 8.9.3(near-api-js@2.1.4) + '@walletconnect/modal': 2.6.2(@types/react@18.2.20)(react@18.2.0) + '@walletconnect/sign-client': 2.11.0(encoding@0.1.13) + '@walletconnect/types': 2.11.0 + near-api-js: 2.1.4(encoding@0.1.13) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - ioredis + - react + - uWebSockets.js + - utf-8-validate + dev: false + + /@near-wallet-selector/wallet-utils@8.9.3(near-api-js@2.1.4): + resolution: {integrity: sha512-CGAM1Ocz+nUI03rxSTNnHHx9K8gvqFrCI63Y1yIUNSI/EyRXJKvWUJCyGMBCjzEqcL5fh0qMzcGm9ThSgXOwOA==} + peerDependencies: + near-api-js: ^1.0.0 || ^2.0.0 + dependencies: + '@near-wallet-selector/core': 8.9.3(near-api-js@2.1.4) + bn.js: 5.2.1 + near-api-js: 2.1.4(encoding@0.1.13) + dev: false + + /@near-wallet-selector/wallet-utils@8.9.7(near-api-js@2.1.4): + resolution: {integrity: sha512-hVNF8z2EK8FPMaH2V2RIpJRT3CSIo8Epq6ysRRHVPFCXnqDjHfTWe39WYi4uAZldeCMCLQeRm5y8YL5QiAL3ig==} + peerDependencies: + near-api-js: ^1.0.0 || ^2.0.0 + dependencies: + '@near-wallet-selector/core': 8.9.7(near-api-js@2.1.4) + bn.js: 5.2.1 + near-api-js: 2.1.4(encoding@0.1.13) + dev: false + + /@next/env@13.4.13: + resolution: {integrity: sha512-fwz2QgVg08v7ZL7KmbQBLF2PubR/6zQdKBgmHEl3BCyWTEDsAQEijjw2gbFhI1tcKfLdOOJUXntz5vZ4S0Polg==} + dev: false + + /@next/eslint-plugin-next@13.4.13: + resolution: {integrity: sha512-RpZeXlPxQ9FLeYN84XHDqRN20XxmVNclYCraLYdifRsmibtcWUWdwE/ANp2C8kgesFRsvwfsw6eOkYNl9sLJ3A==} + dependencies: + glob: 7.1.7 + dev: false + + /@next/swc-darwin-arm64@13.4.13: + resolution: {integrity: sha512-ZptVhHjzUuivnXMNCJ6lER33HN7lC+rZ01z+PM10Ows21NHFYMvGhi5iXkGtBDk6VmtzsbqnAjnx4Oz5um0FjA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@13.4.13: + resolution: {integrity: sha512-t9nTiWCLApw8W4G1kqJyYP7y6/7lyal3PftmRturIxAIBlZss9wrtVN8nci50StDHmIlIDxfguYIEGVr9DbFTg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@13.4.13: + resolution: {integrity: sha512-xEHUqC8eqR5DHe8SOmMnDU1K3ggrJ28uIKltrQAwqFSSSmzjnN/XMocZkcVhuncuxYrpbri0iMQstRyRVdQVWg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@13.4.13: + resolution: {integrity: sha512-sNf3MnLAm8rquSSAoeD9nVcdaDeRYOeey4stOWOyWIgbBDtP+C93amSgH/LPTDoUV7gNiU6f+ghepTjTjRgIUQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@13.4.13: + resolution: {integrity: sha512-WhcRaJJSHyx9OWmKjjz+OWHumiPZWRqmM/09Bt7Up4UqUJFFhGExeztR4trtv3rflvULatu9IH/nTV8fUUgaMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@13.4.13: + resolution: {integrity: sha512-+Y4LLhOWWZQIDKVwr2R17lq2KSN0F1c30QVgGIWfnjjHpH8nrIWHEndhqYU+iFuW8It78CiJjQKTw4f51HD7jA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@13.4.13: + resolution: {integrity: sha512-rWurdOR20uxjfqd1X9vDAgv0Jb26KjyL8akF9CBeFqX8rVaBAnW/Wf6A2gYEwyYY4Bai3T7p1kro6DFrsvBAAw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@13.4.13: + resolution: {integrity: sha512-E8bSPwRuY5ibJ3CzLQmJEt8qaWrPYuUTwnrwygPUEWoLzD5YRx9SD37oXRdU81TgGwDzCxpl7z5Nqlfk50xAog==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@13.4.13: + resolution: {integrity: sha512-4KlyC6jWRubPnppgfYsNTPeWfGCxtWLh5vaOAW/kdzAk9widqho8Qb5S4K2vHmal1tsURi7Onk2MMCV1phvyqA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: false + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: false + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: false + + /@parcel/watcher-android-arm64@2.4.1: + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-darwin-arm64@2.4.1: + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-darwin-x64@2.4.1: + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-freebsd-x64@2.4.1: + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-arm-glibc@2.4.1: + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-arm64-glibc@2.4.1: + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-arm64-musl@2.4.1: + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-x64-glibc@2.4.1: + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-linux-x64-musl@2.4.1: + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-wasm@2.4.1: + resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} + engines: {node: '>= 10.0.0'} + dependencies: + is-glob: 4.0.3 + micromatch: 4.0.7 + dev: false + bundledDependencies: + - napi-wasm + + /@parcel/watcher-win32-arm64@2.4.1: + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-win32-ia32@2.4.1: + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher-win32-x64@2.4.1: + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@parcel/watcher@2.4.1: + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.7 + node-addon-api: 7.1.0 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + + /@rushstack/eslint-patch@1.10.3: + resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} + dev: false + + /@stablelib/aead@1.0.1: + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + dev: false + + /@stablelib/binary@1.0.1: + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + dependencies: + '@stablelib/int': 1.0.1 + dev: false + + /@stablelib/bytes@1.0.1: + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + dev: false + + /@stablelib/chacha20poly1305@1.0.1: + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + dependencies: + '@stablelib/aead': 1.0.1 + '@stablelib/binary': 1.0.1 + '@stablelib/chacha': 1.0.1 + '@stablelib/constant-time': 1.0.1 + '@stablelib/poly1305': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/chacha@1.0.1: + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/constant-time@1.0.1: + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + dev: false + + /@stablelib/ed25519@1.0.3: + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + dependencies: + '@stablelib/random': 1.0.2 + '@stablelib/sha512': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/hash@1.0.1: + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + dev: false + + /@stablelib/hkdf@1.0.1: + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + dependencies: + '@stablelib/hash': 1.0.1 + '@stablelib/hmac': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/hmac@1.0.1: + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/int@1.0.1: + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + dev: false + + /@stablelib/keyagreement@1.0.1: + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + dependencies: + '@stablelib/bytes': 1.0.1 + dev: false + + /@stablelib/poly1305@1.0.1: + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/random@1.0.2: + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/sha256@1.0.1: + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/sha512@1.0.1: + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + dev: false + + /@stablelib/wipe@1.0.1: + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + dev: false + + /@stablelib/x25519@1.0.3: + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + dependencies: + '@stablelib/keyagreement': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/wipe': 1.0.1 + dev: false + + /@swc/helpers@0.5.1: + resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + dependencies: + tslib: 2.6.2 + dev: false + + /@tanstack/query-core@4.36.1: + resolution: {integrity: sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==} + dev: false + + /@tanstack/react-query@4.36.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@tanstack/query-core': 4.36.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + use-sync-external-store: 1.2.2(react@18.2.0) + dev: false + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: false + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: false + + /@types/lodash@4.17.4: + resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==} + dev: true + + /@types/node@18.11.9: + resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==} + dev: false + + /@types/node@20.4.9: + resolution: {integrity: sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==} + dev: true + + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + dev: false + + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + dependencies: + '@types/react': 18.2.20 + dev: false + + /@types/react@18.2.20: + resolution: {integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==} + dependencies: + '@types/prop-types': 15.7.12 + '@types/scheduler': 0.23.0 + csstype: 3.1.3 + dev: false + + /@types/scheduler@0.23.0: + resolution: {integrity: sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==} + dev: false + + /@types/trusted-types@2.0.7: + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + dev: false + + /@typescript-eslint/eslint-plugin@7.10.0(@typescript-eslint/parser@7.10.0)(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.10.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 7.10.0 + '@typescript-eslint/type-utils': 7.10.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/utils': 7.10.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 7.10.0 + eslint: 8.46.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/parser@6.21.0(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + eslint: 8.46.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/parser@7.10.0(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.10.0 + '@typescript-eslint/types': 7.10.0 + '@typescript-eslint/typescript-estree': 7.10.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 7.10.0 + debug: 4.3.4 + eslint: 8.46.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + dev: false + + /@typescript-eslint/scope-manager@7.10.0: + resolution: {integrity: sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.10.0 + '@typescript-eslint/visitor-keys': 7.10.0 + dev: false + + /@typescript-eslint/type-utils@7.10.0(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.10.0(typescript@5.1.6) + '@typescript-eslint/utils': 7.10.0(eslint@8.46.0)(typescript@5.1.6) + debug: 4.3.4 + eslint: 8.46.0 + ts-api-utils: 1.3.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: false + + /@typescript-eslint/types@7.10.0: + resolution: {integrity: sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: false + + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.1.6): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/typescript-estree@7.10.0(typescript@5.1.6): + resolution: {integrity: sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.10.0 + '@typescript-eslint/visitor-keys': 7.10.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/utils@7.10.0(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@typescript-eslint/scope-manager': 7.10.0 + '@typescript-eslint/types': 7.10.0 + '@typescript-eslint/typescript-estree': 7.10.0(typescript@5.1.6) + eslint: 8.46.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + dev: false + + /@typescript-eslint/visitor-keys@7.10.0: + resolution: {integrity: sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.10.0 + eslint-visitor-keys: 3.4.3 + dev: false + + /@walletconnect/core@2.11.0(encoding@0.1.13): + resolution: {integrity: sha512-2Tjp5BCevI7dbmqo/OrCjX4tqgMqwJNQLlQAlphqPfvwlF9+tIu6pGcVbSN3U9zyXzWIZCeleqEaWUeSeET4Ew==} + dependencies: + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.14 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.10 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.11.0 + '@walletconnect/utils': 2.11.0 + events: 3.3.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) + lodash.isequal: 4.5.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - ioredis + - uWebSockets.js + - utf-8-validate + dev: false + + /@walletconnect/environment@1.0.1: + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + dependencies: + tslib: 1.14.1 + dev: false + + /@walletconnect/events@1.0.1: + resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + dev: false + + /@walletconnect/heartbeat@1.2.1: + resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + dev: false + + /@walletconnect/jsonrpc-provider@1.0.13: + resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + tslib: 1.14.1 + dev: false + + /@walletconnect/jsonrpc-types@1.0.3: + resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + dev: false + + /@walletconnect/jsonrpc-types@1.0.4: + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} + dependencies: + events: 3.3.0 + keyvaluestorage-interface: 1.0.0 + dev: false + + /@walletconnect/jsonrpc-utils@1.0.8: + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + dependencies: + '@walletconnect/environment': 1.0.1 + '@walletconnect/jsonrpc-types': 1.0.4 + tslib: 1.14.1 + dev: false + + /@walletconnect/jsonrpc-ws-connection@1.0.14: + resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@walletconnect/keyvaluestorage@1.1.1: + resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + dependencies: + '@walletconnect/safe-json': 1.0.2 + idb-keyval: 6.2.1 + unstorage: 1.10.2(idb-keyval@6.2.1) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - ioredis + - uWebSockets.js + dev: false + + /@walletconnect/logger@2.1.2: + resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 7.11.0 + dev: false + + /@walletconnect/modal-core@2.6.2(@types/react@18.2.20)(react@18.2.0): + resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + dependencies: + valtio: 1.11.2(@types/react@18.2.20)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react + dev: false + + /@walletconnect/modal-ui@2.6.2(@types/react@18.2.20)(react@18.2.0): + resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + dependencies: + '@walletconnect/modal-core': 2.6.2(@types/react@18.2.20)(react@18.2.0) + lit: 2.8.0 + motion: 10.16.2 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@types/react' + - react + dev: false + + /@walletconnect/modal@2.6.2(@types/react@18.2.20)(react@18.2.0): + resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + dependencies: + '@walletconnect/modal-core': 2.6.2(@types/react@18.2.20)(react@18.2.0) + '@walletconnect/modal-ui': 2.6.2(@types/react@18.2.20)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react + dev: false + + /@walletconnect/relay-api@1.0.10: + resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} + dependencies: + '@walletconnect/jsonrpc-types': 1.0.3 + dev: false + + /@walletconnect/relay-auth@1.0.4: + resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + dependencies: + '@stablelib/ed25519': 1.0.3 + '@stablelib/random': 1.0.2 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + uint8arrays: 3.1.1 + dev: false + + /@walletconnect/safe-json@1.0.2: + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + dependencies: + tslib: 1.14.1 + dev: false + + /@walletconnect/sign-client@2.11.0(encoding@0.1.13): + resolution: {integrity: sha512-H2ukscibBS+6WrzQWh+WyVBqO5z4F5et12JcwobdwgHnJSlqIoZxqnUYYWNCI5rUR5UKsKWaUyto4AE9N5dw4Q==} + dependencies: + '@walletconnect/core': 2.11.0(encoding@0.1.13) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.11.0 + '@walletconnect/utils': 2.11.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - ioredis + - uWebSockets.js + - utf-8-validate + dev: false + + /@walletconnect/time@1.0.2: + resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + dependencies: + tslib: 1.14.1 + dev: false + + /@walletconnect/types@2.11.0: + resolution: {integrity: sha512-AB5b1lrEbCGHxqS2vqfCkIoODieH+ZAUp9rA1O2ftrhnqDJiJK983Df87JhYhECsQUBHHfALphA8ydER0q+9sw==} + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - ioredis + - uWebSockets.js + dev: false + + /@walletconnect/utils@2.11.0: + resolution: {integrity: sha512-hxkHPlTlDQILHfIKXlmzgNJau/YcSBC3XHUSuZuKZbNEw3duFT6h6pm3HT/1+j1a22IG05WDsNBuTCRkwss+BQ==} + dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.10 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.11.0 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - ioredis + - uWebSockets.js + dev: false + + /@walletconnect/window-getters@1.0.1: + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + dependencies: + tslib: 1.14.1 + dev: false + + /@walletconnect/window-metadata@1.0.1: + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + dependencies: + '@walletconnect/window-getters': 1.0.1 + tslib: 1.14.1 + dev: false + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: false + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /ajv-formats@2.1.1(ajv@8.14.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.14.0 + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: false + + /ajv@8.14.0: + resolution: {integrity: sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: false + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: false + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: false + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: false + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: false + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: false + + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: false + + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + dev: false + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: false + + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: false + + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: false + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: false + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: false + + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + dev: false + + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + dev: false + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + dev: false + + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: false + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: false + + /autoprefixer@10.4.14(postcss@8.4.27): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001621 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.27 + postcss-value-parser: 4.2.0 + dev: false + + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: false + + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} + dev: false + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: false + + /base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + dev: false + + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: false + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: false + + /borsh@0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + dependencies: + bn.js: 5.2.1 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: false + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + dev: false + + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001621 + electron-to-chromium: 1.4.783 + node-releases: 2.0.14 + update-browserslist-db: 1.0.16(browserslist@4.23.0) + dev: false + + /bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + dependencies: + base-x: 3.0.9 + dev: false + + /bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + dependencies: + base-x: 4.0.0 + dev: false + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: false + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: false + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: false + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: false + + /caniuse-lite@1.0.30001621: + resolution: {integrity: sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==} + dev: false + + /capability@0.2.5: + resolution: {integrity: sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg==} + dev: false + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: false + + /charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + dev: false + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + dependencies: + consola: 3.2.3 + dev: false + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + + /clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} + dependencies: + execa: 8.0.1 + is-wsl: 3.1.0 + is64bit: 2.0.0 + dev: false + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: false + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: false + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: false + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: false + + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + dev: false + + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + dev: false + + /cookie-es@1.1.0: + resolution: {integrity: sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==} + dev: false + + /copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + dependencies: + toggle-selection: 1.0.6 + dev: false + + /cross-fetch@3.1.8(encoding@0.1.13): + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /cross-fetch@4.0.0(encoding@0.1.13): + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: false + + /crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true + dev: false + + /crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + dev: false + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + dev: false + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: false + + /data-uri-to-buffer@5.0.1: + resolution: {integrity: sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==} + engines: {node: '>= 14'} + dev: false + + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: false + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: false + + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: false + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: false + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: false + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dev: false + + /defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: false + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: false + + /destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + dev: false + + /detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + dev: false + + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: false + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: false + + /dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + dev: false + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: false + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: false + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: false + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: false + + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dev: false + + /duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-shift: 1.0.3 + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + + /electron-to-chromium@1.4.783: + resolution: {integrity: sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ==} + dev: false + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + + /encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + dev: false + + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + dependencies: + iconv-lite: 0.6.3 + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: false + + /enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: false + + /error-polyfill@0.1.3: + resolution: {integrity: sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg==} + dependencies: + capability: 0.2.5 + o3: 1.0.3 + u3: 0.1.1 + dev: false + + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + dev: false + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: false + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: false + + /es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.2 + dev: false + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: false + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: false + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.2 + dev: false + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: false + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: false + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: false + + /eslint-config-next@13.4.13(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-EXAh5h1yG/YTNa5YdskzaSZncBjKjvFe2zclMCi2KXyTsXha22wB6MPs/U7idB6a2qjpBdbZcruQY1TWjfNMZw==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 13.4.13 + '@rushstack/eslint-patch': 1.10.3 + '@typescript-eslint/parser': 6.21.0(eslint@8.46.0)(typescript@5.1.6) + eslint: 8.46.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.46.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.10.0)(eslint@8.46.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.46.0) + eslint-plugin-react: 7.34.1(eslint@8.46.0) + eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0) + typescript: 5.1.6 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.46.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.16.1 + eslint: 8.46.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.10.0)(eslint@8.46.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.5 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.46.0)(typescript@5.1.6) + debug: 3.2.7 + eslint: 8.46.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.46.0) + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-node@0.3.9)(eslint@8.46.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 7.10.0(eslint@8.46.0)(typescript@5.1.6) + debug: 3.2.7 + eslint: 8.46.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.10.0)(eslint@8.46.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 7.10.0(eslint@8.46.0)(typescript@5.1.6) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.46.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.10.0)(eslint-import-resolver-node@0.3.9)(eslint@8.46.0) + hasown: 2.0.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.46.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.24.6 + aria-query: 5.3.0 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.19 + eslint: 8.46.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + dev: false + + /eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705(eslint@8.46.0): + resolution: {integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.46.0 + dev: false + + /eslint-plugin-react@7.34.1(eslint@8.46.0): + resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.19 + eslint: 8.46.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + dev: false + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: false + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /eslint@8.46.0: + resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: false + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: false + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: false + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: false + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: false + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: false + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: false + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + dev: false + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: false + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: false + + /fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + dev: false + + /fast-text-encoding@1.0.6: + resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} + dev: false + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: false + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: false + + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: false + + /filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + dev: false + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: false + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: false + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: false + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: false + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: false + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: false + + /framer-motion@10.18.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: false + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: false + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + dev: false + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: false + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + dev: false + + /get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + dev: false + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: false + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: false + + /get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: false + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false + + /glob@10.4.1: + resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 3.1.2 + minimatch: 9.0.4 + minipass: 7.1.2 + path-scurry: 1.11.1 + dev: false + + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: false + + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + dev: false + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + + /goober@2.1.14(csstype@3.1.3): + resolution: {integrity: sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==} + peerDependencies: + csstype: ^3.0.10 + dependencies: + csstype: 3.1.3 + dev: false + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + dev: false + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: false + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: false + + /graphql-request@6.1.0(encoding@0.1.13)(graphql@16.8.1): + resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + peerDependencies: + graphql: 14 - 16 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + cross-fetch: 3.1.8(encoding@0.1.13) + graphql: 16.8.1 + transitivePeerDependencies: + - encoding + dev: false + + /graphql@16.8.1: + resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + dev: false + + /h3@1.11.1: + resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} + dependencies: + cookie-es: 1.1.0 + crossws: 0.2.4 + defu: 6.1.4 + destr: 2.0.3 + iron-webcrypto: 1.2.1 + ohash: 1.1.3 + radix3: 1.1.2 + ufo: 1.5.3 + uncrypto: 0.1.3 + unenv: 1.9.0 + transitivePeerDependencies: + - uWebSockets.js + dev: false + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: false + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: false + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: false + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: false + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: false + + /hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + dev: false + + /http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + dev: false + + /http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: false + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: false + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /idb-keyval@6.2.1: + resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + dev: false + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: false + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: false + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: false + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: false + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + dev: false + + /iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + dev: false + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: false + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: false + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: false + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + dev: false + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: false + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: false + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.2 + dev: false + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: false + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: false + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: false + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.7 + dev: false + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: false + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: false + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: false + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: false + + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: false + + /is-mobile@4.0.0: + resolution: {integrity: sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==} + dev: false + + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: false + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: false + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: false + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: false + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: false + + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: false + + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: false + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: false + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.15 + dev: false + + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: false + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.7 + dev: false + + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: false + + /is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + dependencies: + is-inside-container: 1.0.0 + dev: false + + /is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} + dependencies: + system-architecture: 0.1.0 + dev: false + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: false + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: false + + /isomorphic-textencoder@1.0.1: + resolution: {integrity: sha512-676hESgHullDdHDsj469hr+7t3i/neBKU9J7q1T4RHaWwLAsaQnywC0D1dIUId0YZ+JtVrShzuBk1soo0+GVcQ==} + dependencies: + fast-text-encoding: 1.0.6 + dev: false + + /isomorphic-unfetch@3.1.0(encoding@0.1.13): + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + dev: false + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + dev: false + + /jackspeak@3.1.2: + resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: false + + /js-sha256@0.9.0: + resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: false + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: false + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: false + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: false + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: false + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: false + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + dev: false + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: false + + /keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + dev: false + + /language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + dev: false + + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + dependencies: + language-subtag-registry: 0.3.23 + dev: false + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: false + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: false + + /lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} + dev: false + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: false + + /listhen@1.7.2: + resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} + hasBin: true + dependencies: + '@parcel/watcher': 2.4.1 + '@parcel/watcher-wasm': 2.4.1 + citty: 0.1.6 + clipboardy: 4.0.0 + consola: 3.2.3 + crossws: 0.2.4 + defu: 6.1.4 + get-port-please: 3.1.2 + h3: 1.11.1 + http-shutdown: 1.2.2 + jiti: 1.21.0 + mlly: 1.7.0 + node-forge: 1.3.1 + pathe: 1.1.2 + std-env: 3.7.0 + ufo: 1.5.3 + untun: 0.1.3 + uqr: 0.1.2 + transitivePeerDependencies: + - uWebSockets.js + dev: false + + /lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit/reactive-element': 1.6.3 + lit-html: 2.8.0 + dev: false + + /lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + dependencies: + '@types/trusted-types': 2.0.7 + dev: false + + /lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + dependencies: + '@lit/reactive-element': 1.6.3 + lit-element: 3.3.3 + lit-html: 2.8.0 + dev: false + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: false + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: false + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} + dev: false + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: false + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: false + + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: false + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: false + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: false + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false + + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /mlly@1.7.0: + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.1.1 + ufo: 1.5.3 + dev: false + + /motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + dependencies: + '@motionone/animation': 10.17.0 + '@motionone/dom': 10.17.0 + '@motionone/svelte': 10.16.4 + '@motionone/types': 10.17.0 + '@motionone/utils': 10.17.0 + '@motionone/vue': 10.16.4 + dev: false + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: false + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false + + /multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + dev: false + + /mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + dev: false + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: false + + /near-abi@0.1.1: + resolution: {integrity: sha512-RVDI8O+KVxRpC3KycJ1bpfVj9Zv+xvq9PlW1yIFl46GhrnLw83/72HqHGjGDjQ8DtltkcpSjY9X3YIGZ+1QyzQ==} + dependencies: + '@types/json-schema': 7.0.15 + dev: false + + /near-api-js@2.1.4(encoding@0.1.13): + resolution: {integrity: sha512-e1XicyvJvQMtu7qrG8oWyAdjHJJCoy+cvbW6h2Dky4yj7vC85omQz/x7IgKl71VhzDj2/TGUwjTVESp6NSe75A==} + dependencies: + '@near-js/accounts': 0.1.4(encoding@0.1.13) + '@near-js/crypto': 0.0.5 + '@near-js/keystores': 0.0.5 + '@near-js/keystores-browser': 0.0.5 + '@near-js/keystores-node': 0.0.5 + '@near-js/providers': 0.0.7(encoding@0.1.13) + '@near-js/signers': 0.0.5 + '@near-js/transactions': 0.2.1 + '@near-js/types': 0.0.4 + '@near-js/utils': 0.0.4 + '@near-js/wallet-account': 0.0.7(encoding@0.1.13) + ajv: 8.14.0 + ajv-formats: 2.1.1(ajv@8.14.0) + bn.js: 5.2.1 + borsh: 0.7.0 + depd: 2.0.0 + error-polyfill: 0.1.3 + http-errors: 1.8.1 + near-abi: 0.1.1 + node-fetch: 2.7.0(encoding@0.1.13) + tweetnacl: 1.0.3 + transitivePeerDependencies: + - encoding + dev: false + + /next@13.4.13(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-A3YVbVDNeXLhWsZ8Nf6IkxmNlmTNz0yVg186NJ97tGZqPDdPzTrHotJ+A1cuJm2XfuWPrKOUZILl5iBQkIf8Jw==} + engines: {node: '>=16.8.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 13.4.13 + '@swc/helpers': 0.5.1 + busboy: 1.6.0 + caniuse-lite: 1.0.30001621 + postcss: 8.4.14 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) + watchpack: 2.4.0 + zod: 3.21.4 + optionalDependencies: + '@next/swc-darwin-arm64': 13.4.13 + '@next/swc-darwin-x64': 13.4.13 + '@next/swc-linux-arm64-gnu': 13.4.13 + '@next/swc-linux-arm64-musl': 13.4.13 + '@next/swc-linux-x64-gnu': 13.4.13 + '@next/swc-linux-x64-musl': 13.4.13 + '@next/swc-win32-arm64-msvc': 13.4.13 + '@next/swc-win32-ia32-msvc': 13.4.13 + '@next/swc-win32-x64-msvc': 13.4.13 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} + dev: false + + /node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + dev: false + + /node-fetch@2.7.0(encoding@0.1.13): + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + encoding: 0.1.13 + whatwg-url: 5.0.0 + dev: false + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: false + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: false + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: false + + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: false + + /o3@1.0.3: + resolution: {integrity: sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ==} + dependencies: + capability: 0.2.5 + dev: false + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: false + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: false + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false + + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: false + + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: false + + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + dev: false + + /object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: false + + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: false + + /ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.4 + ufo: 1.5.3 + dev: false + + /ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + dev: false + + /on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: false + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: false + + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + dev: false + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: false + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: false + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: false + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: false + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: false + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: false + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: false + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: false + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: false + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: false + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: false + + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.2.2 + minipass: 7.1.2 + dev: false + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: false + + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: false + + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + dev: false + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: false + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: false + + /pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + dependencies: + duplexify: 4.1.3 + split2: 4.2.0 + dev: false + + /pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + dev: false + + /pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 0.2.0 + pino-abstract-transport: 0.5.0 + pino-std-serializers: 4.0.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.1.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 2.8.0 + thread-stream: 0.15.2 + dev: false + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: false + + /pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} + dependencies: + confbox: 0.1.7 + mlly: 1.7.0 + pathe: 1.1.2 + dev: false + + /pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + dev: false + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: false + + /postcss-import@15.1.0(postcss@8.4.27): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.27 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: false + + /postcss-js@4.0.1(postcss@8.4.27): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.27 + dev: false + + /postcss-load-config@4.0.2(postcss@8.4.27): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.1.1 + postcss: 8.4.27 + yaml: 2.4.2 + dev: false + + /postcss-nested@6.0.1(postcss@8.4.27): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.27 + postcss-selector-parser: 6.1.0 + dev: false + + /postcss-selector-parser@6.1.0: + resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false + + /postcss@8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + dev: false + + /postcss@8.4.27: + resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + dev: false + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: false + + /process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + dev: false + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false + + /proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: false + + /qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + dijkstrajs: 1.0.3 + encode-utf8: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + dev: false + + /query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + dev: false + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: false + + /quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: false + + /radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + dev: false + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.2 + dev: false + + /react-from-dom@0.7.3(react@18.2.0): + resolution: {integrity: sha512-9IK6R7+eD1wOAMC2ZCrENev0eK1625cb7vX+cnnOR9LBRNbjKiaJk4ij2zQbcefEXTWjXFhA7CTO1cd8wMONnw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /react-hot-toast@2.4.1(csstype@3.1.3)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16' + react-dom: '>=16' + dependencies: + goober: 2.1.14(csstype@3.1.3) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - csstype + dev: false + + /react-inlinesvg@4.1.3(react@18.2.0): + resolution: {integrity: sha512-p1+wkr1UQZyLw/3bdpnHO3v3tMNVWyxWnAEY6ML/Ql9ldDYTBTy6HqAyNl7u3au925XPffLMiXKnQrqZeJAldw==} + peerDependencies: + react: 16.8 - 18 + dependencies: + react: 18.2.0 + react-from-dom: 0.7.3(react@18.2.0) + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false + + /react-webcam@7.2.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-xkrzYPqa1ag2DP+2Q/kLKBmCIfEx49bVdgCCCcZf88oF+0NPEbkwYk3/s/C7Zy0mhM8k+hpdNkBLzxg8H0aWcg==} + peerDependencies: + react: '>=16.2.0' + react-dom: '>=16.2.0' + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: false + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: false + + /real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + dev: false + + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + which-builtin-type: 1.1.3 + dev: false + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false + + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + dev: false + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: false + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: false + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: false + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: false + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: false + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: false + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: false + + /rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + dev: false + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: false + + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: false + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: false + + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: false + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: false + + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + dev: false + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: false + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: false + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false + + /sha1@1.1.1: + resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: false + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: false + + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + dev: false + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: false + + /sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + dependencies: + atomic-sleep: 1.0.0 + dev: false + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: false + + /split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + dev: false + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: false + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false + + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: false + + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + dev: false + + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + + /strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + dev: false + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false + + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 + dev: false + + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: false + + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: false + + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: false + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: false + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: false + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: false + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: false + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: false + + /styled-jsx@5.1.1(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + client-only: 0.0.1 + react: 18.2.0 + dev: false + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: false + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: false + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: false + + /system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + dev: false + + /tailwindcss@3.3.3: + resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} + engines: {node: '>=14.0.0'} + hasBin: 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.0 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.27 + postcss-import: 15.1.0(postcss@8.4.27) + postcss-js: 4.0.1(postcss@8.4.27) + postcss-load-config: 4.0.2(postcss@8.4.27) + postcss-nested: 6.0.1(postcss@8.4.27) + postcss-selector-parser: 6.1.0 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + dev: false + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: false + + /text-encoding-utf-8@1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + dev: false + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: false + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: false + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: false + + /thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + dependencies: + real-require: 0.1.0 + dev: false + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: false + + /toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + dev: false + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: false + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /ts-api-utils@1.3.0(typescript@5.1.6): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.1.6 + dev: false + + /ts-essentials@7.0.3(typescript@5.1.6): + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + dependencies: + typescript: 5.1.6 + dev: false + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: false + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: false + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: false + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false + + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: false + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: false + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: false + + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: false + + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: false + + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: false + + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: false + + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + dev: false + + /u3@0.1.1: + resolution: {integrity: sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==} + dev: false + + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + dev: false + + /uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + dependencies: + multiformats: 9.9.0 + dev: false + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: false + + /uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + dev: false + + /unenv@1.9.0: + resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + dependencies: + consola: 3.2.3 + defu: 6.1.4 + mime: 3.0.0 + node-fetch-native: 1.6.4 + pathe: 1.1.2 + dev: false + + /unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + dev: false + + /unstorage@1.10.2(idb-keyval@6.2.1): + resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} + peerDependencies: + '@azure/app-configuration': ^1.5.0 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + dependencies: + anymatch: 3.1.3 + chokidar: 3.6.0 + destr: 2.0.3 + h3: 1.11.1 + idb-keyval: 6.2.1 + listhen: 1.7.2 + lru-cache: 10.2.2 + mri: 1.2.0 + node-fetch-native: 1.6.4 + ofetch: 1.3.4 + ufo: 1.5.3 + transitivePeerDependencies: + - uWebSockets.js + dev: false + + /untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true + dependencies: + citty: 0.1.6 + consola: 3.2.3 + pathe: 1.1.2 + dev: false + + /update-browserslist-db@1.0.16(browserslist@4.23.0): + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.1 + dev: false + + /uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + dev: false + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: false + + /use-sync-external-store@1.2.0(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /use-sync-external-store@1.2.2(react@18.2.0): + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /usehooks-ts@2.16.0(react@18.2.0): + resolution: {integrity: sha512-bez95WqYujxp6hFdM/CpRDiVPirZPxlMzOH2QB8yopoKQMXpscyZoxOjpEdaxvV+CAWUDSM62cWnqHE0E/MZ7w==} + engines: {node: '>=16.15.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + dependencies: + lodash.debounce: 4.0.8 + react: 18.2.0 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + + /uuid4@2.0.3: + resolution: {integrity: sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ==} + dev: false + + /valtio@1.11.2(@types/react@18.2.20)(react@18.2.0): + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + dependencies: + '@types/react': 18.2.20 + proxy-compare: 2.5.1 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: false + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + dev: false + + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + dev: false + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: false + + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: false + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: false + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: false + + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: false + + /yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} + engines: {node: '>= 14'} + hasBin: true + dev: false + + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: false + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: false + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: false + + /zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + dev: false diff --git a/minsta/postcss.config.js b/minsta/postcss.config.js new file mode 100644 index 00000000..33ad091d --- /dev/null +++ b/minsta/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/minsta/public/favicon.ico b/minsta/public/favicon.ico new file mode 100644 index 00000000..fc3cf89a Binary files /dev/null and b/minsta/public/favicon.ico differ diff --git a/minsta/public/images/MB_logo.svg b/minsta/public/images/MB_logo.svg new file mode 100644 index 00000000..7ac895c2 --- /dev/null +++ b/minsta/public/images/MB_logo.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/minsta/public/images/arrow_back.svg b/minsta/public/images/arrow_back.svg new file mode 100644 index 00000000..ef719276 --- /dev/null +++ b/minsta/public/images/arrow_back.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minsta/public/images/bd2319e29f174c789f43e0cedf775948.jpeg:Zone.Identifier b/minsta/public/images/bd2319e29f174c789f43e0cedf775948.jpeg:Zone.Identifier new file mode 100644 index 00000000..053d1127 --- /dev/null +++ b/minsta/public/images/bd2319e29f174c789f43e0cedf775948.jpeg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +HostUrl=about:internet diff --git a/minsta/public/images/cameraswitch.svg b/minsta/public/images/cameraswitch.svg new file mode 100644 index 00000000..5a37520d --- /dev/null +++ b/minsta/public/images/cameraswitch.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minsta/public/images/cityback.jpg b/minsta/public/images/cityback.jpg new file mode 100644 index 00000000..e6be9e90 Binary files /dev/null and b/minsta/public/images/cityback.jpg differ diff --git a/minsta/public/images/file_arrow_up.svg b/minsta/public/images/file_arrow_up.svg new file mode 100644 index 00000000..a9f4b409 --- /dev/null +++ b/minsta/public/images/file_arrow_up.svg @@ -0,0 +1,3 @@ + + + diff --git a/minsta/public/images/gift.svg b/minsta/public/images/gift.svg new file mode 100644 index 00000000..5f93f7f5 --- /dev/null +++ b/minsta/public/images/gift.svg @@ -0,0 +1,3 @@ + + + diff --git a/minsta/public/images/leaderbordbackg.jpg b/minsta/public/images/leaderbordbackg.jpg new file mode 100644 index 00000000..2bc00812 Binary files /dev/null and b/minsta/public/images/leaderbordbackg.jpg differ diff --git a/minsta/public/images/link_arrow.svg b/minsta/public/images/link_arrow.svg new file mode 100644 index 00000000..a73dcc4e --- /dev/null +++ b/minsta/public/images/link_arrow.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minsta/public/images/loading.gif b/minsta/public/images/loading.gif new file mode 100644 index 00000000..754375c2 Binary files /dev/null and b/minsta/public/images/loading.gif differ diff --git a/minsta/public/images/msg494358450-383774.jpg:Zone.Identifier b/minsta/public/images/msg494358450-383774.jpg:Zone.Identifier new file mode 100644 index 00000000..289271c7 --- /dev/null +++ b/minsta/public/images/msg494358450-383774.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +HostUrl=https://web.telegram.org/ diff --git a/minsta/public/images/near_logo.svg b/minsta/public/images/near_logo.svg new file mode 100644 index 00000000..c6bcade0 --- /dev/null +++ b/minsta/public/images/near_logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/minsta/public/images/photo_camera-2.svg b/minsta/public/images/photo_camera-2.svg new file mode 100644 index 00000000..56de6aa1 --- /dev/null +++ b/minsta/public/images/photo_camera-2.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minsta/public/images/photo_camera.svg b/minsta/public/images/photo_camera.svg new file mode 100644 index 00000000..56de6aa1 --- /dev/null +++ b/minsta/public/images/photo_camera.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minsta/public/images/pngaaa.com-96212.png:Zone.Identifier b/minsta/public/images/pngaaa.com-96212.png:Zone.Identifier new file mode 100644 index 00000000..053d1127 --- /dev/null +++ b/minsta/public/images/pngaaa.com-96212.png:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +HostUrl=about:internet diff --git a/minsta/public/images/pokeball.jpg:Zone.Identifier b/minsta/public/images/pokeball.jpg:Zone.Identifier new file mode 100644 index 00000000..053d1127 --- /dev/null +++ b/minsta/public/images/pokeball.jpg:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +HostUrl=about:internet diff --git a/minsta/public/images/pokeball.png b/minsta/public/images/pokeball.png new file mode 100644 index 00000000..a3897f99 Binary files /dev/null and b/minsta/public/images/pokeball.png differ diff --git a/minsta/public/images/thumbnail.png b/minsta/public/images/thumbnail.png new file mode 100644 index 00000000..ea9f6735 Binary files /dev/null and b/minsta/public/images/thumbnail.png differ diff --git a/minsta/public/images/trophy.svg b/minsta/public/images/trophy.svg new file mode 100644 index 00000000..4d3da1be --- /dev/null +++ b/minsta/public/images/trophy.svg @@ -0,0 +1,3 @@ + + + diff --git a/minsta/public/styles.css b/minsta/public/styles.css new file mode 100644 index 00000000..2cf3437f --- /dev/null +++ b/minsta/public/styles.css @@ -0,0 +1,7 @@ + +:root { + --primary: #F3F4F8; + --secondary: #000; + --gradOne: #4472ad; + --gradTwo: #009dea; + } diff --git a/minsta/src/app/api/ethberlin/[id]/route.ts b/minsta/src/app/api/ethberlin/[id]/route.ts new file mode 100644 index 00000000..a9c318ca --- /dev/null +++ b/minsta/src/app/api/ethberlin/[id]/route.ts @@ -0,0 +1,119 @@ +import { NextResponse } from "next/server"; +import { execute, createMetadata, mintOnMetadata, updateMetadata, mbjs } from '@mintbase-js/sdk' +import { callViewMethod } from '../../../../utils/utils' +import * as nearAPI from "near-api-js"; +import { connect } from "@mintbase-js/auth"; +import { metadata } from "@/app/page"; + +mbjs.config({ network: "testnet" }); + + +export const GET = async (request: Request, data: any) => { + if (!request) { + throw new Error('Request is undefined'); + } + + const { params } = data; + const { id } = params; + + console.log(id) + if (!id) { + return NextResponse.json( + { error: "id is not defined" }, + { status: 500 } + ); + } + + const response = await createUserNFT(id); + + return NextResponse.json({ response }, { status: 200 }); +} + + +const createUserNFT = async (address: string) => { + const extra = "ethBerlin06"; + const contractAddress = 'ethberlin04hackaton.mintspace3.testnet'; + + const ACCOUNT_ID = "armsveshack.testnet"; + const NETWORK = "testnet"; + + const level = [ + "https://arweave.net/HZ6e25NZdql6MhUbUuwTwaB9poOUzIqlONTa3cg8sug", + "https://arweave.net/PEI0-Dxbkb26PTQkzxa1xY_vdUTwdJSCS82OvciUpAQ", + "https://arweave.net/iobQY_A2WheJWk-yJMpQHI-fhuQ2suJQxn9fraQAwxI", + "https://arweave.net/5GPxsfKlBYqXeNgJ1nuRtiWTqU7F0K1EV9cybGWnQe8", + "https://arweave.net/fyEf-mXL70TJZ4fJ9rS1_AcN-FokSd-XrhUdNDGzurc" + ] + + const keyStore = new nearAPI.keyStores.InMemoryKeyStore(); + + if (!process.env.PRIVATE_KEY) { + throw new Error('PRIVATE_KEY is not defined'); + } + + await keyStore.setKey( + NETWORK, + ACCOUNT_ID, + nearAPI.KeyPair.fromString(process.env.PRIVATE_KEY) + ); + + const contractOwner = await connect("armsveshack.testnet", keyStore, NETWORK); + + try { + const response = await callViewMethod<{ metadata: { extra: string }, token_id: string }[]>({ + contractId: "ethberlin04hackaton.mintspace3.testnet", + method: "nft_tokens_for_owner", + args: { account_id: address } + }); + + console.log('response', response[0].metadata.extra); + console.log('response', response[0].token_id.split(':')[0]); + const metadataId = response[0].token_id.split(':')[0]; + const metadata = { media: level[response[0].metadata.extra.split(',').length], extra: response[0].metadata.extra + ',' + extra }; + + if (response[0].metadata.extra.split(',').includes(extra)) { + console.log('NFT already created for this address'); + return "NFT already minted for this event!"; + } else { + console.log('You have upgraded to level',response[0].metadata.extra.split(',').length); + + await execute({ account: contractOwner }, updateMetadata({ contractAddress, metadataId, metadata, noReference: true, })); + + return "You have upgraded to level 2!"; + } + } catch (error) { + console.log('error',error) + + console.log('No NFTs found for this address'); + + const price = 0; + const metadataId = Math.floor(Math.random() * 1000000).toString(); + //console.log(metadataId) + const ownerId = address; + + console.log('Creating metadata') + const creationTx = createMetadata({ + contractAddress, + metadataId, + metadata: { media: level[0], extra }, + isDynamic: true, + price: price, + noReference: true, + maxSupply: 1, + }); + + console.log('Minting on metadata') + const mintTx = mintOnMetadata({ contractAddress, metadataId, ownerId, price }); + console.log(mintTx) + console.log('Executing') + await execute({ account: contractOwner }, [creationTx]); + console.log('Executing 2') + await execute({ account: contractOwner }, mintOnMetadata({ contractAddress, metadataId, ownerId, price })); + console.log('Done') + + return "NFT Created Successfully!" + } + + return true; + +}; \ No newline at end of file diff --git a/minsta/src/app/ethberlin04/page.tsx b/minsta/src/app/ethberlin04/page.tsx new file mode 100644 index 00000000..5f15285b --- /dev/null +++ b/minsta/src/app/ethberlin04/page.tsx @@ -0,0 +1,75 @@ +"use client"; +import { useMbWallet } from "@mintbase-js/react"; +import { callViewMethod } from '../../utils/utils' +import { useEffect, useState } from "react"; +import Image from 'next/image'; + +const EthBerlin04 = () => { + const { isConnected, selector, connect, activeAccountId } = useMbWallet(); + const [nfts, setNfts] = useState<{ owner_id: string, metadata: { extra: string, media: string }, token_id: string }[]>([]); + + const createUserNFT = async (address: string) => { + const response = await fetch(`/api/ethberlin/${activeAccountId}`) + const restResponse = await response.json(); + console.log('restResponse', restResponse); + } + + const checkNFT = async (address: string) => { + try { + const response = await callViewMethod<{ owner_id: string, metadata: { extra: string, media: string }, token_id: string }[]>({ + contractId: "ethberlin04hackaton.mintspace3.testnet", + method: "nft_tokens_for_owner", + args: { account_id: address } + }); + setNfts(response); + console.log(response); + } catch (e) { + console.log(e) + } + } + + useEffect(() => { + if (isConnected && activeAccountId) { + checkNFT(activeAccountId); + } + }, [isConnected, activeAccountId]); + + return ( + <> +
+ {isConnected ? ( + <> + {nfts.length > 0 ? ( + <> +

You Have Already Minted this NFT

+ { + nfts.map( + (nft) => ( +
+ {nft.owner_id} +

Level {nft.metadata.extra.split(",").length}

+ nft +
+ ) + ) + } + + ) : ( + <> + {activeAccountId && ( + + )} + + )} + + ) : ( + + )} +
+ + ); +}; + +export default EthBerlin04; \ No newline at end of file diff --git a/minsta/src/app/globals.css b/minsta/src/app/globals.css new file mode 100644 index 00000000..60fc8d56 --- /dev/null +++ b/minsta/src/app/globals.css @@ -0,0 +1,109 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +.storeImg { + height: 320px; + width:100%; + min-width: 320px; +} + +@media (min-width: 768px) { + .storeImg{ + width: 18rem!important; + } +} + +.h-camera { + height: calc(100vh - 120px); +} +.m-camera { + margin: 30px; +} + +.margin-mint { + margin-top: 120px; +} + +.lds-ellipsis { + display: inline-block; + position: relative; + width: 80px; + height: 80px; +} + +.lds-ellipsis div { + position: absolute; + top: 33px; + width: 13px; + height: 13px; + border-radius: 50%; + background: #ff2424; + animation-timing-function: cubic-bezier(0, 1, 1, 0); +} + +.lds-ellipsis div:nth-child(1) { + left: 8px; + animation: lds-ellipsis1 0.6s infinite; +} + +.lds-ellipsis div:nth-child(2) { + left: 8px; + animation: lds-ellipsis2 0.6s infinite; +} + +.lds-ellipsis div:nth-child(3) { + left: 32px; + animation: lds-ellipsis2 0.6s infinite; +} + +.lds-ellipsis div:nth-child(4) { + left: 56px; + animation: lds-ellipsis3 0.6s infinite; +} + +@keyframes lds-ellipsis1 { + 0% { + transform: scale(0); + } + + 100% { + transform: scale(1); + } +} + +@keyframes lds-ellipsis3 { + 0% { + transform: scale(1); + } + + 100% { + transform: scale(0); + } +} + +@keyframes lds-ellipsis2 { + 0% { + transform: translate(0, 0); + } + + 100% { + transform: translate(24px, 0); + } +} +.link-styles { + color: #4f58a3; +} +header { + z-index: 999; +} + +.notify { + top: 63px; + width: 100vw; + font-size: 14px; +} + +.gradientButton { + background: linear-gradient(to right, var(--gradOne), var(--gradTwo)); +} diff --git a/minsta/src/app/layout.tsx b/minsta/src/app/layout.tsx new file mode 100644 index 00000000..42ccb588 --- /dev/null +++ b/minsta/src/app/layout.tsx @@ -0,0 +1,37 @@ +"use client"; +import Header from "@/components/header"; +import "./globals.css"; +import "@near-wallet-selector/modal-ui/styles.css"; +import { Inter } from "next/font/google"; +import Footer from "@/components/footer"; +import Providers from "@/providers/providers"; +import Navigation from "@/components/navigation"; +import Modal from "@/components/modal"; +import MintingClosed from "@/components/MintingClosed"; +const inter = Inter({ subsets: ["latin"] }); + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + +
+ + +
+
+ + + {children} + + +
+ + + ); +} diff --git a/minsta/src/app/leaderboard/page.tsx b/minsta/src/app/leaderboard/page.tsx new file mode 100644 index 00000000..8ec77009 --- /dev/null +++ b/minsta/src/app/leaderboard/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import { LeaderboardPage } from "@/components/pages/leaderboard"; + +export default function Leaderboard() { + return ; +} diff --git a/minsta/src/app/page.tsx b/minsta/src/app/page.tsx new file mode 100644 index 00000000..92352ce6 --- /dev/null +++ b/minsta/src/app/page.tsx @@ -0,0 +1,35 @@ +import { HomePage } from "@/components/HomePage"; +import { MINSTA_META } from "@/data/fallback"; +import { Metadata } from "next"; + +export const metadata: Metadata = { + title: "EthBerlin04 - Hackaton Center", + openGraph: { + title: "EthBerlin04 - Hackaton Center", + description: + process.env.NEXT_PUBLIC_META_DESCRIPTION ?? MINSTA_META.description, + images: [ + { + type: "image/png", + url: process.env.NEXT_PUBLIC_META_IMAGE ?? MINSTA_META.image, + width: "1200", + height: "630", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: "EthBerlin04 - Hackaton Center", + description: + process.env.NEXT_PUBLIC_META_DESCRIPTION ?? MINSTA_META.description, + siteId: "1467726470533754880", + creator: "Mintbase", + images: process.env.NEXT_PUBLIC_META_IMAGE ?? MINSTA_META.image, + }, + description: + process.env.NEXT_PUBLIC_META_DESCRIPTION ?? MINSTA_META.description, +}; + +export default function Home() { + return ; +} diff --git a/minsta/src/components/Alert.tsx b/minsta/src/components/Alert.tsx new file mode 100644 index 00000000..71bf5140 --- /dev/null +++ b/minsta/src/components/Alert.tsx @@ -0,0 +1,43 @@ +"use client"; + +import { Toaster, ToastBar, toast } from "react-hot-toast"; + +export const Alert = () => { + const IS_DEBUG_MODE = + global?.window && + (window.location.href.includes("localhost") || + window.location.href.includes("vercel.app")); + + if (!IS_DEBUG_MODE) return null; + + return ( + + {(t) => ( + + {({ icon, message }) => ( + <> + {t.type !== "loading" && ( + + )} + {icon} + {message} + + + )} + + )} + + ); +}; diff --git a/minsta/src/components/HomePage.tsx b/minsta/src/components/HomePage.tsx new file mode 100644 index 00000000..6fe9921f --- /dev/null +++ b/minsta/src/components/HomePage.tsx @@ -0,0 +1,17 @@ +"use client"; + +import { useMbWallet } from "@mintbase-js/react"; +import { useRouter } from "next/navigation"; +import { LeaderboardPage } from "./pages/leaderboard"; + +export const HomePage = () => { + const { connect, isConnected } = useMbWallet(); + const router = useRouter(); + + return ( +
+
Hackaton Center: Mint dynamic NFTs that evolve as you level up
+ +
+ ); +}; diff --git a/minsta/src/components/MintingClosed.tsx b/minsta/src/components/MintingClosed.tsx new file mode 100644 index 00000000..48f393e1 --- /dev/null +++ b/minsta/src/components/MintingClosed.tsx @@ -0,0 +1,15 @@ +import { constants } from "@/constants"; +import { usePathname } from "next/navigation"; + +const MintingClosed = () => { + const pathname = usePathname(); + const { isClosed } = constants; + + return isClosed && !pathname.includes("meta") ? ( +
+ Minting is closed. Thanks to everyone who participated. +
+ ) : null; +}; + +export default MintingClosed; diff --git a/minsta/src/components/RewardsModal.tsx b/minsta/src/components/RewardsModal.tsx new file mode 100644 index 00000000..2db225e1 --- /dev/null +++ b/minsta/src/components/RewardsModal.tsx @@ -0,0 +1,95 @@ +"use client"; + +import { useApp } from "@/providers/app"; +import { useMbWallet } from "@mintbase-js/react"; +import React, { useEffect } from "react"; +import InlineSVG from "react-inlinesvg"; + +const RewardsModal = ({ + children, + texts, +}: { + children?: React.ReactNode; + texts: any; +}) => { + const { isRewardsModalOpen, closeModal } = useApp(); + const { connect, isConnected, activeAccountId } = useMbWallet(); + + useEffect(() => { + if (!isRewardsModalOpen) return; + // Disable scrolling on the background (body) when the modal is open + document.body.style.overflow = "hidden"; + return () => { + // Re-enable scrolling when the modal is closed + document.body.style.overflow = "auto"; + }; + }, [isRewardsModalOpen]); + + const stopPropagation = (e: any) => { + e.stopPropagation(); + }; + + if (!isRewardsModalOpen) return null; + + return ( +
+
+
+
+

{"Rewards"}

+
+ +
+
+ {texts.prizes.one} +

{texts.prizes.title_one}

+
+
+ {texts.prizes.two} +

{texts.prizes.title_two}

+
+
+ {texts.prizes.three} +

{texts.prizes.title_three}

+
+
+ +
+ +
+ +
+

POWERED BY

+
+ + +
+
+
+ +
+ 100% free to use: no creditcard or crypto required! +
+
+
+ ); +}; + +export default RewardsModal; diff --git a/minsta/src/components/Spinner.tsx b/minsta/src/components/Spinner.tsx new file mode 100644 index 00000000..a0bee144 --- /dev/null +++ b/minsta/src/components/Spinner.tsx @@ -0,0 +1,10 @@ +export const Spinner = () => { + return ( +
+
+
+
+
+
+ ) +} diff --git a/minsta/src/components/buttons/ViewYourNft.tsx b/minsta/src/components/buttons/ViewYourNft.tsx new file mode 100644 index 00000000..47cdad33 --- /dev/null +++ b/minsta/src/components/buttons/ViewYourNft.tsx @@ -0,0 +1,30 @@ +"use client"; +import React from "react"; +import Link from "next/link"; +import { constants } from "@/constants"; +import { useMbWallet } from "@mintbase-js/react"; +import InlineSVG from "react-inlinesvg"; + +const ViewYourNfts = () => { + const { activeAccountId, isConnected } = useMbWallet(); + + return isConnected ? ( +
+ + View your NFTs + + +
+ ) : null; +}; + +export default ViewYourNfts; diff --git a/minsta/src/components/buttons/back-button.tsx b/minsta/src/components/buttons/back-button.tsx new file mode 100644 index 00000000..47f60da4 --- /dev/null +++ b/minsta/src/components/buttons/back-button.tsx @@ -0,0 +1,22 @@ +"use client"; +import React from "react"; +import { useRouter } from "next/navigation"; + +const BackButton = () => { + const router = useRouter(); + + const goBack = () => { + router.back(); + }; + + return ( + + ); +}; + +export default BackButton; diff --git a/minsta/src/components/buttons/leaderboard-button.tsx b/minsta/src/components/buttons/leaderboard-button.tsx new file mode 100644 index 00000000..dd8642e6 --- /dev/null +++ b/minsta/src/components/buttons/leaderboard-button.tsx @@ -0,0 +1,22 @@ +"use client"; +import React from "react"; +import { useRouter } from "next/navigation"; + +const LeaderboardButton = () => { + const router = useRouter(); + + const handleClick = () => { + router.push("/leaderboard"); + }; + + return ( + + ); +}; + +export default LeaderboardButton; diff --git a/minsta/src/components/buttons/logo-button.tsx b/minsta/src/components/buttons/logo-button.tsx new file mode 100644 index 00000000..a61ee317 --- /dev/null +++ b/minsta/src/components/buttons/logo-button.tsx @@ -0,0 +1,18 @@ +"use client"; +import React from 'react'; +import { useRouter } from 'next/navigation'; + +const LogoButton = () => { + const router = useRouter(); + + return ( + + ); +}; + +export default LogoButton; \ No newline at end of file diff --git a/minsta/src/components/buttons/profile-button.tsx b/minsta/src/components/buttons/profile-button.tsx new file mode 100644 index 00000000..cfb3054f --- /dev/null +++ b/minsta/src/components/buttons/profile-button.tsx @@ -0,0 +1,18 @@ +"use client"; +import React from "react"; +import { useRouter } from "next/navigation"; + +const ProfileButton = () => { + const router = useRouter(); + + return ( + + ); +}; + +export default ProfileButton; diff --git a/minsta/src/components/feed/ImageThumb.tsx b/minsta/src/components/feed/ImageThumb.tsx new file mode 100644 index 00000000..c95f8de5 --- /dev/null +++ b/minsta/src/components/feed/ImageThumb.tsx @@ -0,0 +1,78 @@ +"use client"; + +import React, { useState } from "react"; +import { constants } from "@/constants"; + +import Image from "next/image"; +import Link from "next/link"; +import { getImageUrl } from "@/utils/imageUrl"; + +const ImageThumb = ({ token, index }: any) => { + const imageUrl = token?.media; + const [error, setError] = useState(false); + + const handleError = () => { + setError(true); + }; + + if (error) + return ( +
+
+

No Image Metadata

+

+ There was an Error with the image. +

+
+
+ ); + + if (imageUrl) { + const finalUrl = getImageUrl(imageUrl); + + return ( +
+ + {`Token + + +
+ ); + } else { + return null; + } +}; + +export const MemoizedImageThumb = React.memo(ImageThumb); diff --git a/minsta/src/components/feed/feedscroll.tsx b/minsta/src/components/feed/feedscroll.tsx new file mode 100644 index 00000000..6dcee0f5 --- /dev/null +++ b/minsta/src/components/feed/feedscroll.tsx @@ -0,0 +1,75 @@ +import { FETCH_FEED } from "@/data/queries/feed.graphl"; +import useInfiniteScrollGQL from "@/hooks/useInfiniteScroll"; +import { useMemo, useRef } from "react"; +import { useIntersectionObserver } from "usehooks-ts"; +import { MemoizedImageThumb } from "./ImageThumb"; + +export const FeedScroll = ({ blockedNfts }: any) => { + const ref = useRef(null); + const entry = useIntersectionObserver(ref, {}); + const isVisible = !!entry?.isIntersecting; + + const { items, loadingItems, total, error } = useInfiniteScrollGQL( + "q_FETCH_FEED", + isVisible, + { query: FETCH_FEED } + ); + + const memoizedData = useMemo(() => { + const uniqueMetadataIds = new Set(); + + const filteredData = items?.filter((token: any) => { + if (uniqueMetadataIds.has(token.metadata_id)) { + return false; + } + + uniqueMetadataIds.add(token.metadata_id); + + // Move the filtering logic here + if (!!blockedNfts && blockedNfts?.includes(token?.metadata_id)) { + return false; + } + + return true; + }); + + return filteredData; + }, [blockedNfts, items]); + + if (error) { + return ( +
+ {" "} + Error.
Please contact Mintbase Team at{" "} + + {" "} + Mintbase DEV Telegram + +
+ ); + } + + return ( + <> + {memoizedData?.map((token: any, index: number) => { + return ( + + ); + })} +
+ {loadingItems?.map((item, i) => ( +
+
+
+ ))} +
+ + ); +}; diff --git a/minsta/src/components/footer.tsx b/minsta/src/components/footer.tsx new file mode 100644 index 00000000..2452e5d8 --- /dev/null +++ b/minsta/src/components/footer.tsx @@ -0,0 +1,21 @@ +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faGithub, faTwitter } from '@fortawesome/free-brands-svg-icons' + +const Footer = () => { + + return ( + + ) +}; + +export default Footer; diff --git a/minsta/src/components/header.tsx b/minsta/src/components/header.tsx new file mode 100644 index 00000000..06a232e9 --- /dev/null +++ b/minsta/src/components/header.tsx @@ -0,0 +1,84 @@ +"use client"; +import { useApp } from "@/providers/app"; +import { useMbWallet } from "@mintbase-js/react"; +import { usePathname, useRouter } from "next/navigation"; +import { ReactEventHandler } from "react"; +import InlineSVG from "react-inlinesvg"; +import Image from 'next/image' + +const Header = () => { + const pathname = usePathname(); + const { isConnected, selector, connect, activeAccountId } = useMbWallet(); + const { push } = useRouter(); + const { openModal } = useApp(); + + const handleSignout = async () => { + const wallet = await selector.wallet(); + return wallet.signOut(); + }; + + const handleSignIn = async () => { + return connect(); + }; + + const headerButtonsNotHome = (onClick: ReactEventHandler) => ( +
+
+ +
+
+ pokeball +
+
+ {isConnected ? ( + + ) : ( + + )} + +
+
+ ); + + const renderHeaderButtons = () => { + switch (pathname) { + case "/": + return ( +
+
+ +
+
+ pokeball +
+
+ {isConnected ? ( + + ) : ( + + )} + +
+
+ ); + case "/leaderboard": + return headerButtonsNotHome(() => push("/")); + default: + return headerButtonsNotHome(() => push("/")); + } + }; + + return ( + <> +
+ {renderHeaderButtons()} +
+ + ); +}; + +export default Header; diff --git a/minsta/src/components/metaPage.tsx b/minsta/src/components/metaPage.tsx new file mode 100644 index 00000000..02ebd0f9 --- /dev/null +++ b/minsta/src/components/metaPage.tsx @@ -0,0 +1,95 @@ +"use client"; + +import Image from "next/image"; + +import { motion } from "framer-motion"; +import Link from "next/link"; +import { constants } from "@/constants"; +import InlineSVG from "react-inlinesvg"; +import { getImageUrl } from "@/utils/imageUrl"; + +export const MetaPage = ({ meta, slug }: any) => { + const finalUrl = getImageUrl(meta?.data?.nft_metadata?.[0]?.media); + + return ( + +
+ {meta?.data?.nft_metadata?.[0]?.title} + +
+

+ {" "} + {meta?.data?.nft_metadata?.[0]?.title} +

+

+ {" "} + {meta?.data?.nft_metadata?.[0]?.description} +

+

+ {" "} + Owner:{" "} + + {" "} + {meta?.data?.owners?.[0]?.owner}{" "} + +

+

+ {" "} + Contract:{" "} + + {" "} + {meta?.data?.nft_metadata?.[0]?.nft_contract_id}{" "} + +

+
+ + View on Mintbase + + +
+
+ ); +}; diff --git a/minsta/src/components/modal.tsx b/minsta/src/components/modal.tsx new file mode 100644 index 00000000..d7c8d5a9 --- /dev/null +++ b/minsta/src/components/modal.tsx @@ -0,0 +1,113 @@ +"use client"; + +import { MINSTA_TEXTS } from "@/data/fallback"; +import { useApp } from "@/providers/app"; +import { useMbWallet } from "@mintbase-js/react"; +import React, { useEffect } from "react"; +import InlineSVG from "react-inlinesvg"; + +const Modal = ({ children }: { children?: React.ReactNode }) => { + const { isMainModalOpen, closeModal } = useApp(); + const { connect, isConnected } = useMbWallet(); + + const texts = { + about: { + first: process.env.NEXT_PUBLIC_TEXT_ABOUT_1ST || MINSTA_TEXTS.about.first, + sec: process.env.NEXT_PUBLIC_TEXT_ABOUT_2ND || MINSTA_TEXTS.about.sec, + third: process.env.NEXT_PUBLIC_TEXT_ABOUT_3RD || MINSTA_TEXTS.about.third, + }, + }; + + useEffect(() => { + if (!isMainModalOpen) return; + // Disable scrolling on the background (body) when the modal is open + document.body.style.overflow = "hidden"; + return () => { + // Re-enable scrolling when the modal is closed + document.body.style.overflow = "auto"; + }; + }, [isMainModalOpen]); + + const stopPropagation = (e: any) => { + e.stopPropagation(); + }; + + if (!isMainModalOpen) return null; + + return ( +
+
+
+
+

+ {process.env.NEXT_PUBLIC_APP_TITLE || "Minsta"} +

+
+ +
+
+ +

{texts.about.first}

+
+
+ +

{texts.about.sec}

+
+
+ +

{texts.about.third}

+
+
+ +
+ +
+ +
+

POWERED BY

+
+ + +
+
+
+ +
+ 100% free to use: no credit card or crypto required! +
+
+
+ ); +}; + +export default Modal; diff --git a/minsta/src/components/navigation.tsx b/minsta/src/components/navigation.tsx new file mode 100644 index 00000000..273a94fd --- /dev/null +++ b/minsta/src/components/navigation.tsx @@ -0,0 +1,18 @@ +"use client"; +import { usePathname } from "next/navigation"; +import BackButton from "./buttons/back-button"; +import LeaderboardButton from "./buttons/leaderboard-button"; +import LogoButton from "./buttons/logo-button"; +import ProfileButton from "./buttons/profile-button"; + +const Navigation = ({ children }: { children: React.ReactNode }) => { + const pathname = usePathname(); + + return ( +
+ {children} +
+ ); +}; + +export default Navigation; diff --git a/minsta/src/components/pages/leaderboard.tsx b/minsta/src/components/pages/leaderboard.tsx new file mode 100644 index 00000000..22529ae8 --- /dev/null +++ b/minsta/src/components/pages/leaderboard.tsx @@ -0,0 +1,64 @@ +"use client"; + +import { constants } from "@/constants"; +import ViewYourNfts from "../buttons/ViewYourNft"; +import RewardsModal from "../RewardsModal"; +import { useLeaderBoardData } from "@/hooks/useLeaderboard"; +import Link from "next/link"; +import { callViewMethod } from '../../utils/utils' +import { useState, useEffect } from "react"; +import Image from 'next/image'; + +export const LeaderboardPage = () => { + const { openModal, leaderboard, activeAccountId, texts } = useLeaderBoardData(); + const [nftList, setNftList] = useState<{ owner_id: string, metadata: { extra: string, media: string }, token_id: string }[]>([]); + + const checkNFT = async () => { + try { + const response = await callViewMethod({ contractId: "ethberlin04hackaton.mintspace3.testnet", method: "nft_tokens", args: { limit: 10, offset: 0 } }) + if (response && Array.isArray(response)) { + setNftList(response); + } else { + console.log('Response is not an array'); + } + console.log(response); + } catch (e) { + console.log(e) + } + } + + useEffect(() => { + checkNFT(); + }, []); + + return ( + <> +
+
Leaderboard
+
+ + +
+
+
+ 👤 {nftList?.length}{" "} + Hackers +
+ +
+ {nftList + .sort((a, b) => b.metadata.extra.split(",").length - a.metadata.extra.split(",").length) + .map((nft) => ( +
+ {nft.owner_id} +

Level {nft.metadata.extra.split(",").length}

+ nft +
+ ))} +
+ +
+
+ + ); +}; diff --git a/minsta/src/constants.ts b/minsta/src/constants.ts new file mode 100644 index 00000000..d534f2fd --- /dev/null +++ b/minsta/src/constants.ts @@ -0,0 +1,34 @@ +require("dotenv").config(); + +const appName: string = process.env.NEXT_PUBLIC_APP_TITLE || "MINTBASE"; +const network = process.env.NEXT_PUBLIC_NETWORK || "mainnet"; +const proxyContractAddress = + process.env.NEXT_PUBLIC_PROXY_MINTER_CONTRACT_ADDRESS || + "0.drop.proxy.mintbase.near"; +const legacyProxyAddresses = + process.env.NEXT_PUBLIC_LEGACY_PROXY_ADDRESSES?.split(",") || []; +const tokenContractAddress = + process.env.NEXT_PUBLIC_NFT_CONTRACT_ADDRESS || "moments.mintbase1.near"; + +const mintbaseBaseUrl = + process.env.NEXT_PUBLIC_BASE_URL || "https://mintbase.xyz"; + +const mintbaseWalletUrl = + process.env.NEXT_PUBLIC_MINTBASE_WALLET_URL || "https://wallet.mintbase.xyz"; + +const twitterText = + process.env.NEXT_PUBLIC_TWITTER || + "Exploring%20unforgettable%20moments%20at%20%23Mintbase%20%40Mintbase%20%40NEARProtocol%20%23BOS%20%23NEAR%0aMint%20yours%20here%3A%20https%3A%2F%2Fminsta.mintbase.xyz"; + +export const constants = { + appName, + proxyContractAddress, + legacyProxyAddresses, + tokenContractAddress, + network, + mintbaseBaseUrl, + mintbaseWalletUrl, + twitterText, + isClosed: process.env.NEXT_PUBLIC_MINTING_CLOSED === "true" || false, + showRewards: process.env.NEXT_PUBLIC_SHOW_REWARDS === "true" || false, +}; diff --git a/minsta/src/data/fallback.ts b/minsta/src/data/fallback.ts new file mode 100644 index 00000000..2a164e1e --- /dev/null +++ b/minsta/src/data/fallback.ts @@ -0,0 +1,24 @@ + +export const MINSTA_META = { + description: "Share your best moments with Mintbase and Minsta!", + title: "Mint Moments on Mintbase", + twitter: + "Explore%20unforgettable%20moments%20at%20%2Mintbase%20%40Mintbase%20%40NEARProtocol%20%23BOS%20%23NEAR", + image: "./images/thumbnail.png", +}; + +export const MINSTA_TEXTS = { + prizes: { + one: "10N", + two: "5N", + three: "5N", + title_one: "Top 10 on the Leaderboard", + title_two: "Top 11-20 on the Leaderboard", + title_three: "Most liked tweet with the hashtag MINSTA", + }, + about: { + first: "Take a picture", + sec: "Upload and it will mint as an NFT", + third: "Climb up the Leaderboard by minting", + }, +}; diff --git a/minsta/src/data/fetch.ts b/minsta/src/data/fetch.ts new file mode 100644 index 00000000..9481016b --- /dev/null +++ b/minsta/src/data/fetch.ts @@ -0,0 +1,29 @@ + +export const REQUEST_HEADERS = { + "Cache-Control": "public, max-age=31536000, immutable", + "mb-api-key": "omni-site", +}; + +export enum REQUEST_METHODS { + get = "GET", + post = "POST", +} + +export const REQUEST_OPTIONS = (method: REQUEST_METHODS) => { + return { method: method, headers: REQUEST_HEADERS }; +}; + +export const fetchApi = async ( + url: string, + method: REQUEST_METHODS +): Promise => { + try { + const result = await fetch(url, REQUEST_OPTIONS(method)); + + if (result) { + return await result.json(); + } + } catch (error) { + console.error(error); + } +}; \ No newline at end of file diff --git a/minsta/src/data/getBlockedNfts.ts b/minsta/src/data/getBlockedNfts.ts new file mode 100644 index 00000000..bdfa4d62 --- /dev/null +++ b/minsta/src/data/getBlockedNfts.ts @@ -0,0 +1,7 @@ +import { REQUEST_METHODS, fetchApi } from "./fetch"; + +export const getBlockedNfts = async (): Promise => { + const fetchUrl = `https://surface-api-z3w7d7dnea-ew.a.run.app/blocked-nfts`; + + return fetchApi(fetchUrl, REQUEST_METHODS.get); +}; diff --git a/minsta/src/data/graphqlService.ts b/minsta/src/data/graphqlService.ts new file mode 100644 index 00000000..43642764 --- /dev/null +++ b/minsta/src/data/graphqlService.ts @@ -0,0 +1,99 @@ +import { nearEndpoints } from "./network"; +import { constants } from "@/constants"; +import { extractErrorMessage } from "@/providers/data"; +import request from "graphql-request"; +import { toast } from "react-hot-toast"; + +export type GqlFetchResult = { + data?: T; + error?: unknown; +}; + +export const graphqlQLServiceNew = async ({ + query, + variables, + network, +}: { + query: string; + variables?: Record; + network?: "testnet" | "mainnet"; +}): Promise> => { + const net = network ?? constants.network; + const isTestnet = net === "testnet"; + + const baseUrl = isTestnet + ? nearEndpoints.testnet.graph + : nearEndpoints.mainnet.graph; + + const headers = { + "content-type": "application/json", + "mb-api-key": "anon", + "Access-Control-Allow-Origin": "*", + }; + + try { + const data = await request(baseUrl, query, variables, headers); + return { data: data as T }; + } catch (error: unknown) { + const errMsg = extractErrorMessage(error as Error); + + toast.error(`src/data/graphqlService.ts \n \n Query: ${query} \n \n ${errMsg}`, { + duration: 40000, + position: "bottom-right", + id:"graphQl" + }); + + throw error; + } +}; + +export const graphQLService = async ({ + query, + variables, + network, +}: { + query: string; + variables?: Record; + network?: "testnet" | "mainnet"; +}) => { + try { + const data = await graphQlFetch(query, variables, network).then( + async (data: Response) => { + const res = await data.json(); + return res.data; + } + ); + + return { data }; + } catch (error) { + console.log(error, "error"); + return { error: `Query Error: ${error}` }; + } +}; + +export const graphQlFetch = async ( + query: string, + variables?: Record, + network?: "testnet" | "mainnet" +): Promise => { + const net = network ?? constants.network; + const isTestnet = net === "testnet"; + + const baseUrl = isTestnet + ? nearEndpoints.testnet.graph + : nearEndpoints.mainnet.graph; + + const res = fetch(baseUrl, { + method: "POST", + body: JSON.stringify({ + query: query, + variables: variables, + }), + headers: { + "content-type": "application/json", + "mb-api-key": "omni-site", + }, + }); + + return await res; +}; diff --git a/minsta/src/data/network.ts b/minsta/src/data/network.ts new file mode 100644 index 00000000..f82030c4 --- /dev/null +++ b/minsta/src/data/network.ts @@ -0,0 +1,8 @@ +export const nearEndpoints = { + testnet: { + graph: "https://graph.mintbase.xyz/testnet", + }, + mainnet: { + graph: "https://graph.mintbase.xyz/", + }, +}; diff --git a/minsta/src/data/queries/feed.graphl.ts b/minsta/src/data/queries/feed.graphl.ts new file mode 100644 index 00000000..3cd55df9 --- /dev/null +++ b/minsta/src/data/queries/feed.graphl.ts @@ -0,0 +1,50 @@ +import { gql } from 'graphql-request'; + + +export const FETCH_FEED = gql` + query minsta_fetch_feed_minted_tokens( + $accountIds: [String!]! + $contractAddress: String + $limit: Int + $offset: Int + ) { + token: mb_views_nft_tokens( + where: { + minter: { _in: $accountIds } + nft_contract_id: { _eq: $contractAddress } + burned_timestamp: { _is_null: true } + metadata_content_flag: { _is_null: true } + nft_contract_content_flag: { _is_null: true } + } + order_by: { minted_timestamp: desc }, + offset: $offset, + limit: $limit + ) { + id: token_id + createdAt: minted_timestamp + media + title + description + metadata_id + } + mb_views_nft_tokens_aggregate(where: {minter: {_in: $accountIds}, nft_contract_id: {_eq: $contractAddress}, burned_timestamp: {_is_null: true}}) { + aggregate { + count + } + } + } +`; + +export const FETCH_FIRST_TOKEN = gql` +query minsta_fetch_firstToken($accountId: String!, $contractAddress: String) { + token: mb_views_nft_tokens(where: {minter: {_eq: $accountId}, nft_contract_id: {_eq: $contractAddress}, + burned_timestamp: {_is_null: true}, metadata_content_flag: {_is_null: true}, nft_contract_content_flag: {_is_null: true}}, order_by: {minted_timestamp: desc}, limit: 1, offset: 0) { + id: token_id + createdAt: minted_timestamp + media + title + description + metadata_id + } +} +` \ No newline at end of file diff --git a/minsta/src/data/queries/meta.graphql.ts b/minsta/src/data/queries/meta.graphql.ts new file mode 100644 index 00000000..705ed387 --- /dev/null +++ b/minsta/src/data/queries/meta.graphql.ts @@ -0,0 +1,21 @@ +import { gql } from "graphql-request"; + +export const FETCH_META = gql` +query v2_omnisite_GetMetadataStaticReferences($metadataId: String!) { + nft_metadata(where: {id: {_eq: $metadataId}}) { + title + media + description + nft_contract_id + } + owners: nft_tokens( + where: { + metadata_id: {_eq: $metadataId }, + burned_timestamp: { _is_null: true } + } + distinct_on: owner + ) { + owner + } +} +`; diff --git a/minsta/src/data/types.ts b/minsta/src/data/types.ts new file mode 100644 index 00000000..846cd45b --- /dev/null +++ b/minsta/src/data/types.ts @@ -0,0 +1,35 @@ +export interface TokenData { + createdAt: string; + description: string; + id: string; + media: string; + metadata_id: string; + title: string; +} + +export interface TokenFeedData { + token: TokenData[]; +} + +export interface InfiniteScrollHook { + mb_views_nft_tokens_aggregate: { aggregate: { count: string } }; + token: TokenData[]; +} + +export interface InfiniteScrollHookResult { + data: InfiniteScrollHook; +} + +export interface FirstTokenResult { + tokenError: unknown; + isLoading: boolean; + tokensFetched: TokenData[] | null; + newToken: TokenData | null; +} + +export interface FirstTokenProps { + newToken: TokenData | null; + isLoading: boolean; + firstTokenisBlocked: boolean; + isFirstTokenError:boolean +} diff --git a/minsta/src/data/useGraphQlQuery.ts b/minsta/src/data/useGraphQlQuery.ts new file mode 100644 index 00000000..c84be9ed --- /dev/null +++ b/minsta/src/data/useGraphQlQuery.ts @@ -0,0 +1,45 @@ +import type { QueryObserverResult } from "@tanstack/react-query"; +import { useQuery } from "@tanstack/react-query"; +import { graphqlQLServiceNew } from "./graphqlService"; + +interface GraphQlQueryResult { + data: T | undefined; + error: string; + isLoading: boolean; + refetch: () => Promise>; + isFetching: boolean; + status: "error" | "success" | "loading"; +} + +export interface GQLQueryOptions { + queryName: string; + query: string; + variables: Record; + queryOpts?: any; + queryParams?: any[]; +} + +export const useGraphQlQuery = ({ + queryName, + query, + variables, + queryOpts = {}, + queryParams = [], +}: GQLQueryOptions): GraphQlQueryResult => { + const queryObj = + queryParams.length > 0 ? [queryName, ...queryParams] : [queryName]; + + const { data, error, isLoading, refetch, isFetching, status } = useQuery( + queryObj, + () => graphqlQLServiceNew({ query, variables }), + { ...queryOpts, throwOnError: true } + ); + return { + data: data?.data, + error: error as string, + isLoading, + refetch, + isFetching, + status, + }; +}; diff --git a/minsta/src/hooks/useBlockedNfts.ts b/minsta/src/hooks/useBlockedNfts.ts new file mode 100644 index 00000000..7ca2cdf3 --- /dev/null +++ b/minsta/src/hooks/useBlockedNfts.ts @@ -0,0 +1,15 @@ +import { getBlockedNfts } from "@/data/getBlockedNfts"; +import { useQuery } from "@tanstack/react-query"; + +export const useBlockedNfts = () => { + const { data: blockedNfts } = useQuery( + ["q_getBlockedNfts"], + () => getBlockedNfts(), + { + initialData: null, // Set initial data as null + refetchInterval: 30000, // Automatically refetch every 120000 (2mins) + } + ); + + return { blockedNfts }; +}; \ No newline at end of file diff --git a/minsta/src/hooks/useCamera.ts b/minsta/src/hooks/useCamera.ts new file mode 100644 index 00000000..6d3bb14a --- /dev/null +++ b/minsta/src/hooks/useCamera.ts @@ -0,0 +1,114 @@ +import { useApp } from "@/providers/app"; +import React, { useEffect, useLayoutEffect, useState } from "react"; + +export const useCamera = () => { + const { setCameraRef } = useApp(); + const [facingMode, setFacingMode] = useState("environment"); + const [cameraLoaded, setCameraLoaded] = useState(false); + const [permissionGranted, setPermission] = useState(false); + const [pageLoaded, setPageLoaded] = useState(false); + const [picture, setPicture] = useState(null); + + const webcamRef = React.useRef(null); + + useLayoutEffect(() => { + if (!pageLoaded) { + const timeout = setTimeout(() => { + setPageLoaded(true); + }, 500); // 2000 milliseconds = 2 seconds + + return () => { + // Clear the timeout if the component unmounts or the effect re-runs + clearTimeout(timeout); + }; + } + }, []); // + + async function requestCameraPermission() { + try { + const stream = await navigator.mediaDevices.getUserMedia({ + video: true, + }); + + setPermission(true); // Update the permission state + // Don't forget to close the stream + stream.getTracks().forEach((track) => track.stop()); + } catch (error) { + // User denied permission or some other error occurred + console.error("Camera permission denied:", error); + } + } + + const askPermission = () => { + navigator?.permissions + .query({ name: "camera" as PermissionName }) + .then((permissionStatus) => { + if (permissionStatus.state === "granted") { + setPermission(true); + } else if (permissionStatus.state === "prompt") { + requestCameraPermission(); + } else { + console.log("Camera permission denied."); + } + }); + }; + + useEffect(() => { + if (document) { + document.body.classList.add("overflow-hidden"); + } + }, []); + + useEffect(() => { + // Check if camera permission is already granted + askPermission(); + }, []); + + useEffect(() => { + if (!webcamRef || !webcamRef.current) return; + + setCameraRef(webcamRef); + }, [setCameraRef, webcamRef]); + + const toggleCamera = () => { + const nextFacingMode = + facingMode === "environment" ? "user" : "environment"; + + setFacingMode(nextFacingMode); + }; + + const capture = React.useCallback(() => { + const webcamScreen = webcamRef as any; + const imageSrc = webcamScreen.current.getScreenshot(); + setPicture(imageSrc); + }, [webcamRef]); + + const tryAgain = () => { + setPicture(null); + }; + + const [initialLoad, setInitialLoad] = useState(true); + + useEffect(() => { + if (permissionGranted && initialLoad) { + // Initialize the camera after permission is granted on initial load + setCameraLoaded(true); + setInitialLoad(false); + } + }, [permissionGranted, initialLoad]); + + return { + tryAgain, + capture, + toggleCamera, + setCameraLoaded, + picture, + setPicture, + permissionGranted, + pageLoaded, + cameraLoaded, + webcamRef, + requestCameraPermission, + facingMode, + }; +}; diff --git a/minsta/src/hooks/useFeed.ts b/minsta/src/hooks/useFeed.ts new file mode 100644 index 00000000..28f891d0 --- /dev/null +++ b/minsta/src/hooks/useFeed.ts @@ -0,0 +1,53 @@ +import { useMemo } from "react"; +import { FETCH_FEED } from "../data/queries/feed.graphl"; +import { useGraphQlQuery } from "@/data/useGraphQlQuery"; +import { TokenData, TokenFeedData } from "@/data/types"; + +const useFeed = (props: { + accountId: string; + legacyProxyAddresses: string[]; + contractAddress: string; +}) => { + const { accountId, legacyProxyAddresses, contractAddress } = props; + const accountIds = [accountId, legacyProxyAddresses]; + const queryObj = { + queryName: "q_FETCH_FEED", + query: FETCH_FEED, + variables: { accountIds, contractAddress, limit: 11, offset: 1 }, + queryOpts: { staleTime: Infinity }, + }; + + const { + data, + isLoading, + isFetching, + error, + refetch: refetchNfts, + } = useGraphQlQuery(queryObj); + + const memoizedData = useMemo(() => { + const uniqueMetadataIds = new Set(); + + const filteredData = data?.token?.filter((token: TokenData) => { + if (uniqueMetadataIds.has(token.metadata_id)) { + return false; + } + + uniqueMetadataIds.add(token.metadata_id); + + return true; + }); + + return filteredData; + }, [data]); + + return { + data: memoizedData, + isLoading, + isFetching, + refetchNfts, + tokenFeedError: error, + }; +}; + +export { useFeed }; diff --git a/minsta/src/hooks/useFirstToken.ts b/minsta/src/hooks/useFirstToken.ts new file mode 100644 index 00000000..407d0eb0 --- /dev/null +++ b/minsta/src/hooks/useFirstToken.ts @@ -0,0 +1,96 @@ +import { FETCH_FIRST_TOKEN } from "@/data/queries/feed.graphl"; +import { useGraphQlQuery } from "@/data/useGraphQlQuery"; +import { constants } from "@/constants"; +import { useEffect, useState } from "react"; +import { FirstTokenResult, TokenData, TokenFeedData } from "@/data/types"; + +export const useFirstToken = (): FirstTokenResult => { + const [newToken, setNewToken] = useState(null); + const [tokensFetched, setTokensFetched] = useState(null); + + const queryObj = { + queryName: "q_FETCH_FIRST_TOKEN", + query: FETCH_FIRST_TOKEN, + variables: { + accountId: constants.proxyContractAddress, + contractAddress: constants.tokenContractAddress, + }, + queryOpts: { staleTime: Infinity, refetchInterval: 30000 }, + }; + + const { data, isLoading, refetch: refetchToken, error } = useGraphQlQuery(queryObj); + + useEffect(() => { + + if(error){ + console.error("GraphQL Error:", error); + } + + // media delay + + if (tokensFetched && tokensFetched?.length > 1) { + // window.location.reload(); + } + // new media aint null + if (data?.token[0]?.media !== null) { + // but the newToken previous stored is somehow an async bug so it re-state the new media + if (newToken?.media == null && data?.token[0]) { + setNewToken(data?.token[0]); + } + + // previous newToken is outdated like new coming media is id 301 and previous token 298 + if (newToken?.id) { + if (data?.token[0]?.id !== newToken?.id) { + + // if isnt in direct order reload the page to organize the order. + if ( + Number(data?.token[0]?.id) !== Number(newToken?.id) + 1 && + !isLoading + ) { + // window.location.reload(); + } + } + } + } + + // first load + + if ( + (data?.token[0] && !newToken) || + (data?.token[0] && tokensFetched && tokensFetched?.length < 1) + ) { + setNewToken(data?.token[0]); + } + + // check if the newToken coming is the next id. + + if ( + newToken !== null && + Number(data?.token[0]?.id) === Number(newToken?.id) + 1 && + data?.token[0]?.media + ) { + let newTokensFetched: TokenData[] = []; + + if (!tokensFetched) { + newTokensFetched = [newToken]; + } + + if (tokensFetched && tokensFetched?.length == 1) { + newTokensFetched = [newToken, ...tokensFetched]; + } + if (tokensFetched && tokensFetched?.length > 1) { + newTokensFetched = [newToken, ...tokensFetched]; + } + + setTokensFetched(newTokensFetched); + setNewToken(data?.token[0]); + } + }, [data?.token, newToken, tokensFetched]); + + return { + newToken: !isLoading ? newToken : null, + tokensFetched, + isLoading, + tokenError: error + }; +}; diff --git a/minsta/src/hooks/useHomePageData.ts b/minsta/src/hooks/useHomePageData.ts new file mode 100644 index 00000000..9770e1a4 --- /dev/null +++ b/minsta/src/hooks/useHomePageData.ts @@ -0,0 +1,68 @@ +import { FirstTokenProps, InfiniteScrollHook } from "@/data/types"; +import { useBlockedNfts } from "@/hooks/useBlockedNfts"; + +import { constants } from "@/constants"; +import { FETCH_FEED } from "@/data/queries/feed.graphl"; +import { useGraphQlQuery } from "@/data/useGraphQlQuery"; +import { useFirstToken } from "@/hooks/useFirstToken"; +import { useEffect } from "react"; + +export const useHomePageData = () => { + const { newToken, tokensFetched, isLoading, tokenError } = useFirstToken(); + + const isFirstTokenError = tokenError !== null; + + const { blockedNfts } = useBlockedNfts(); + + const queryObj = { + queryName: "q_FETCH_FEED", + query: FETCH_FEED, + variables: { + accountIds: [ + constants.proxyContractAddress, + ...constants.legacyProxyAddresses, + ], + contractAddress: constants.tokenContractAddress, + limit: 1, + offset: 0, + }, + queryOpts: { staleTime: Infinity }, + }; + + const { data, isLoading: totalLoading } = + useGraphQlQuery(queryObj); + + const firstTokenisBlocked: boolean = + newToken?.metadata_id && blockedNfts?.includes(newToken?.metadata_id); + + useEffect(() => { + let reloadTimeout: ReturnType; + + if (!newToken?.media) { + reloadTimeout = setTimeout(() => { + // Reload the page after 4 minutes (120,000 milliseconds) + window.location.reload(); + }, 360000); //4 minutes in milliseconds + } + + return () => { + // Clear the timeout if the component unmounts + clearTimeout(reloadTimeout); + }; + }, [newToken]); + + const firstTokenProps: FirstTokenProps = { + newToken, + isLoading, + firstTokenisBlocked, + isFirstTokenError, + }; + + return { + totalLoading, + totalNfts: data?.mb_views_nft_tokens_aggregate?.aggregate?.count, + firstTokenProps, + tokensFetched, + blockedNfts, + }; +}; diff --git a/minsta/src/hooks/useInfiniteScroll.ts b/minsta/src/hooks/useInfiniteScroll.ts new file mode 100644 index 00000000..472967c0 --- /dev/null +++ b/minsta/src/hooks/useInfiniteScroll.ts @@ -0,0 +1,160 @@ +import { constants } from "@/constants"; +import { graphqlQLServiceNew } from "@/data/graphqlService"; +import { InfiniteScrollHook, InfiniteScrollHookResult } from "@/data/types"; +import { extractErrorMessage } from "@/providers/data"; +import { useInfiniteQuery } from "@tanstack/react-query"; +import { useEffect, useReducer } from "react"; +import { toast } from "react-hot-toast"; +import { useMediaQuery } from "usehooks-ts"; + +const initialState = { + items: [], + offset: 1, + isLoading: false, + calledOffsets: [0], + total: null, +}; + +const reducer = (state: any, action: any) => { + switch (action.type) { + case "FETCH_START": + return { ...state, isLoading: true }; + case "FETCH_SUCCESS": + return { + ...state, + items: [...state.items, ...action.payload], + }; + case "FETCH_RESET": + return initialState; + + case "SET_TOTAL": + return { ...state, total: action.payload }; + case "SET_CALLED_OFFSETS": + return { + ...state, + calledOffsets: [...state.calledOffsets, action.payload], + }; + + case "SET_OFFSET": + return { ...state, offset: action.payload }; + case "SET_LOADING": + return { ...state, isLoading: action.payload }; + case "SET_ERROR": + return { ...state, error: action.payload }; + default: + return state; + } +}; + +const useInfiniteScrollGQL = ( + queryKey: string, + isVisible: boolean, + graphQLObj?: any +) => { + const [state, dispatch] = useReducer(reducer, initialState); + + const isDesktop = useMediaQuery("(min-width: 768px)"); + const fetchNum = isDesktop ? 11 : 3; + + const fetchItems = async () => { + dispatch({ type: "FETCH_START" }); + + const variables = { + limit: fetchNum, + accountIds: [ + constants.proxyContractAddress, + ...constants.legacyProxyAddresses, + ], + contractAddress: constants.tokenContractAddress, + offset: state.offset === 1 ? 1 : (Number(state.offset) - 1) * fetchNum, + }; + + const scrollData = (await graphqlQLServiceNew({ + query: graphQLObj.query, + variables: variables, + })) as InfiniteScrollHookResult; + + const { data } = scrollData; + + dispatch({ type: "SET_LOADING", payload: false }); + dispatch({ type: "SET_OFFSET", payload: state.offset + 1 }); + dispatch({ type: "SET_CALLED_OFFSETS", payload: state.offset + 1 }); + dispatch({ + type: "SET_TOTAL", + payload: data?.mb_views_nft_tokens_aggregate?.aggregate?.count, + }); + + dispatch({ + type: "FETCH_SUCCESS", + payload: data?.token, + }); + + return data?.token; + }; + + // useInfiniteQuery + + const { data, fetchNextPage, isFetchingNextPage, error } = useInfiniteQuery( + [queryKey, state.offset], + fetchItems, + { + getNextPageParam: () => state.offset >= 0, + cacheTime: Infinity, + refetchOnWindowFocus: false, + enabled: + !state.calledOffsets.includes(state.offset) || state.offset === 1, + } + ); + + // need to do error treatment, for now will render an error message on screen + + useEffect(() => { + if (error) { + console.error(error); + dispatch({ type: "SET_ERROR", payload: error }); + + const errMsg = extractErrorMessage(error as Error); + toast.error( + `src/hooks/useInfiniteScroll.ts \n \n Query: ${queryKey} \n \n ${errMsg}`, + { duration: 40000, position: "bottom-left", id: "scroll" } + ); + } + }, [error]); + + const handleScroll = () => { + const hasNewPage = state.items.length < state.total; + + if (!state.isLoading && isVisible && hasNewPage && !isFetchingNextPage) { + const newOffset = state.offset + 1; + if (!state.calledOffsets.includes(newOffset)) { + fetchNextPage(); + } + } + }; + + // scroll mechanism, detects if users reached bottom + + useEffect(() => { + window.addEventListener("scroll", handleScroll); + return () => window.removeEventListener("scroll", handleScroll); + }, [state.offset, isVisible]); + + const resetItemList = () => { + dispatch({ type: "FETCH_RESET" }); + }; + + const isMinthenInfiniteScrollNum = state.items.length < fetchNum; + + return { + items: state.items, + resetItemList, + loadingItems: + state.items.length < state.total && !isMinthenInfiniteScrollNum + ? Array.from({ length: 1 }, (_) => ({ id: "" })) + : null, + total: state.total, + error: state.error, + }; +}; + +export default useInfiniteScrollGQL; diff --git a/minsta/src/hooks/useLeaderboard.ts b/minsta/src/hooks/useLeaderboard.ts new file mode 100644 index 00000000..e7082388 --- /dev/null +++ b/minsta/src/hooks/useLeaderboard.ts @@ -0,0 +1,87 @@ +import { isUndefined } from "lodash"; +import { useMemo } from "react"; +import { useMbWallet } from "@mintbase-js/react"; +import { constants } from "@/constants"; +import { useApp } from "@/providers/app"; +import { MINSTA_TEXTS } from "@/data/fallback"; +import { useGraphQlQuery } from "@/data/useGraphQlQuery"; + +interface LeaderboardData { + token: { + ownerId: string; + }[]; +} + +const FetchLeaderboard = ` + query FetchLeaderboard($contractAddress: String) @cached { + token: mb_views_nft_tokens( + where: { nft_contract_id: { _eq: $contractAddress } } + ) { + ownerId: owner + } + } +`; + +export const useLeaderBoardData = () => { + const queryObj = { + queryName: "q_FetchLeaderboard", + query: FetchLeaderboard, + variables: { contractAddress: constants.tokenContractAddress }, + queryOpts: { staleTime: Infinity }, + }; + + const { data, isLoading: loading } = useGraphQlQuery(queryObj); + + const texts = { + prizes: { + one: process.env.NEXT_PUBLIC_TEXT_PRIZE_1ST_VAL || MINSTA_TEXTS.prizes.one, + two: process.env.NEXT_PUBLIC_TEXT_PRIZE_2ND_VAL || MINSTA_TEXTS.prizes.two, + three: process.env.NEXT_PUBLIC_TEXT_PRIZE_3RD_VAL || MINSTA_TEXTS.prizes.three, + title_one: process.env.NEXT_PUBLIC_TEXT_PRIZE_1ST_TITLE || MINSTA_TEXTS.prizes.title_one, + title_two: process.env.NEXT_PUBLIC_TEXT_PRIZE_2ND_TITLE || MINSTA_TEXTS.prizes.title_two, + title_three: process.env.NEXT_PUBLIC_TEXT_PRIZE_3RD_TITLE || MINSTA_TEXTS.prizes.title_three, + }, + }; + + const { activeAccountId } = useMbWallet(); + + const { openModal } = useApp(); + + const leaderboard = useMemo(() => { + if (loading || !data?.token) return []; + + const accounts = data.token; + + const leaderboardResult = accounts?.reduce( + (acc: Record, token: any) => { + const { ownerId } = token; + + const notExist = isUndefined(acc[ownerId]) || isNaN(acc[ownerId]); + + if (notExist) { + acc[ownerId] = 1; + } else { + acc[ownerId] = acc[ownerId] + 1; + } + + return acc; + }, + {} + ); + + const resultArray = Object.keys(leaderboardResult || {}) + .map((key) => { + return { + count: leaderboardResult[key], + account: key, + }; + }) + .sort((a, b) => { + return b.count - a.count; + }); + + return resultArray; + }, [data, loading]); + + return { texts, leaderboard, openModal, activeAccountId }; +}; diff --git a/minsta/src/providers/app.tsx b/minsta/src/providers/app.tsx new file mode 100644 index 00000000..c71964da --- /dev/null +++ b/minsta/src/providers/app.tsx @@ -0,0 +1,106 @@ +import useMintImage from "@/utils/useMint"; +import { Heebo } from "next/font/google"; +import React, { createContext, useContext, useState } from "react"; +import "../style/global.css"; + +const heebo = Heebo({ subsets: ["latin"] }); + +export const AppContext = createContext<{ + cameraRef: React.MutableRefObject | undefined; + setCameraRef: (ref: React.MutableRefObject | undefined) => void; + takePicture: () => void; + currentPhoto: boolean; + openModal: (modalType: "default" | "rewards") => void; + closeModal: () => void; + isMainModalOpen: boolean; + isRewardsModalOpen: boolean; + mintImage: (photo: string) => void; + isLoading: boolean; +}>({ + cameraRef: undefined, + setCameraRef: (ref: React.MutableRefObject | undefined) => null, + takePicture: () => null, + currentPhoto: false, + openModal: (modalType: "default" | "rewards") => null, + closeModal: () => null, + isMainModalOpen: false, + isRewardsModalOpen: false, + mintImage: (photo: string) => null, + isLoading: false, +}); + +interface IAppConsumer { + cameraRef: string | undefined; + setCameraRef: (ref: React.MutableRefObject | undefined) => void; + takePicture: () => void; + currentPhoto: string | undefined; + openModal: (modalType: "default" | "rewards") => void; + closeModal: () => void; + isMainModalOpen: boolean; + isRewardsModalOpen: boolean; + mintImage: (photo: string) => void; + isLoading: false; +} + +export const AppProvider = ({ children }: { children: React.ReactNode }) => { + const [cameraRef, _setCameraRef] = useState< + React.MutableRefObject | undefined + >(undefined); + const [currentPhoto, setCurrentPhoto] = useState(false); + + const [isMainModalOpen, setMainModalOpen] = useState(false); + const [isRewardsModalOpen, setRewardsModalOpen] = useState(false); + + const { mintImage, loading, error } = useMintImage(); + + const handleOpenModal = (modalType: string) => { + if (modalType === "default") { + setMainModalOpen(true); + } else if (modalType === "rewards") { + setRewardsModalOpen(true); + } + }; + + const handleCloseModal = () => { + setMainModalOpen(false); + setRewardsModalOpen(false); + }; + + const setCameraRef = (ref: React.MutableRefObject | undefined) => { + _setCameraRef(ref); + }; + + const takePicture = () => { + setCurrentPhoto(true); + }; + + return ( + <> + {" "} + + + {children} + + + ); +}; + +// @ts-ignore +export const useApp = () => useContext(AppContext); diff --git a/minsta/src/providers/data.tsx b/minsta/src/providers/data.tsx new file mode 100644 index 00000000..8bf2d300 --- /dev/null +++ b/minsta/src/providers/data.tsx @@ -0,0 +1,49 @@ +import { + QueryCache, + QueryClient, + QueryClientProvider, +} from "@tanstack/react-query"; +import { toast } from "react-hot-toast"; + +import { useIsClient } from 'usehooks-ts' + +import { Alert } from "../components/Alert"; + +export function extractErrorMessage(error: Error): string { + if (error instanceof Error) { + const match = error.message.match(/'([^']+)'/); + + if (match && match[1]) { + return match.input as string; + } + } + + return "An error occurred"; +} + +export const queryClient = new QueryClient({ + defaultOptions: { + queries: { + staleTime: 1000, + }, + }, + queryCache: new QueryCache({ + onError: (error) => { + const errMsg = extractErrorMessage(error as Error); + toast.error(`src/providers/data.tsx \n \n ${errMsg}`, { duration: 40000, position: "bottom-left", id:"query" }); + }, + }), +}); + +const DataProvider = ({ children }: { children: React.ReactNode }) => { + const isClient = useIsClient() + + return ( + + {children} + {isClient && } + + ); +}; + +export default DataProvider; diff --git a/minsta/src/providers/providers.tsx b/minsta/src/providers/providers.tsx new file mode 100644 index 00000000..fde2dc32 --- /dev/null +++ b/minsta/src/providers/providers.tsx @@ -0,0 +1,37 @@ +import { constants } from "@/constants"; +import DataProvider from "./data"; +import { AppProvider } from "./app"; + +import { MintbaseWalletContextProvider } from "@mintbase-js/react"; +import { ReplicateProvider } from "./replicate"; + +export const isDev = process.env.NEXT_PUBLIC_ENV === "dev"; + +export const getCallbackUrl = () => { + let callbackUrl = ""; + + if (typeof window !== "undefined") { + callbackUrl = window?.location.origin; + } + + return callbackUrl; +}; + +const Providers = ({ children }: { children: React.ReactNode }) => { + return ( + + + + {children} + + + + ); +}; + +export default Providers; diff --git a/minsta/src/providers/replicate.tsx b/minsta/src/providers/replicate.tsx new file mode 100644 index 00000000..e443181a --- /dev/null +++ b/minsta/src/providers/replicate.tsx @@ -0,0 +1,108 @@ +"use client"; +import React, { createContext, useContext, ReactNode, useState } from "react"; + +interface RequestProps { + input: any; + version: string; +} + +interface ReplicateProps { + id: string; + inputs: any; + output: any; + status: any; +} + +interface ReplicateContextProps { + requests: Record | null; + addRequest: (input: any, version: string) => Promise; +} + +const ReplicateContext = createContext( + undefined +); + +interface ReplicateProviderProps { + children: ReactNode; +} + +export const ReplicateProvider: React.FC = ({ + children, +}) => { + const [requests, setRequests] = useState | null>(null); + + const addRequest = async (input: any, version: string) => { + const prediction = await runPrediction({ input, version }, 2000); + return prediction; + }; + + const runPrediction = async ( + request: RequestProps, + timeBetweenRequests?: number + ) => { + try { + const response = await fetch("/api/replicate", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + version: request.version, + input: request.input, + }), + }); + let prediction = await response.json(); + if (response.status !== 201) { + throw new Error("Failed to start prediction"); + } + + setRequests((prevRequests) => ({ + ...prevRequests, + [prediction.id]: prediction, + })); + + while ( + prediction.status !== "succeeded" && + prediction.status !== "failed" + ) { + await sleep(timeBetweenRequests || 2000); + const response = await fetch("/api/replicate/" + prediction.id, { + cache: "no-store", + }); + prediction = await response.json(); + if (response.status !== 200) { + throw new Error("Failed to get prediction status"); + } + } + + setRequests((prevRequests) => ({ + ...prevRequests, + [prediction.id]: prediction, + })); + + return prediction; + } catch (error) { + console.error("Prediction Error:", error); + throw error; // Re-throw the error if you want calling function to know + } + }; + + return ( + + {children} + + ); +}; + +export const useReplicate = () => { + const context = useContext(ReplicateContext); + if (context === undefined) { + throw new Error("useReplicate must be used within a ReplicateProvider"); + } + return context; +}; + +const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms)); diff --git a/minsta/src/server/replicate.ts b/minsta/src/server/replicate.ts new file mode 100644 index 00000000..c15be6d1 --- /dev/null +++ b/minsta/src/server/replicate.ts @@ -0,0 +1,81 @@ +import { NextResponse } from "next/server"; + +const replicate = () => { + return { + handlers: { + GET: async (request: Request, data: any) => { + const { params } = data; + const { id } = params; + + if (!id) { + return NextResponse.json( + { error: "id is not defined" }, + { status: 500 } + ); + } + + const response = await fetch( + "https://api.replicate.com/v1/predictions/" + id, + { + headers: { + Authorization: `Token ${process.env.REPLICATE_API_TOKEN}`, + "Content-Type": "application/json", + }, + cache: "no-store", + } + ); + + if (response.status !== 200 && response.status !== 201) { + let error = await response.json(); + console.log(error); + + return NextResponse.json({ error: error.detail }, { status: 500 }); + } + + try { + const prediction = await response.json(); + return NextResponse.json(prediction, { status: 200 }); + } catch (error) { + console.error(error); + + return NextResponse.json({ error: error }, { status: 500 }); + } + }, + POST: async (request: Request) => { + const body = await request.json(); + + const { version, input } = body; + + const response = await fetch( + "https://api.replicate.com/v1/predictions", + { + method: "POST", + headers: { + Authorization: `Token ${process.env.REPLICATE_API_TOKEN}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + version: version, + input: input, + }), + } + ); + + if (response.status !== 201) { + let error = await response.json(); + return NextResponse.json({ error: error.detail }, { status: 500 }); + } + + try { + const prediction = await response.json(); + return NextResponse.json(prediction, { status: 201 }); + } catch (error) { + console.error("Error converting image to blob:", error); + return NextResponse.json({ error: error }, { status: 500 }); + } + }, + }, + }; +}; + +export const { handlers } = replicate(); diff --git a/minsta/src/style/global.css b/minsta/src/style/global.css new file mode 100644 index 00000000..eb8cebf3 --- /dev/null +++ b/minsta/src/style/global.css @@ -0,0 +1,68 @@ + + + +.nws-modal-wrapper .nws-modal { + height: auto !important; +} + +.nws-modal-wrapper .nws-modal .modal-right { + display: none !important; +} + +.nws-modal-wrapper .nws-modal .modal-left { + width: 100%; + border-right: 1px solid + var(--wallet-selector-sidebar-border-color, var(--sidebar-border-color)); + padding: 32px 24px; + height: 100%; + overflow: auto; + text-align: center; +} +.nws-modal-wrapper .nws-modal { + height: 215px; +} +.wallet-options-wrapper { + width: 100%; + display: flex; + justify-items: center; + align-items: center; + justify-content: center; +} +.nws-modal-wrapper .nws-modal > .modal-left > div:nth-child(2) { + display: flex; + justify-items: center; + text-align: center; + width: 100%; +} + +.nws-modal-wrapper + .modal-left + .wallet-options-wrapper + .options-list-section + .options-list-section-header { + display: none; +} + + + +:root { + --primary: #F3F4F8; + --secondary: #000; + --mainBg: #fdfaa7; + --gradOne: #4472ad; + --gradTwo: #009dea; + --cardOne: #E8EAF0; + --cardTwo: #049BE8; + --linkColor: #4f58a3; + --icon: #4B9CE3; + --camera: #FFFFFF; + --modalText: #000000; + --leaderboardText: #000000; + --headerText: #000000; + --mainText: #000000; + --freeUseText: #0A7D6C; + --bgFreeUse: #0A7D6C1A; + --primaryBtnText: #FFFFFF; + --secondaryBtnText: #000000; + --lightBlue: #50b0d9; + } \ No newline at end of file diff --git a/minsta/src/utils/base64ToFile.ts b/minsta/src/utils/base64ToFile.ts new file mode 100644 index 00000000..7ffc4939 --- /dev/null +++ b/minsta/src/utils/base64ToFile.ts @@ -0,0 +1,26 @@ +export const convertBase64ToFile = ( + base64Data: string, + contentType: string = "image/jpeg", + filename: string = "image.jpg" +): File => { + // Convert the Base64 string to a Blob + const byteCharacters = atob(base64Data.split(",")[1]); + const byteArrays = []; + + for (let offset = 0; offset < byteCharacters.length; offset += 512) { + const slice = byteCharacters.slice(offset, offset + 512); + + const byteNumbers = new Array(slice.length); + for (let i = 0; i < slice.length; i++) { + byteNumbers[i] = slice.charCodeAt(i); + } + + const byteArray = new Uint8Array(byteNumbers); + byteArrays.push(byteArray); + } + + const blob = new Blob(byteArrays, { type: contentType }); + + // Convert the Blob to a File object + return new File([blob], filename, { type: contentType }); +}; diff --git a/minsta/src/utils/cachedImage.ts b/minsta/src/utils/cachedImage.ts new file mode 100644 index 00000000..19e769ee --- /dev/null +++ b/minsta/src/utils/cachedImage.ts @@ -0,0 +1,24 @@ +export const getCachedImage = ( + image: string, +): string | null => { + let url: string | null = null + const checkCache = + 'https://image-cache-service-z3w7d7dnea-ew.a.run.app/media?url=' + + + // if image is passed as null, just return null + if (!image) { + return null + } + + if (!checkCache) { + console.error( + 'NEXT_PUBLIC_IMAGE_CACHE_MEDIA_URL and/or NEXT_PUBLIC_IMAGE_CACHE_THUMBNAIL_URL are not defined in process.env' + ) + return image + } + + url = `${checkCache}${image}` + + return url +} \ No newline at end of file diff --git a/minsta/src/utils/generateRandomId.ts b/minsta/src/utils/generateRandomId.ts new file mode 100644 index 00000000..b58ffa81 --- /dev/null +++ b/minsta/src/utils/generateRandomId.ts @@ -0,0 +1,10 @@ +export const generateRandomId = (length: number) => { + let result = ""; + const characters = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + const charactersLength = characters.length; + for (var i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; +}; diff --git a/minsta/src/utils/imageUrl.ts b/minsta/src/utils/imageUrl.ts new file mode 100644 index 00000000..49156151 --- /dev/null +++ b/minsta/src/utils/imageUrl.ts @@ -0,0 +1,7 @@ +export const getImageUrl = (imageUrl: string) => { + if (!imageUrl) return ""; + + return imageUrl.includes("https://arweave.net") + ? imageUrl + : `https://arweave.net/${imageUrl}`; +}; diff --git a/minsta/src/utils/useMint.tsx b/minsta/src/utils/useMint.tsx new file mode 100644 index 00000000..12cad747 --- /dev/null +++ b/minsta/src/utils/useMint.tsx @@ -0,0 +1,189 @@ +import { useMbWallet } from "@mintbase-js/react"; +import { uploadReference } from "@mintbase-js/storage"; +import { useState } from "react"; +import { convertBase64ToFile } from "./base64ToFile"; +import { generateRandomId } from "./generateRandomId"; +import { useReplicate } from "@/providers/replicate"; +import { constants } from "@/constants"; + +interface ReferenceObject { + title: string; + description: string; + media: File; +} + +const useMintImage = () => { + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + const { selector, activeAccountId } = useMbWallet(); + const { addRequest } = useReplicate(); + + const getWallet = async () => { + try { + return await selector.wallet(); + } catch (error) { + console.error("Failed to retrieve the wallet:", error); + setLoading(false); + throw new Error("Failed to retrieve the wallet"); + } + }; + + const getTitleAndDescription = async (photo: string) => { + try { + const requestPayload = { + image: photo, + prompt: `Describe this image, be direct and include important details. The title should be succinct and 5 words long. The description can be longer than 15 words and more descriptive. + + Respond in JSON {"title": "", "description": "<description>"}`, + }; + const requestHash = + "2facb4a474a0462c15041b78b1ad70952ea46b5ec6ad29583c0b29dbd4249591"; + const response = await addRequest(requestPayload, requestHash); + + return JSON.parse(response.output.join("")); + } catch (error) { + console.error("Failed to get title and description:", error); + return { + title: generateRandomId(10), + description: generateRandomId(10), + }; + } + }; + + const uploadReferenceObject = async (refObject: ReferenceObject) => { + try { + return await uploadReference(refObject); + } catch (error) { + console.error("Failed to upload reference:", error); + setLoading(false); + throw new Error("Failed to upload reference"); + } + }; + + const performTransaction = async ( + wallet: any, + metadata: any, + ) => { + if (!wallet) { + throw new Error("Wallet is not defined."); + } + + try { + return await wallet.signAndSendTransaction({ + signerId: activeAccountId, + receiverId: constants.proxyContractAddress, + actions: [ + { + type: "FunctionCall", + params: { + methodName: "mint", + args: { + metadata: JSON.stringify(metadata), + nft_contract_id: constants.tokenContractAddress, + }, + gas: "200000000000000", + deposit: "10000000000000000000000", + }, + }, + ], + }); + } catch (error) { + console.error("Failed to sign and send transaction:", error); + throw new Error("Failed to sign and send transaction"); + } + }; + + const reduceImageSize = ( + base64: string, + maxSizeMB: number + ): Promise<string> => { + return new Promise((resolve, reject) => { + // Create an off-screen image element to load the base64 image + const img = new Image(); + img.src = base64; + + // Define the onload handler + img.onload = () => { + // Get original dimensions + const width = img.width; + const height = img.height; + + // Calculate the size of the base64 string in bytes + const sizeInBytes = + base64.length * (3 / 4) - + (base64.endsWith("==") ? 2 : base64.endsWith("=") ? 1 : 0); + const maxSizeBytes = maxSizeMB * 1024 * 1024; + + // If the image size is under the limit, resolve with the original base64 + if (sizeInBytes <= maxSizeBytes) { + resolve(base64); + return; + } + + // Calculate the scaling factor + const scalingFactor = Math.sqrt(maxSizeBytes / sizeInBytes); + const newWidth = Math.floor(width * scalingFactor); + const newHeight = Math.floor(height * scalingFactor); + + // Create a canvas with the new dimensions + const canvas = document.createElement("canvas"); + canvas.width = newWidth; + canvas.height = newHeight; + + const ctx = canvas.getContext("2d"); + if (!ctx) { + reject(new Error("Unable to get canvas context")); + return; + } + + // Draw the scaled image on the canvas + ctx.drawImage(img, 0, 0, newWidth, newHeight); + + // Convert the canvas to a base64 string + const resizedBase64 = canvas.toDataURL(); + + // Resolve with the resized base64 string + resolve(resizedBase64); + }; + + // Define the onerror handler + img.onerror = (error) => { + reject(error); + }; + }); + }; + + const mintImage = async (photo: string) => { + if (!activeAccountId) { + setError("Active account ID is not set."); + return; + } + + setLoading(true); + + try { + const wallet = await getWallet(); + const photoFile = convertBase64ToFile(photo); + const replicatePhoto = await reduceImageSize(photo, 10); //10MB limit replicate + const titleAndDescription = await getTitleAndDescription(replicatePhoto); + const refObject = { + title: titleAndDescription.title, + description: titleAndDescription.description, + media: photoFile, + }; + const uploadedData = await uploadReferenceObject(refObject); + const metadata = { reference: uploadedData?.id }; + await performTransaction(wallet, metadata); + } catch (error: any) { + setError( + error?.message || "An error occurred during the minting process." + ); + } finally { + setLoading(false); + } + }; + + return { mintImage, loading, error }; +}; + +export default useMintImage; diff --git a/minsta/src/utils/utils.ts b/minsta/src/utils/utils.ts new file mode 100644 index 00000000..ef6498d9 --- /dev/null +++ b/minsta/src/utils/utils.ts @@ -0,0 +1,67 @@ +import { mbjs, RPC_ENDPOINTS, NEAR_RPC_ENDPOINTS } from '@mintbase-js/sdk'; +import fetch from 'cross-fetch'; + +mbjs.config({ network: "testnet" }); + +export type RPC_OPTIONS = 'lava' | 'near' | 'beta' + + +export const requestFromNearRpc = async ( + body: Record<string, unknown>, + network?: string, + rpc?: RPC_OPTIONS, +): Promise<{ result: Record<string, unknown>, error: unknown } | undefined> => { + + //@ts-ignore + const fetchUrl = mbjs.keys.nearRpcUrl || RPC_ENDPOINTS[mbjs.keys.rpc][mbjs.keys.network] || NEAR_RPC_ENDPOINTS[mbjs.keys.network]; + //@ts-ignore + const rpcAddress = network && rpc ? RPC_ENDPOINTS[rpc][network] : fetchUrl; + //console.log(rpcAddress) + + const res = await fetch(rpcAddress, { + method: 'POST', + body: JSON.stringify(body), + headers: { 'Content-type': 'application/json' }, + }); + + return res.json(); +}; + +export const callViewMethod = async <T>({ + contractId, + method, + args, + network, + rpc, +}: { + contractId: string; + method: string; + args?: Record<string, any>; + network?: string; + rpc?: RPC_OPTIONS; +}): Promise<T> => { + const args_base64 = args + ? Buffer.from(JSON.stringify(args), 'utf-8').toString('base64') + : ''; + + const res = await requestFromNearRpc({ + jsonrpc: '2.0', + id: 'dontcare', + method: 'query', + params: { + request_type: 'call_function', + finality: 'final', + account_id: contractId, + method_name: method, + args_base64, + }, + }, network, rpc); + + //console.log(res) + if (res?.error) { + throw res.error; + } + // @ts-ignore + const parsed = JSON.parse(Buffer.from(res?.result?.result).toString()); + return parsed as T; +}; \ No newline at end of file diff --git a/minsta/tailwind.config.ts b/minsta/tailwind.config.ts new file mode 100644 index 00000000..bef776ac --- /dev/null +++ b/minsta/tailwind.config.ts @@ -0,0 +1,44 @@ +import type { Config } from "tailwindcss"; + +const config: Config = { + content: [ + "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", + "./src/components/**/*.{js,ts,jsx,tsx,mdx}", + "./src/app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + backgroundImage: { + "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", + "gradient-conic": + "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", + }, + colors: { + primary: "red", + secondary: "var(--secondary)", + mainBg: "var(--mainBg)", + gradOne: "var(--gradOne)", + gradTwo: "var(--gradTwo)", + cardOne: "var(--cardOne)", + cardTwo: "var(--cardTwo)", + linkColor: "var(--linkColor)", + icon: "var(--icon)", + camera: "var(--camera)", + modalText: "var(--modalText)", + leaderboardText: "var(--leaderboardText)", + headerText: "var(--headerText)", + mainText: "var(--mainText)", + freeUseText: "var(--freeUseText)", + bgFreeUse: "var(--bgFreeUse)", + primaryBtnText: "var(--primaryBtnText)", + secondaryBtnText: "var(--secondaryBtnText)", + lightBlue: "var(--lightBlue)", + }, + gradientColorStopPositions: { + 33: "33%", + }, + }, + }, + plugins: [], +}; +export default config; diff --git a/minsta/tsconfig.json b/minsta/tsconfig.json new file mode 100644 index 00000000..eb0b41d9 --- /dev/null +++ b/minsta/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +}